# Welcome to ECE 250 Algorithms and Data Structures

ECE 150 Fundamentals of Programming Main memory Prof. Prof. Hiren Hiren Patel, Patel, Ph.D. Ph.D. Douglas Douglas Wilhelm Wilhelm Harder, Harder, M.Math. M.Math. LEL LEL [email protected] [email protected] [email protected] [email protected] 2018 2018 by by Douglas Douglas Wilhelm Wilhelm Harder

Harder and and Hiren Hiren Patel. Main Mainmemory memory Outline In this lesson, we will: Describe main memory Define bytes and byte-addressable memory Describe how addresses are stored Describe how bytes are given addresses on various processors Look at some images of memory Main Mainmemory

memory Main memory Main memory stores data to be used by the processor It also stores instructions for programs It is volatile When you shut down your computer, memory is lost Your executing programs must load instructions and data from memory to the processor and store data back in main memory This is all done for you behind the scenes You must never-the-less understand this Main Mainmemory memory Main memory How would you organize memory? A book has pages, and each page has a unique page

number You could reference a specific word by saying: The 4th word on the 7th line of the 372nd page Alex Proimos from Sydney, Australia We need something similar, but simpler for a computer Recall we have years, months, days, hours, minutes and seconds Unix counts time by seconds relative to midnight January 1, 1970 Main Mainmemory memory Main memory Previously we described the computer only thinks in binary Main memory is nothing more than billions or trillions of 0s and 1s You could give each bit a separate address You could then ask for the 32280514913rd bit

Problem: thats a lot of addresses Instead, hardware developers decided to give every 8 bits their own address 8 bits is one byte This is called byte-addressable memory Main Mainmemory memory Byte-addressable memory In byte-addressable memory, each byte has its own unique address The address is a binary number On a 32-bit computer, the addresses are 32 bits long On a 64-bit computer, the addresses are 64 bits long A 32-bit computer can address 232 bytes: 4 GiB A 64-bit computer can address 264 bytes: 16 EiB or ~17 million TiB Not every address may correspond to an actual physical byte

Most computers today do not have 16 EiB of main memory To contrast, a hard drive is block-addressable Every 4 kilobyte block of bytes has its own address Main Mainmemory memory The byte A byte is 8 bits: All possible bytes are shown here: 00000000 00001110 00010000 00011110 00100000 00101110 00110000 00111110 01000000 01001110

01010000 01011110 01100000 01101110 01110000 01111110 10000000 10001110 10010000 10011110 10100000 10101110 10110000 10111110 11000000 11001110 11010000 11011110 11100000 11101110 11110000 11111110 00000001 00001111 00010001 00011111

00100001 00101111 00110001 00111111 01000001 01001111 01010001 01011111 01100001 01101111 01110001 01111111 10000001 10001111 10010001 10011111 10100001 10101111 10110001 10111111 11000001 11001111 11010001 11011111 11100001 11101111 11110001

11111111 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100 00001101 00010010 00010011 00010100 00010101 00010110 00010111 00011000 00011001 00011010 00011011 00011100 00011101 00100010 00100011 00100100 00100101 00100110 00100111 00101000 00101001 00101010 00101011 00101100 00101101 00110010 00110011 00110100 00110101 00110110 00110111 00111000 00111001 00111010 00111011 00111100 00111101 01000010 01000011 01000100 01000101 01000110 01000111 01001000 01001001 01001010 01001011 01001100 01001101 01010010 01010011 01010100 01010101 01010110 01010111 01011000 01011001 01011010 01011011 01011100 01011101 01100010 01100011 01100100 01100101 01100110 01100111 01101000 01101001 01101010 01101011 01101100 01101101 01110010 01110011 01110100 01110101 01110110 01110111 01111000 01111001 01111010 01111011 01111100 01111101 10000010 10000011 10000100 10000101 10000110 10000111 10001000 10001001 10001010 10001011 10001100 10001101 10010010 10010011 10010100 10010101 10010110 10010111 10011000 10011001 10011010 10011011 10011100 10011101 10100010 10100011 10100100 10100101 10100110 10100111 10101000 10101001 10101010 10101011 10101100 10101101 10110010 10110011 10110100 10110101 10110110 10110111 10111000 10111001 10111010 10111011 10111100 10111101 11000010 11000011 11000100 11000101 11000110 11000111 11001000 11001001 11001010 11001011 11001100 11001101 11010010 11010011 11010100 11010101 11010110 11010111 11011000 11011001 11011010 11011011 11011100 11011101 11100010 11100011 11100100 11100101 11100110 11100111 11101000 11101001 11101010 11101011 11101100 11101101 11110010 11110011 11110100 11110101 11110110 11110111 11111000 11111001 11111010 11111011 11111100 11111101 Main Mainmemory memory Byte-addressable memory What byte addressable means is:

You cannot read or write a single bit from main memory If you need just a single bit, you must never-the-less refer to an entry byte in memory If you want to write a single bit to main memory, you must write the entire byte in which it is contained It is very convenient therefore to use multiples of bytes Main Mainmemory memory The byte However, every byte hexadecimal digits: can 0b00000000 0b00101100 0b01000100 0b10001010 0b10110101 0b11101000 0b11111111

be represented 0x00 0x2c 0x44 0x8a 0xb5 0xe8 0xff This is a common means of examining memory by 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010

1011 1100 1101 1110 1111 two 0 1 2 3 4 5 6 7 8 9 a b c d e f Main Mainmemory

