Word- or byte-addressable? Correct terminology
Seemingly, a byte has established itself to be 8bit (is that correct?). RAM and NOR-flash can be normally accessed on a quite granular level, but it is up to the system architecture to determine if the smallest addressable unit is 8bit, 16bit or any other power of two bit number. Would the correct terminology be to call this word-addressable? Or asked differently, is a word the size of smallest addressable unit? Or is there some other term to describe this?
Are mabye nibble, byte, word, double word all variable in bit-length and only defined by the architecture? And it is therefore only coincidence that a byte is always 8 bit? E.g. someone could design some new CPU and memory type and define her byte to be 16bit?
Main question: What is the precise term for the smallest addressable memory block?
Side question: What is the antonym to this word I'm looking for (e.g. used in NAND-flash)? Page-addressable, block-addressable? Are both correct or is one inprecise?
Asked By : Franz Kafka
Best Answer from StackOverflow
Question Source : http://cs.stackexchange.com/questions/19848
Answered By : AProgrammer
From a computer architecture point of view, and with the caveat that nomenclature sometimes varies, especially when there is a family of related architectures which has evolved for a long time, or when the marketing department decides to that the usual terms have to used in another way (either to put the product in better light by using a bigger number, or to have a simple number to differentiate more or less related products).
A word has the size normally used for integer operations (often expressed as size of the integer or the general purpose registers, i.e. not address or data, internal or external buses, not address registers, not index registers). A common issue is that when an architecture is an evolution of a previous one, one often keep the term word for the initial size and one use "double word" or "quad word" for what is a word if you look at the architecture in isolation. Historically words have not always been a power of two (I know of sizes: 12, 16, 18, 24, 32, 36, 60, 64 and I don't think my knowledge is exhaustive).
Word addressable means that the memory is considered as arrays of words, and thus no smaller unit has an individual addresses.
A byte has various definitions. The term was introduced to mean the unit used in character encoding at a time where multi-byte encoding didn't exist. It is often used to means the smallest addressable unit for machine which are not word addressable (well as long at it is not one bit). I don't think those two definitions have ever given a different size. (nor a size different from 6 or 8 bits). For word addressable machine it often means some unit smaller than a word that the machine has some support for (for instance the PDP-10 -- a 36 bits word addressable computer -- had byte instructions which could manipulate any size from 1 to 35 or 36 bits). Nowadays it is also often 8 bits. Often several of those definitions are practically equivalent.
Byte addressable characterizes machines where the memory is considered as arrays of bytes in one of the above meaning.
AFAIK nibble has only been used for 4 bits quantities.
E.g. someone could design some new CPU and memory type and define her byte to be 16bit?
Yes, but I'm not sure if it would make much sense to do so if one keeps the CA usage to use byte for something smaller than the word. Having a word addressable 16-bit processor with no support for something smaller than a word may be a good choice for a special purpose processor.
Secondarily, what is the antonym to this word I'm looking for? Page-addressable, block-addressable?
Bit-addressable, byte-addressable and word-addressable are the only terms I've seen use. It doesn't make much sense to address only units bigger than the word at the architectural level. Word-addressable is nowadays only used for special purpose processors such as DSP. I don't think bit-addressability has been used for anything else than special purpose one excepted the IBM Stretch.
About your new main question
What is the precise term for the smallest addressable memory block?
I know of none used in Computer Architecture (byte has been used for something smaller in word adressable machines), but is the definition used by C for byte.
Post a Comment