Computer Architecture and Organization

Thread Starter

Josh Samman

Joined Mar 29, 2013
11
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. :)
 

LDC3

Joined Apr 27, 2013
924
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.
 

Thread Starter

Josh Samman

Joined Mar 29, 2013
11
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.
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?

If it is data, then the instruction has the number of bytes to access.
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!
 

LDC3

Joined Apr 27, 2013
924
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).
 

John P

Joined Oct 14, 2008
2,026
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.
 

business_kid

Joined Feb 5, 2013
22
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 :-/.
 

LDC3

Joined Apr 27, 2013
924
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.
 
Top