News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

32 bit address bus

Started by slacker, April 01, 2010, 09:40:06 AM

Previous topic - Next topic

slacker

Hi, I've just started learning asm and want to clarify something. In my book it says that a system with 32 bit address bus can address up to 4GB (2^32) of memory space. Does this mean that each memory location can only hold 1 byte (8 bits)?


PS please excuse my English

dedndave

welcome to the forum   :U
yes - an address refers to 8 bits of data, even though you might conclude 32 bit width
you can access 4 bytes at a time, however - each byte still has a unique address

clive

8-bits is the smallest data unit addressable by the x86 architecture, this is not universally true of all processors, for example PIC microprocessors have 12 or 14-bit wide instructions stored at a unique address.

-Clive
It could be a random act of randomness. Those happen a lot as well.

vanjast

The hardware bus is actually different and may be 128 (or 256/more) bits wide, on the motherboard/cache/cpu - The job of loading the Byte/Word/Dword/(anything larger) into the cpu registers is left to the memory management chips/hardware on the motherboard/cpu - this setup/configuration code is in the 'bios'.
This why proper code alignment speeds up your software.

.. and as mentioned by the others.
:8)

hutch--

Slacker,

Properly an ADDRESS is just a location in memory, it is not connected to any particular size. Convention on x86 har4dware is to specify the ADDRESS in BYTE sized units so when you have an address 12345678 it tells you how far the LOCATION is from another known location.

Now AT that ADDRESS you can have any data size ypou like from single bytes, words, dwords and the 64 and 128 bit data types as well as arrays of single bytes or arrats of larger sizes.

The meaningful distinction for you is between WHERE something is in memory and WHAT is at the ADDRESS.
Download site for MASM32      New MASM Forum
https://masm32.com          https://masm32.com/board/index.php

dedndave

i think what he is refering to is something like this

the 4004 (a 4 bit processor) addressed 4 bits of data at each address
the 8008 (an 8 bit processor) addressed 8 bits of data at each address
it might follow that a 32 bit processor addresses 32 bits of data at each address
Intel made the choice not to do so - pre-existing files are in "bytes" - that may have affected their choice
the stack and string instructions would be broken if you tried to wire it up that way   :P

slacker

dedndave, that's exactly what I wanted to know. Thank you all so much, really appreciate it.  :U