Saya telah melakukan beberapa penelitian. Satu byte adalah 8 bit dan satu kata adalah unit terkecil yang dapat dialamatkan pada memori. Panjang kata yang tepat bervariasi. Yang tidak saya mengerti adalah apa gunanya memiliki byte? Mengapa tidak mengatakan 8 bit?
Saya mengajukan pertanyaan ini kepada seorang profesor dan dia berkata bahwa kebanyakan mesin saat ini memiliki alamat byte, tetapi apa artinya itu?
assembly
memory
hardware
terminology
cpu-architecture
Peter Cordes
sumber
sumber
Jawaban:
Byte : Saat ini, satu byte hampir selalu 8 bit. Namun, itu tidak selalu terjadi dan tidak ada "standar" atau sesuatu yang menentukan hal ini. Karena 8 bit adalah angka yang mudah untuk digunakan, bit tersebut menjadi standar de facto.
Word : Ukuran alami yang digunakan prosesor untuk menangani data (ukuran register). Ukuran kata yang paling umum ditemukan saat ini adalah 8, 16, 32, dan 64 bit, tetapi ukuran lain mungkin. Misalnya, ada beberapa mesin 36 bit , atau bahkan mesin 12 bit .
The byte adalah unit dialamatkan terkecil untuk CPU. Jika Anda ingin mengatur / menghapus bit tunggal, pertama-tama Anda harus mengambil byte yang sesuai dari memori, mengacaukan bit tersebut, lalu menulis byte tersebut kembali ke memori.
Sebaliknya, kata adalah potongan bit terbesar yang dapat digunakan prosesor untuk memproses (seperti penambahan dan pengurangan) pada satu waktu. Definisi tersebut agak kabur, karena beberapa prosesor mungkin memiliki ukuran kata yang berbeda untuk tugas yang berbeda (misalnya, pemrosesan integer vs. floating point). Ukuran kata adalah apa yang digunakan sebagian besar operasi.
Ada juga beberapa prosesor yang memiliki ukuran penunjuk berbeda : misalnya, 8086 adalah prosesor 16-bit yang berarti lebar registernya 16 bit. Tetapi pointernya (alamat) memiliki lebar 20 bit dan dihitung dengan menggabungkan dua register 16 bit dengan cara tertentu.
sumber
word
adalah 16 bit, bahkan pada CPU x86 modern di mana ukuran operan default adalah 32 bit (dword), dan lebar register integer adalah 64 bit (qword). Dan register xmm memiliki lebar 128-bit (movdqa
pindah quad-ganda). Bus memori setidaknya memiliki lebar 64 bit (dan transfer dalam semburan 64 byte = baris cache), dan unit eksekusi ke jalur cache setidaknya memiliki lebar 128 bit, atau lebar 256 atau bahkan 512 bit. Apa pun ukuran kata mesin asli dari x86 modern, ini bukan 16 bit, tetapi x86 modern masih menggunakan terminologi 8086.Terlepas dari poin teknis bahwa satu byte belum tentu 8 bit, alasan untuk memiliki istilah adalah sifat manusia yang sederhana:
ekonomi usaha (alias kemalasan) - lebih mudah untuk mengatakan "byte" daripada "delapan bit"
tribalisme - sekelompok orang suka menggunakan jargon / bahasa pribadi untuk membedakan mereka dari orang lain.
Hanya mengikuti arus. Anda tidak akan mengubah 50+ tahun akumulasi terminologi TI dan bagasi budaya dengan mengeluh tentangnya.
FWIW - istilah yang tepat untuk digunakan saat Anda bermaksud "8 bit tidak bergantung pada arsitektur perangkat keras" adalah "oktet".
sumber
BYTE
Saya mencoba menjawab pertanyaan ini dari perspektif C ++.
Standar C ++ mendefinisikan 'byte' sebagai "Unit data yang dapat dialamatkan cukup besar untuk menampung setiap anggota dari kumpulan karakter dasar lingkungan eksekusi."
Artinya, byte terdiri dari setidaknya cukup bit yang berdekatan untuk mengakomodasi himpunan karakter dasar untuk implementasi. Artinya, jumlah nilai yang mungkin harus sama atau melebihi jumlah karakter yang berbeda. Di Amerika Serikat, himpunan karakter dasar biasanya himpunan ASCII dan EBCDIC, yang masing-masing dapat ditampung oleh 8 bit. Oleh karena itu dijamin bahwa satu byte akan memiliki setidaknya 8 bit.
Dengan kata lain, byte adalah jumlah memori yang dibutuhkan untuk menyimpan satu karakter.
Jika Anda ingin memverifikasi 'jumlah bit' dalam implementasi C ++ Anda, periksa file 'limit.h'. Ini harus memiliki entri seperti di bawah ini.
KATA
Sebuah Word didefinisikan sebagai jumlah bit tertentu yang dapat diproses bersama-sama (yaitu dalam satu upaya) oleh mesin / sistem. Sebagai alternatif, kita dapat mengatakan bahwa Word mendefinisikan jumlah data yang dapat ditransfer antara CPU dan RAM dalam satu operasi.
Register perangkat keras di mesin komputer berukuran kata. Ukuran Word juga menentukan kemungkinan alamat memori terbesar (setiap alamat memori menunjuk ke memori berukuran byte).
Catatan - Dalam program C ++, alamat memori menunjuk ke satu byte memori dan bukan ke kata.
sumber
Karena tidak semua mesin memiliki byte 8-bit. Karena Anda memberi tag ini
C
, cariCHAR_BIT
dilimits.h
.sumber
Kata adalah ukuran register di prosesor. Ini berarti instruksi prosesor seperti, add, mul, dll ada pada input berukuran kata.
Tetapi kebanyakan arsitektur modern memiliki memori yang dapat dialamatkan dalam potongan 8-bit, jadi lebih mudah untuk menggunakan kata "byte".
sumber
Dalam konteks ini, kata adalah unit yang digunakan mesin saat bekerja dengan memori. Misalnya, pada mesin 32 bit, word memiliki panjang 32 bit dan pada 64 bit panjangnya 64 bit. Ukuran kata menentukan ruang alamat.
Dalam pemrograman (C / C ++), kata biasanya diwakili oleh
int_ptr
tipe, yang memiliki panjang yang sama dengan penunjuk, dengan cara ini mengabstraksi detail ini.Beberapa API mungkin membingungkan Anda, seperti Win32 API, karena memiliki tipe seperti
WORD
(16 bit) danDWORD
(32 bit). Alasannya adalah bahwa API awalnya menargetkan mesin 16 bit, kemudian diporting ke mesin 32 bit, lalu ke mesin 64 bit. Untuk menyimpan pointer, Anda bisa menggunakanINT_PTR
. Lebih detail di sini dan di sini .sumber
Sepertinya semua jawaban mengasumsikan bahasa tingkat tinggi dan terutama C / C ++.
Tetapi pertanyaannya adalah "assembly" dan di semua assembler yang saya tahu (untuk CPU 8bit, 16bit, 32bit dan 64bit), definisinya jauh lebih jelas:
sumber
int<X>_t
danuint<X>_t
(ditambah lagi) yang harus digunakan jika Anda menginginkan variabel / parameter dengan ukuran bit tertentu..word
mungkin 32 bit (misalnya untuk Sparc ).Meskipun panjang kata bervariasi, pada semua mesin modern dan bahkan semua arsitektur lama yang saya kenal, ukuran kata masih merupakan kelipatan dari ukuran byte. Jadi tidak ada kerugian tertentu untuk menggunakan "byte" di atas "8 bit" dalam kaitannya dengan ukuran kata variabel.
Selain itu, berikut beberapa alasan untuk menggunakan byte (atau oktet 1 ) di atas "8 bit":
1 Meskipun saya akan menganggap satu byte sebagai 8 bit untuk jawaban ini, ini tidak berlaku secara universal: pada mesin yang lebih lama, byte mungkin memiliki ukuran yang berbeda (seperti 6 bit . Oktet selalu berarti 8 bit, terlepas dari mesinnya ( jadi istilah ini sering digunakan dalam mendefinisikan protokol jaringan) .Dalam penggunaan modern, byte banyak digunakan sebagai sinonim dengan 8 bit.
sumber
Apapun terminologi yang ada dalam lembar data dan kompiler, 'Byte' adalah delapan bit. Jangan coba membingungkan penanya dan generalitas dengan pengecualian yang lebih tidak jelas, terutama karena kata 'Byte' berasal dari ungkapan "By Eight". Saya telah bekerja di industri semikonduktor / elektronik selama lebih dari tiga puluh tahun dan tidak pernah dikenal 'Byte' digunakan untuk mengekspresikan sesuatu yang lebih dari delapan bit.
sumber
Unit dasar penyimpanan komputer adalah bit. Sebuah bit dapat berisi salah satu dari dua nilai, 0 dan 1. Semua penyimpanan lainnya di komputer didasarkan pada kumpulan bit. Diberikan cukup bit, sungguh menakjubkan betapa banyak hal yang dapat diwakili oleh komputer: angka, huruf, gambar, film, suara, dokumen, dan program, untuk beberapa nama. Satu byte adalah 8 bit, dan pada kebanyakan komputer, ini adalah bagian penyimpanan terkecil yang nyaman. Misalnya, kebanyakan komputer tidak memiliki instruksi untuk bergerak sedikit tetapi memiliki satu instruksi untuk memindahkan satu byte. Istilah yang kurang umum adalah kata, yang merupakan unit data asli arsitektur komputer tertentu. Sebuah kata terdiri dari satu atau lebih byte. Misalnya, komputer yang memiliki register 64-bit dan pengalamatan memori 64-bit biasanya memiliki kata-kata 64-bit (8-byte). Komputer menjalankan banyak operasi dalam ukuran kata aslinya daripada satu byte pada satu waktu. Penyimpanan komputer, bersama dengan kebanyakan throughput komputer, umumnya diukur dan dimanipulasi dalam byte dan kumpulan byte. Kilobyte, atau KB, adalah 1.024 byte satu megabyte, atau MB, adalah 1.024 2 byte gigabyte, atau GB, adalah 1.024 3 byte per terabyte, atau TB, adalah 1.024 4 byte per petabyte, atau PB, adalah 1.024 5 byte Komputer produsen sering membulatkan angka-angka ini dan mengatakan bahwa satu megabyte adalah 1 juta byte dan satu gigabyte adalah 1 miliar byte. Pengukuran jaringan merupakan pengecualian dari aturan umum ini; mereka diberikan dalam bit (karena jaringan memindahkan data sedikit demi sedikit) 024 5 byte Produsen komputer sering membulatkan angka-angka ini dan mengatakan bahwa satu megabyte adalah 1 juta byte dan satu gigabyte adalah 1 miliar byte. Pengukuran jaringan merupakan pengecualian dari aturan umum ini; mereka diberikan dalam bit (karena jaringan memindahkan data sedikit demi sedikit) 024 5 byte Produsen komputer sering membulatkan angka-angka ini dan mengatakan bahwa satu megabyte adalah 1 juta byte dan satu gigabyte adalah 1 miliar byte. Pengukuran jaringan merupakan pengecualian dari aturan umum ini; mereka diberikan dalam bit (karena jaringan memindahkan data sedikit demi sedikit)
sumber
Jika sebuah mesin dapat dialamatkan byte dan sebuah kata adalah unit terkecil yang dapat dialamatkan pada memori maka saya kira sebuah kata akan menjadi byte!
sumber
word
pasti berarti 32 bit, tetapi adalb
instruksi (load byte) yang memuat 8 bit.Sekelompok 8 bit disebut byte (dengan pengecualian jika bukan :) untuk arsitektur tertentu)
Sebuah kata adalah kelompok ukuran tetap bit yang ditangani sebagai satu unit dengan set instruksi dan / atau perangkat keras prosesor. Itu berarti ukuran register tujuan umum (yang umumnya lebih dari satu byte) adalah sebuah kata
Di C, sebuah kata paling sering disebut integer =>
int
sumber
octet
ini didefinisikan secara eksplisit menunjukkan urutan 8 bit karena ambiguitas yang terkait dengan istilah byte . Tapi saya suka suara yangbyte
lebih baik :)byte
lebih baik": Saya sangat curiga Anda tidak sendirian dalam hal ini dan aman untuk beberapa sistem khusus, "kebingungan" dari satu byte mungkin berukuran selain 8-bit tidak lagi relevan hari ini.Istilah BYTE dan WORD relatif terhadap ukuran prosesor yang dirujuk. Prosesor yang paling umum adalah / dulu 8 bit, 16 bit, 32 bit atau 64 bit. Ini adalah panjang WORD prosesor. Sebenarnya setengah dari WORD adalah BYTE, berapa pun panjang angkanya. Siap untuk ini, setengah dari BYTE adalah NIBBLE.
sumber
Faktanya, dalam penggunaan umum, kata menjadi identik dengan 16 bit, sama seperti byte dengan 8 bit. Bisa jadi sedikit membingungkan karena "ukuran kata" pada CPU 32-bit adalah 32-bit, tetapi ketika berbicara tentang sebuah kata data, yang satu berarti 16-bit. Mikrokontroler dengan ukuran kata 32-bit telah memanggil instruksi mereka "rindu" (seharusnya untuk mencoba dan menghindari kebingungan kata / kata ganda).
sumber
ldrh
memuat 16 bit dan tanpa memperluasnya ke register 32-bit. Atauldrsh
untuk memuat dan memperpanjang 16 bit.