Simplified View of Memory

Simplified View of Memory

Simplified View of Memory A Quick Look The Instruction Example aa == bb ++ c;c; ● What are a, b, and c? The Instruction Example aa == bb ++ c;c; ● What are a, b, and c? ● They identify unique locations in Memory – Addresses Simplified View of Memory ● Memory stores bits Simplified View of Memory ● Memory stores bits ● What operations can a memory perform? – Read and Write Operations on Memory Address Data Operations on Memory Read Operation Address Data Operations on Memory Read Operation Address Data Address Data Operations on Memory Read Operation Address Data Address Data Write Operation Memory Capacities ● 1 KB of memory ● How many bytes in ● KB = ● MB = ● GB = ● PB = ● EB = Memory Capacities ● 1 KB of memory ● How many bytes in ● KB = 1024 = 210 Bytes ● MB = 1024 KB= 220 Bytes ● GB = 1024 MB = 230 Bytes ● TerraByte = 1024 GB = 240 Bytes ● PetaByte = 1024 TB = 250 Bytes ● ExaByte = 1024 PB = 260 Bytes ● ZetaByte = 1024 EB = 270 Bytes ● YotaByte = 1024 ZB = 280 Bytes Memory Address Size ● 1 KB = 1024 Bytes = 210 Bytes Memory Address Size ● 1 KB = 1024 Bytes = 210 Bytes ● Each byte has an address Memory Address Size ● 1 KB = 1024 Bytes = 210 Bytes ● Each byte has an address ● First Address = 0; Last address = 1023 Memory Address Size ● 1 KB = 1024 Bytes = 210 Bytes ● Each byte has an address ● First Address = 0; Last address = 1023 ● No. of bits in the address – log2 Size – log2 1024 = 10 bits Simplified 1KB Memory ● 1 KB = 1024 Bytes = 210 Bytes ● 10 bit address 1KB Memory Simplified 1KB Memory ● 1 KB = 1024 Bytes = 210 Bytes ● 10 bit address Byte No. 1111111111 1KB Memory Byte No. 0000000000 Simplified 1KB Memory ● 1 KB = 1024 Bytes = 210 Bytes ● 10 bit address Byte No. 0x3FF 1KB Memory Byte No. 0x000 Simplified Memory ● Recall: Instructions and Data reside in the memory 0x3FF 0x000 Simplified Memory ● Recall: Instructions and Data reside in the memory Simplified Memory ● Recall: Instructions and Data reside in the memory 0x3FF Instructions DATADATA Data INSTRUCTIONSINSTRUCTIONS 0x000 Simplified Program Memory ● Instructions and Data reside in the memory ● Assume each of a, b, c are 4 Bytes 0x3FF DATADATA a b c INSTRUCTIONSINSTRUCTIONS 0x000 Simplified Program Memory ● Instructions and Data reside in the memory ● Assume each of a, b, c are 4 Bytes 0x3FF If Instructions DATADATA and data occupy equal bytes in the memory, a b c What are the addresses of a, b, and c? INSTRUCTIONSINSTRUCTIONS 0x000 Data Memory ● Address range = 0 to 1023 Bytes = 1024 Bytes 0x3FF DATADATA 0x200 a b c 0x1FF INSTRUCTIONSINSTRUCTIONS 0x000 Data Memory ● Address range = 0 to 1023 Bytes = 1024 Bytes ● Instructions are in 512B; Data fills the rest of the 512B 0x3FF DATADATA 0x200 a b c 0x1FF INSTRUCTIONSINSTRUCTIONS 0x000 Data Memory ● Address range = 0 to 1023 Bytes = 1024 Bytes ● Instructions are in 512B; Data fills the rest of the 512B 0x3FF ● Instructions Address Range = 0 to 511 = DATADATA 0 to 111111111 = 0x000 to 0x1FF 0x200 a b c 0x1FF INSTRUCTIONSINSTRUCTIONS 0x000 Data Memory ● Address range = 0 to 1023 Bytes = 1024 Bytes ● Instructions are in 512B; Data fills the rest of the 512B 0x3FF ● Instructions Address Range = 0 to 511 = DATADATA 0 to 111111111 = 0x000 to 0x1FF 0x200 a b c ● Data Address range 0x1FF = 0x200 to 0x3FF INSTRUCTIONSINSTRUCTIONS 0x000 Data Memory ● Address of first variable = 512; second variable = 512+4; third variable = 512+8; and so on. 0x3FF DATADATA 0x200 a b c 0x1FF INSTRUCTIONSINSTRUCTIONS 0x000 Data Memory ● Address of first variable = 512; second variable = 512+4; third variable = 512+8; and so on. ● Address of first variable = 0x200; 0x3FF second variable = 0x200+4; third DATADATA variable = 0x200+8; and so on. 0x200 a b c 0x1FF ● What is the address of the 10th variable? INSTRUCTIONSINSTRUCTIONS 0x000 Data Memory ● Address of first variable = 512; second variable = 512+4; third variable = 512+8; and so on. ● Address of first variable = 0x200; 0x3FF second variable = 0x200+4; third DATADATA variable = 0x200+8; and so on. 0x200 a b c 0x1FF INSTRUCTIONSINSTRUCTIONS 0x000 Data Addresses Variable Decimal Address 1 512 0x200 + 0 2 512 + 4 = 516 0x200 + 1*4 3 512 + 8 = 520 0x200 + 2*4 ith 512 + (i-1)*4 0x200 + (i-1)*4 Data Addresses Variable Decimal Address 1 512 0x200 + 0 2 512 + 4 = 516 0x200 + 1*4 3 512 + 8 = 520 0x200 + 2*4 ith 512 + (i-1)*4 0x200 + (i-1)*4 ● The address 512 (0x200) is called the Base Address (B) Data Addresses Variable Decimal Address 1 512 0x200 + 0 2 512 + 4 = 516 0x200 + 1*4 3 512 + 8 = 520 0x200 + 2*4 ith 512 + (i-1)*4 0x200 + (i-1)*4 ● The address 512 (0x200) is called the Base Address (B) ● i is the index; i ranges from (0, ..., n-1); Total elements = n. Data Addresses Variable Decimal Address 1 512 0x200 + 0 2 512 + 4 = 516 0x200 + 1*4 3 512 + 8 = 520 0x200 + 2*4 ith 512 + (i-1)*4 0x200 + (i-1)*4 ● The address 512 (0x200) is called the Base Address (B) ● i is the index; i ranges from (0, ..., n-1); Total elements = n. ● The ith variable can be accessed at address Addressi=BaseAddress+i∗VariableSize Data Addresses Variable Decimal Address 1 512 0x200 + 0 2 512 + 4 = 516 0x200 + 1*4 3 512 + 8 = 520 0x200 + 2*4 ith 512 + (i-1)*4 0x200 + (i-1)*4 ● The address 512 (0x200) is called the Base Address (B) ● i is the index; i ranges from (0, ..., n-1); Total elements = n. ● The ith variable can be accessed at address Addressi=BaseAddress+i∗VariableSize ● Where can such a scheme be useful? Assembly Code revisited Memory expects an address Load R1, b a, b, and c have to be converted Load R2, c to their corresponding addresses! Add R3, R1, R2 Store R3, a Compiler populates and maintains a table with this info. Assembly Code revisited Memory expects an address Load R1, b a, b, and c have to be converted Load R2, c to their corresponding addresses! Add R3, R1, R2 Store R3, a Compiler populates and maintains a table with this info. ● Address calculation and maintenance is one of the jobs of the Compiler Correct Code la R4, b Load R1, b ld R1, 0(R4) Correct Code la R4, b Load R1, b ld R1, 0(R4) ● R4 contains the Address of variable ‘b’ Correct Code la R4, b Load R1, b ld R1, 0(R4) ● R4 contains the Address of variable ‘b’ ● 0(R4): Address = [R4 + 0] Correct Code la R4, b Load R1, b ld R1, 0(R4) ● Would these instructions work? – ld R1, R4 – ld R1, (R4) MIPS ISA & Assembly Language ● Simple and elegant ISA MIPS ISA & Assembly Language ● Simple and elegant ISA ● One of the first RISC ISAs CISC vs. RISC ● Instruction Sizes CISC vs. RISC ADDADD R3,R3, R1,R1, (R2)(R2) ADDADD R3,R3, R1,R1, R2R2 Simple Architecture (1980s) ● IBM 801, Berkely RISC Processor, and Stanford MIPS ● Simple load-store architecture ● Fixed-format 32-bit instructions ● Efficient pipelining ● Reduced Instruction Set Computers (RISC) John Cocke (Turing award, 1987) is the father of IBM 801. MIPS ISA & Assembly Language ● Simple and elegant ISA ● One of the first RISC ISAs ● Influenced a whole revolution in the processor industry MIPS ISA & Assembly Language ● Simple and elegant ISA ● One of the first RISC ISAs ● Influenced a whole revolution in the processor industry ● Entire ISA at the back of the textbook MIPS ISA & Assembly Language ● Simple and elegant ISA ● One of the first RISC ISAs ● Influenced a whole revolution in the processor industry ● Entire ISA at the back of the textbook ● Use the simulator SPIM (xspim, qtspim) for simulating MIPS assembly programs Accurate Code la R4, b LoadLoad R1,R1, bb la R4, b LoadLoad R2,R2, cc lala R5,R5, cc AddAdd R3,R3, R1,R1, R2R2 lala R6,R6, aa StoreStore R3,R3, aa ldld R1,R1, 0(R4)0(R4) ldld R2,R2, 0(R5)0(R5) addadd R3,R3, R1,R1, R2R2 stst R3,R3, 0(R6)0(R6) Accurate MIPS Code la $t0, b Load R1, b la $t0, b Load R2, c lala $t1,$t1, cc Add R3, R1, R2 lala $t2,$t2, aa Store R3, a ldld $t3,$t3, 0($t0)0($t0) ldld $t4,$t4, 0($t1)0($t1) addadd $t5,$t5, $t3,$t3, $t4$t4 stst $t5,$t5, 0($t2)0($t2) Instruction Memory 0x3FF DATADATA INSTRUCTIONSINSTRUCTIONS 0x000 i1i1 i2i2 i3i3 Special Registers for Instructions ● The instruction to be executed should be present inside the processor – Instruction Register Special Registers for Instructions ● The instruction to be executed should be present inside the processor – Instruction Register ● Program Counter keeps track of the next instruction to be executed The Computer System PC IR + RF MEMORY ALU Interconnect I/O Devices I/O Devices I/O Devices Datapath and Control Unit ● Datapath: Components in which instructions and data are handled in a processor – Register file, ALU, Special registers, ... Datapath and Control Unit ● Datapath: Components in which instructions and data are handled in a processor – Register file, ALU, Special registers, ... ● Control Unit: Manages these components – Ensures correct execution of the instruction Control Unit – Example Use Control Signal A + - * / == != Output B & | ^ Arithmetic and Logic Unit Computer System Control PC IR Unit + ALU RF MEMORY Processor Interconnect I/O Devices I/O Devices I/O Devices .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    59 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us