Eu fiz algumas pesquisas. Um byte tem 8 bits e uma palavra é a menor unidade que pode ser endereçada na memória. O comprimento exato de uma palavra varia. O que não entendo é qual é o sentido de ter um byte? Por que não dizer 8 bits?
Eu fiz a um professor esta pergunta e ele disse que a maioria das máquinas hoje em dia são endereçáveis por byte, mas o que isso significaria uma palavra?
assembly
memory
hardware
terminology
cpu-architecture
Peter Cordes
fonte
fonte
Respostas:
Byte : hoje, um byte quase sempre tem 8 bits. No entanto, nem sempre foi esse o caso e não existe um "padrão" ou algo que o determine. Como 8 bits é um número conveniente para trabalhar, ele se tornou o padrão de fato.
Word : O tamanho natural com o qual um processador está lidando com os dados (o tamanho do registro). Os tamanhos de palavra mais comuns encontrados hoje são 8, 16, 32 e 64 bits, mas outros tamanhos são possíveis. Por exemplo, havia algumas máquinas de 36 bits ou mesmo máquinas de 12 bits .
O byte é a menor unidade endereçável para uma CPU. Se você deseja definir / limpar bits únicos, primeiro você precisa buscar o byte correspondente da memória, mexer com os bits e, em seguida, escrever o byte de volta na memória.
A palavra, em contraste, é o maior pedaço de bits com o qual um processador pode fazer processamento (como adição e subtração) de uma vez. Essa definição é um pouco confusa, pois alguns processadores podem ter tamanhos de palavras diferentes para tarefas diferentes (processamento de número inteiro vs. ponto flutuante, por exemplo). O tamanho da palavra é o que funciona com a maioria das operações.
Existem também alguns processadores que têm um tamanho de ponteiro diferente : por exemplo, o 8086 é um processador de 16 bits, o que significa que seus registradores têm largura de 16 bits. Mas seus ponteiros (endereços) têm largura de 20 bits e foram calculados combinando dois registradores de 16 bits de uma certa maneira.
fonte
word
tem 16 bits, mesmo em CPUs x86 modernas onde o tamanho do operando padrão é 32 bits (dword) e a largura do registro inteiro é 64 bits (qword). E os registros xmm têm 128 bits de largura (movdqa
move double-quad). O barramento de memória tem pelo menos 64 bits de largura (e transferências em rajadas de 64 bytes = uma linha de cache), e os caminhos da unidade de execução para o cache têm pelo menos 128 bits de largura, ou 256 ou até 512 bits de largura. Qualquer que seja o tamanho da palavra-máquina nativa do x86 moderno, não é de 16 bits, mas o x86 moderno ainda usa a terminologia do 8086.Além do ponto técnico de que um byte não é necessariamente 8 bits, as razões para ter um termo são simplesmente da natureza humana:
economia de esforço (também conhecida como preguiça) - é mais fácil dizer "byte" do que "oito bits"
tribalismo - grupos de pessoas gostam de usar jargão / uma linguagem particular para separá-los dos outros.
Ir com a corrente. Você não vai mudar mais de 50 anos de terminologia de TI acumulada e bagagem cultural reclamando disso.
FWIW - o termo correto a ser usado quando você quer dizer "8 bits independentes da arquitetura de hardware" é "octeto".
fonte
BYTE
Estou tentando responder a essa pergunta da perspectiva do C ++.
O padrão C ++ define 'byte' como “unidade endereçável de dados grande o suficiente para conter qualquer membro do conjunto de caracteres básicos do ambiente de execução”.
O que isso significa é que o byte consiste em pelo menos bits adjacentes suficientes para acomodar o conjunto de caracteres básico para a implementação. Ou seja, o número de valores possíveis deve ser igual ou superior ao número de caracteres distintos. Nos Estados Unidos, os conjuntos de caracteres básicos são geralmente os conjuntos ASCII e EBCDIC, cada um dos quais pode ser acomodado em 8 bits. Portanto, é garantido que um byte terá pelo menos 8 bits.
Em outras palavras, um byte é a quantidade de memória necessária para armazenar um único caractere.
Se você deseja verificar o 'número de bits' em sua implementação C ++, verifique o arquivo 'limits.h'. Deve ter uma entrada como abaixo.
PALAVRA
Uma palavra é definida como um número específico de bits que podem ser processados juntos (ou seja, em uma tentativa) pela máquina / sistema. Alternativamente, podemos dizer que o Word define a quantidade de dados que podem ser transferidos entre CPU e RAM em uma única operação.
Os registros de hardware em uma máquina de computador têm tamanho de palavra. O tamanho da palavra também define o maior endereço de memória possível (cada endereço de memória aponta para uma memória de tamanho de byte).
Nota - Em programas C ++, os endereços de memória apontam para um byte de memória e não para uma palavra.
fonte
Porque nem todas as máquinas têm bytes de 8 bits. Já que você marcou isso
C
, procureCHAR_BIT
emlimits.h
.fonte
Uma palavra é o tamanho dos registradores no processador. Isso significa que as instruções do processador como add, mul, etc. estão em entradas de tamanho de palavra.
Mas a maioria das arquiteturas modernas possui memória endereçável em blocos de 8 bits, portanto, é conveniente usar a palavra "byte".
fonte
Nesse contexto, palavra é a unidade que uma máquina usa para trabalhar com memória. Por exemplo, em uma máquina de 32 bits, a palavra tem 32 bits e em uma de 64 bits tem 64 bits. O tamanho da palavra determina o espaço de endereço.
Na programação (C / C ++), a palavra é tipicamente representada pelo
int_ptr
tipo, que tem o mesmo comprimento de um ponteiro, abstraindo assim esses detalhes.No entanto, algumas APIs podem confundi-lo, como a API Win32, porque tem tipos como
WORD
(16 bits) eDWORD
(32 bits). O motivo é que a API inicialmente visava máquinas de 16 bits, depois foi transferida para máquinas de 32 bits e, em seguida, para máquinas de 64 bits. Para armazenar um ponteiro, você pode usarINT_PTR
. Mais detalhes aqui e aqui .fonte
Parece que todas as respostas assumem linguagens de alto nível e principalmente C / C ++.
Mas a questão é marcada como "montagem" e em todos os montadores que conheço (para CPUs de 8 bits, 16 bits, 32 bits e 64 bits), as definições são muito mais claras:
fonte
int<X>_t
euint<X>_t
(mais mais) que devem ser usados se você quiser uma variável / parâmetro de um tamanho de bit específico..word
pode ser de 32 bits (por exemplo, para Sparc ).Embora o comprimento de uma palavra varie, em todas as máquinas modernas e até mesmo em todas as arquiteturas mais antigas com as quais estou familiarizado, o tamanho da palavra ainda é um múltiplo do tamanho do byte. Portanto, não há nenhuma desvantagem específica em usar "byte" em "8 bits" em relação ao tamanho da palavra variável.
Além disso, aqui estão alguns motivos para usar o byte (ou octeto 1 ) em "8 bits":
1 Embora eu considere um byte como sendo 8 bits para esta resposta, isso não é universalmente verdadeiro: em máquinas mais antigas, um byte pode ter um tamanho diferente (como 6 bits . Octeto sempre significa 8 bits, independentemente da máquina ( portanto, este termo é freqüentemente usado na definição de protocolos de rede.) No uso moderno, byte é predominantemente usado como sinônimo de 8 bits.
fonte
Qualquer que seja a terminologia presente nas planilhas de dados e compiladores, um 'Byte' tem oito bits. Não vamos tentar confundir enquirers e generalidades com as exceções mais obscuras, particularmente porque a palavra 'Byte' vem da expressão "By Eight". Eu trabalhei na indústria de semicondutores / eletrônicos por mais de trinta anos e nenhuma vez conhecido 'Byte' usado para expressar algo mais do que oito bits.
fonte
A unidade básica de armazenamento do computador é o bit. Um bit pode conter um de dois valores, 0 e 1. Todos os outros armazenamentos em um computador são baseados em coleções de bits. Com bits suficientes, é incrível quantas coisas um computador pode representar: números, letras, imagens, filmes, sons, documentos e programas, para citar alguns. Um byte tem 8 bits e, na maioria dos computadores, é o menor bloco de armazenamento conveniente. Por exemplo, a maioria dos computadores não tem uma instrução para mover um bit, mas tem uma instrução para mover um byte. Um termo menos comum é palavra, que é a unidade de dados nativa de uma determinada arquitetura de computador. Uma palavra é composta por um ou mais bytes. Por exemplo, um computador que tem registros de 64 bits e endereçamento de memória de 64 bits normalmente tem palavras de 64 bits (8 bytes). Um computador executa muitas operações em seu tamanho de palavra nativo, em vez de um byte por vez. Armazenamento de computador, junto com a maior parte do rendimento do computador, geralmente é medido e manipulado em bytes e coleções de bytes. Um kilobyte, ou KB, é 1.024 bytes por megabyte, ou MB, é 1.024 2 bytes por gigabyte, ou GB, é 1.024 3 bytes por terabyte, ou TB, é 1.024 4 bytes por petabyte, ou PB, é 1.024 5 bytes Computador os fabricantes costumam arredondar esses números e dizer que um megabyte equivale a 1 milhão de bytes e um gigabyte equivale a 1 bilhão de bytes. As medições de rede são uma exceção a esta regra geral; eles são dados em bits (porque as redes movem os dados um pouco de cada vez) 024 5 bytes Os fabricantes de computadores costumam arredondar esses números e dizer que um megabyte é 1 milhão de bytes e um gigabyte é 1 bilhão de bytes. As medições de rede são uma exceção a esta regra geral; eles são dados em bits (porque as redes movem os dados um pouco de cada vez) 024 5 bytes Os fabricantes de computadores geralmente arredondam esses números e dizem que um megabyte é 1 milhão de bytes e um gigabyte é 1 bilhão de bytes. As medições de rede são uma exceção a esta regra geral; eles são dados em bits (porque as redes movem os dados um pouco de cada vez)
fonte
Se uma máquina pode ser endereçada por byte e uma palavra é a menor unidade que pode ser endereçada na memória, então acho que uma palavra seria um byte!
fonte
word
definitivamente significa 32 bits, mas há umalb
instrução (load byte) que carrega 8 bits.Um grupo de 8 bits é chamado de byte (exceto onde não é :) para certas arquiteturas)
Uma palavra é um grupo de bits de tamanho fixo que é tratado como uma unidade pelo conjunto de instruções e / ou hardware do processador. Isso significa que o tamanho de um registro de uso geral (que geralmente é mais do que um byte) é uma palavra
No C, uma palavra é mais frequentemente chamada de inteiro =>
int
fonte
octet
foi definido para denotar explicitamente uma sequência de 8 bits devido à ambigüidade associada ao termo byte . Mas eu gosto do som debyte
melhor :)byte
melhor": eu fortemente suspeito que você não está sozinho nisso e seguro para alguns sistemas de nicho, a "confusão" de um byte possivelmente sendo um tamanho diferente de 8 bits não é mais relevante hoje em dia.Os termos de BYTE e WORD são relativos ao tamanho do processador ao qual se refere. Os processadores mais comuns são / eram 8 bits, 16 bits, 32 bits ou 64 bits. Estes são os comprimentos de WORD do processador. Na verdade, metade de uma PALAVRA é um BYTE, qualquer que seja o comprimento numérico. Pronto para isso, metade de um BYTE é um NIBBLE.
fonte
Na verdade, no uso comum, word se tornou sinônimo de 16 bits, assim como byte com 8 bits. Pode ficar um pouco confuso, pois o "tamanho da palavra" em uma CPU de 32 bits é de 32 bits, mas ao falar sobre uma palavra de dados, significaria 16 bits. Microcontroladores com tamanho de palavra de 32 bits passaram a chamar suas instruções de "longs" (supostamente para tentar evitar a confusão palavra / palavra dupla).
fonte
ldrh
de carregar 16 bits e estendê-los para zero em um registrador de 32 bits. Ouldrsh
para carregar e estender o sinal de 16 bits.