Computer Architecture and Organization

Discussion in 'Computing and Networks' started by Josh Samman, May 23, 2013.

  1. Josh Samman

    Thread Starter New Member

    Mar 29, 2013
    11
    0
    How can an instruction be larger than the Data Bus regarding that the instruction goes through it all the way to MDR (Memory Data Register) and then to the IR (Instruction Register)? e.g Data Bus = 32 bits / Instruction length = 40 bits. Is that possible? How so?

    Another issue that confuses me is: If the instruction passes through the Data Bus, why i can't determine the data bus size by knowing the length of the instruction? (Assuming that the data bus it's a physical structure and even unused bits/wires of an instruction will always stay there)

    Hehe, John von Neumann consfused me a little bit by putting instructions and data all together.

    Thank you all. :)
     
  2. LDC3

    Active Member

    Apr 27, 2013
    920
    160
    The same way an 8088 (or is it the 8086) has a 16 bit instruction with an 8 bit bus. It reads 2 (or more bytes) of information. If it is an instruction, it must read the number of bytes needed to make the instruction. If it is data, then the instruction has the number of bytes to access.
     
  3. Josh Samman

    Thread Starter New Member

    Mar 29, 2013
    11
    0
    Oh, so the instruction is brought to the IR in 2 steps?

    For example an 40-bit sized instruction is carried through a 32-bit sized data bus in two steps:

    - First half: 4 bytes (All bits in use);
    - Second half: 4 bytes (Only one byte in use, 3 idle).

    Have i gathered right?

    Oouh! If that's right, then i can't tell the length of the data bus based on the size of data or instruction, because doesn't matter how large they are! Carrying will happen in as many steps as it needs to take all the information from the memory to the IR, ALU or any of the GPRs! :D

    I'd like to know if i understood all that right, please correct me if i'm wrong.

    Thank you!
     
  4. LDC3

    Active Member

    Apr 27, 2013
    920
    160
    In essence, yes. Actually the 8088 is a poor CPU to use since it only had an 8 bit bus. The 80486 CPU has a 20 (or is it 24) bit instruction (3 bytes) and a 16 bit bus. The instruction could read one byte (short int), 2 bytes (int), or 4 bytes (float).
     
    Josh Samman likes this.
  5. John P

    AAC Fanatic!

    Oct 14, 2008
    1,634
    224
    8-bit buses were the norm 20 years or so ago, when memory was expensive. If a processor had a wider instruction word than 8 bits, it had to do multiple reads to get the data. Sure, it was slower that way, but by today's standards computers were very expensive, and expectations weren't as high.
     
  6. business_kid

    New Member

    Feb 5, 2013
    22
    1
    The 8088, like the 68008, was a cpu for when hardware was expensive.
    As for instructions being longer than the bus width, what about the (8 bit) z80? It had all the 8080 instructions, and some extra 'special' instructions, giving more than 256 instructions. The special ones were decoded as follows
    Byte 1: The next instruction is going to be a special instruction.
    Byte 2 : The special instruction
    Byte 3: Operand
    Byte 4: As many of these were 16 bit instructions on paired registers, the rest of the operand.

    I cut my teeth on assembler on the z80 on the long forgotten Sinclair Spectrum :-/.
     
  7. LDC3

    Active Member

    Apr 27, 2013
    920
    160
    The 6805 (Apple II) had a 16 bit internal address bus and an 8 bit internal data bus. I think it multiplex the address and data on an 8 bit bus so the CPU used a CAS and RAS strobe along with a address/data strobe.
     
Loading...