memory Addresses Today: Most processors have 64-bit addresses Many microcontrollers have 32-bit addresses Smaller microcontrollers may have 24-bit addresses Each of these are multiples of 8 bits A 64-bit address occupies 8 bytes A 32-bit address occupies 4 bytes A 24-bit address occupies 3 bytes Thus, we may represent a 64-bit address with 16 hexadecimal numbers 32-bit address with 8 hexadecimal numbers

24-bit address with 6 hexadecimal numbers or 16-bit 1 Main Mainmemory memory Addresses Thus, an address on your 64-bit desk- or lap-top computer may look like: 0x0000839d542a8b38 The address of the next byte would be 0x0000839d542a8b39 An address on a 32-bit computer might look like:

0x0e518a93 1 Main Mainmemory memory 1 Addresses If we are showing a block of bytes in memory, each byte will be listed with its address In general, the addresses are not significant What is important is what we store at those addresses If you care: these are the addresses of bytes on a 32-bit processor Main Mainmemory memory

Addresses You can always buy as much memory as the processor can address If you buy 4 GiB of memory for a 32-bit computer, every address is associated with a byte 1 Main Mainmemory memory Addresses The first address is always reserved We will never be able to use or access the byte at 0x00000000 It is at the top of memory 1 Main Mainmemory

memory Addresses On occasion, addresses will be printed without leading zeros, but you should assume they are there: On a 64-bit processor, the address 0x59243d48c is actually 0x000000059243d48c 1 Main Mainmemory memory Naming conventions Main memory is immediately available to the processor Other storage devices are referred to auxiliary memory Data from auxiliary memory must be loaded into main memory prior to being used by the computer Main and auxiliary memory may also be referred to as

Internal and external memory, respectively Primary and secondary memory, respectively 1 Main Mainmemory memory Properties Main memory is almost universally volatile In general, when you shut down a computer, main memory is erased Auxiliary memory is non-volatile Removing a power source to auxiliary memory does not erase the contents E.g., flash drives, magnetic disks, optical discs and magnetic tapes Main memory is often referred to as random access

memory (RAM) Any byte can be accessed in the same amount of time Flash drives are also RAM 1 Main Mainmemory memory Summary Following this lesson, you now Understand that memory is byte addressable Each byte has its own unique integer address Know that the byte is the smallest amount of memory that can be accessed Know that addresses tend to be multiples of bytes in length They are best described as hexadecimal numbers 1 Main Mainmemory memory

References [1] No references? 1 Main Mainmemory memory Colophon These slides were prepared using the Georgia typeface. Mathematical equations use Times New Roman, and source code is presented using Consolas. The photographs of lilacs in bloom appearing on the title slide and accenting the top of each other slide were taken at the Royal Botanical Gardens on May 27, 2018 by Douglas Wilhelm Harder. Please see https://www.rbg.ca/ for more information. 2 Main Mainmemory memory

Disclaimer These slides are provided for the ECE 150 Fundamentals of Programming course taught at the University of Waterloo. The material in it reflects the authors best judgment in light of the information available to them at the time of preparation. Any reliance on these course slides by any party for any other purpose are the responsibility of such parties. The authors accept no responsibility for damages, if any, suffered by any party as a result of decisions made or actions based on these course slides for any other purpose than that for which it was intended. 2

## Recently Viewed Presentations

• Pain, swelling, contusions, lacerations and/or abrasions at the site of injury Palpable defect Patella Fractures Radiographs AP/Lateral/Sunrise views Treatment ORIF if ext mechanism is incompetent Non-operative treatment with brace if ext mechanism remains intact Tibia Fractures Proximal Tibia Fractures (Tibial...
• Introduction- Layers of TCP/IP (1) TCP/IP is a suite of networking protocols. 4 layers Layering architecture. Link layer (data-link layer) Include device drivers to handle hardware details. Network layer (IP) Handle the movement of packets around the network. Transport layer...
• It's Yu Lan here. This is the first one in a series of videos on vector space classification. In this video, I will introduce some basic knowledge about vector space classification. ... Classification for classes that are not mutually exclusive...
• Civilizations emerge and develop on fertile river plains in Mesopotamia, Egypt, the Indus Valley, and China. ... The Roman Republic Rome's Geography • Site of Rome chosen for its fertile soil and strategic location • Located on Italian peninsula in...
• Flinders Lane cafes and restaurants . Lygon Street (Greek, Italian) Chapel Street (Japanese, Italian) China Town. Box Hill (Chinese, Vietnamese) Glen Waverley (Chinese) Springvale (Vietnamese) Brunswick (Lebanese, Italian) Cafés y Restaurantes
• Realism. Reaction to romanticism. Focus on ordinary people. Anti-materialism. Nature is a force beyond man's control. Naturalism. Similar to realism, but a darker view of the world. Universe is unpredictable. Fate is determined by chance - free will is an...
• Making a GUI Test-first 9/30/04 Testing 2 Testing a GUI Need to simulate mouse clicks, key presses, human uncertainty GUIs subject to change rapidly Potentially difficult to isolate GUI problems from logic problems TDD'ing a GUI Separate presentation layer from...
• It is understood that reading is an interactive process in which the reader also comprehends the text. Marie Clay developed Running Record to record the reader's behavior and analyze the substitutions and self-corrections made while reading. Meaning, Structure, and Visual...