Apa sejarah mengapa byte delapan bit?

86

Apa yang dilakukan oleh kekuatan historis di tempat kerja, pengorbanan, dalam memutuskan untuk menggunakan kelompok delapan bit sebagai unit dasar?

Ada mesin, sekali waktu, menggunakan ukuran kata lain, tetapi hari ini untuk non-delapan-bit Anda harus melihat potongan museum, chip khusus untuk aplikasi tertanam, dan DSP. Bagaimana byte berkembang dari kekacauan dan kreativitas masa awal desain komputer?

Saya dapat membayangkan bahwa lebih sedikit bit tidak akan efektif untuk menangani data yang cukup untuk membuat komputasi layak, sementara terlalu banyak akan menyebabkan perangkat keras yang mahal. Apakah ada pengaruh lain dalam permainan? Mengapa kekuatan-kekuatan ini menyeimbangkan menjadi delapan bit?

(BTW, jika saya dapat melakukan perjalanan waktu, saya akan kembali ke ketika "byte" dinyatakan 8 bit, dan meyakinkan semua orang untuk membuatnya 12 bit, menyuap mereka dengan beberapa pernak-pernik awal abad ke-21.)

DarW
sumber
7
Ini mungkin salah satu pertanyaan di mana kita tidak bisa menjawabnya lebih baik daripada Wikipedia tua yang baik .
Scott Whitlock
10
Jadi mengapa Anda lebih suka 12 bit daripada 8?
FrustratedWithFormsDesigner
8
Apakah kalimat terakhir bercanda? Byte 12-bit akan merepotkan karena itu bukan kekuatan 2.
Rob
19
Memori dan register tidak begitu murah saat itu, jadi 8 bit adalah kompromi yang baik, dibandingkan dengan 6 atau 9 (fraksi dari kata 36-bit). Juga, perhitungan alamat adalah hal yang jauh lebih sederhana dengan kekuatan 2, dan itu diperhitungkan ketika Anda membuat logika dari transistor mentah dalam kaleng kecil.
Mike Dunlavey
9
Menggunakan ukuran kata yang memiliki kekuatan 2 tidak begitu penting di "hari-hari awal". DEC-10 memiliki kata 36 bit, dan seri CDC 6000 memiliki kata 60 bit, dan index register dengan 18 bit.
Jay Elston

Jawaban:

75

Banyak pekerjaan yang sangat awal dilakukan dengan kode baudot 5-bit, tetapi dengan cepat menjadi sangat terbatas (hanya 32 karakter yang mungkin, jadi pada dasarnya hanya huruf besar, dan beberapa tanda baca, tetapi tidak cukup "ruang" untuk angka) .

Dari sana, beberapa mesin beralih ke karakter 6-bit. Ini masih cukup tidak memadai - jika Anda menginginkan huruf dan angka (huruf besar dan kecil), yang hanya menyisakan dua karakter untuk tanda baca, jadi sebagian besar masih hanya memiliki satu huruf dalam satu set karakter.

ASCII mendefinisikan set karakter 7-bit. Itu "cukup baik" untuk banyak kegunaan untuk waktu yang lama, dan telah membentuk dasar dari set karakter paling baru juga (ISO 646, ISO 8859, Unicode, ISO 10646, dll.)

Komputer biner memotivasi desainer untuk membuat kekuatan ukuran dua. Karena set karakter "standar" membutuhkan 7 bit, itu tidak terlalu sulit untuk menambahkan satu bit lagi untuk mendapatkan kekuatan 2 (dan pada saat itu, penyimpanan menjadi cukup lebih murah sehingga "membuang" sedikit untuk sebagian besar karakter lebih dapat diterima juga).

Sejak itu, set karakter telah pindah ke 16 dan 32 bit, tetapi sebagian besar komputer arus utama sebagian besar didasarkan pada PC IBM asli. Kemudian lagi, cukup pasar cukup puas dengan karakter 8-bit yang bahkan jika PC tidak sampai pada tingkat dominasi saat ini, saya tidak yakin semua orang akan melakukan semuanya dengan karakter yang lebih besar.

Saya juga harus menambahkan bahwa pasar telah berubah sedikit. Di pasar saat ini, ukuran karakter didefinisikan kurang oleh perangkat keras daripada perangkat lunak. Windows, Java, dll., Pindah ke karakter 16-bit dulu.

Sekarang, hambatan dalam mendukung karakter 16 atau 32-bit hanya sedikit dari kesulitan yang melekat pada karakter 16 atau 32-bit itu sendiri, dan sebagian besar dari kesulitan mendukung i18n secara umum. Dalam ASCII (misalnya) mendeteksi apakah sebuah huruf adalah huruf besar atau kecil, atau mengkonversi antara keduanya, sangat sepele. Dalam Unicode / ISO 10646 penuh, ini pada dasarnya tak terlukiskan kompleks (sampai-sampai standar bahkan tidak mencoba - mereka memberikan tabel, bukan deskripsi). Kemudian Anda menambahkan fakta bahwa untuk beberapa set bahasa / karakter, bahkan ide dasar huruf besar / kecil tidak berlaku. Kemudian Anda menambahkan fakta bahwa bahkan menampilkan karakter di beberapa dari mereka masih jauh lebih kompleks.

Itu semua cukup kompleks sehingga sebagian besar perangkat lunak bahkan tidak mencoba. Situasi perlahan membaik, tetapi perlahan adalah kata operatif.

Jerry Coffin
sumber
9
Saya pikir saya membaca di suatu tempat 8 berasal dari ASCII 7bit ditambah sedikit validasi yang diperlukan karena protokol transmisi yang hampir tidak kalah-kehilangan seperti yang diinginkan oleh desainer :-).
Martin York
3
@LokiAstari, Ya, ini disebut parity bit, dan dapat digunakan untuk bentuk deteksi atau pemulihan kesalahan. Wikipedia: Paritas bit
CVn
2
Tidak yakin apa yang harus dilakukan PC IBM dengan ini. "8 bit per byte" sudah standar di era CP / M (<1980), yang dimulai pada CPU 8080 (pendahulu dari 8086/8 dari era PC IBM)
MSalters
1
@ MSalters: Terutama bahwa ia (bisa dibilang) "menghambat" evolusi perangkat keras. Tidak, 8-bit / byte bukan hal baru dengan PC, tetapi sampai saat itu, sebagian besar arsitektur diganti setiap beberapa tahun. PC sebagian besar telah menghentikannya, dan mengambil arsitektur yang bahkan tidak terlalu progresif ketika masih baru, dan melestarikannya selama beberapa dekade .
Jerry Coffin
2
Kumpulan karakter saat ini bukan 16 atau 32 bit, Java dan Windows juga tidak menggunakannya. Set karakter saat ini adalah Unicode, yang membutuhkan 21 bit untuk memetakan secara langsung. Perangkat lunak saat ini menggunakan pengkodean yang berdasarkan pada unit kode bit 8 (UTF-8), 16 (UTF-16) atau 32 (UTF-32), menggabungkan beberapa unit kode untuk membentuk titik kode tunggal jika diperlukan, tetapi ukuran bit tersebut merupakan konsekuensi perangkat keras, bukan dari set karakter.
Sebastian Redl
10

Tujuh bit untuk informasi ASCII, dan satu untuk paritas pendeteksian kesalahan.

DeadMG
sumber
27
7bits untuk ASCII dan satu bit tambahan yang telah digunakan untuk semua hal
Martin Beckett
1
Paritas sangat penting ketika berhadapan dengan memori dini. Bahkan setelah pindah ke 8 bit data byte, ada chip memori dengan 9 bit untuk memungkinkan pemeriksaan paritas.
Jim C
1
Ini adalah pernyataan yang menarik. Apakah ada data historis untuk mendukung gagasan itu?
David
6

Lihatlah halaman Wikipedia pada arsitektur 8-bit . Meskipun set karakter bisa 5-, 6-, lalu 7-bit, arsitektur CPU / memory bus yang mendasari selalu menggunakan kekuatan 2. Mikroprosesor pertama (sekitar tahun 1970-an) memiliki bus 4-bit, yang berarti satu instruksi dapat bergerak 4- bit data antara memori eksternal dan CPU.

Kemudian dengan merilis prosesor 8080, arsitektur 8-bit menjadi populer dan itulah yang memberi permulaan set instruksi perakitan x86 yang digunakan bahkan hingga saat ini. Jika saya harus menebak, byte berasal dari prosesor awal ini di mana masyarakat umum mulai menerima dan bermain dengan PC dan 8-bit dianggap sebagai ukuran standar dari satu unit data.

Sejak itu ukuran bus menjadi dua kali lipat tetapi selalu tetap kekuatan 2 (yaitu 16-, 32- dan sekarang 64-bit) Sebenarnya, saya yakin internal bus hari ini jauh lebih rumit daripada hanya 64 kabel paralel, tetapi Arsitektur CPU arus utama adalah 64-bit.

Saya akan berasumsi bahwa dengan selalu menggandakan (bukannya tumbuh 50%) lebih mudah untuk membuat perangkat keras baru yang hidup berdampingan dengan aplikasi yang ada dan komponen warisan lainnya. Jadi misalnya ketika mereka beralih dari 8-bit ke 16, setiap instruksi sekarang dapat memindahkan 2 byte, bukan 1, jadi Anda menghemat satu siklus clock tetapi hasil akhirnya sama. Namun, jika Anda beralih dari arsitektur 8 ke 12-bit, Anda akhirnya akan memecah data asli menjadi setengah dan mengelola yang bisa menjadi menjengkelkan. Ini hanya tebakan, saya bukan ahli perangkat keras.

DXM
sumber
5
"CPU pertama (sekitar 1970-an) ..." . Anda perlu membaca tentang sejarah komputasi !! CPU pertama untuk komputer arsitektur von Neumann dibangun selama Perang Dunia II ... atau sebelumnya (tergantung pada versi sejarah yang Anda yakini.)
Stephen C
dan ada perangkat komputasi di abad ke-19 dan saya yakin orang Mesir memiliki semacam pot kalkulator. Info itu datang dari halaman Wikipedia yang saya tautkan. Seperti yang saya katakan, saya bukan ahli perangkat keras dan saya jelas bukan sejarawan, tetapi jika Anda merasa bahwa saya sangat jauh, Anda mungkin ingin memperbarui halaman wikipedia itu.
DXM
Saya kira itu akan membantu jika saya tidak mengacaukan tautan saat saya masuk. Saya juga minta maaf karena mengatakan "CPU pertama". Karena saya mengutip halaman wiki, saya seharusnya mengatakan "mikroprosesor pertama". Itu yang saya maksud. Maaf soal itu.
DXM
Solusi untuk komputer "pra-elektron" adalah dengan mengatakan komputer modern atau saya kira komputer elektron. Bahkan hari ini Anda dapat membangun komputer mekanik. Baru setelah kami mulai menggunakan bidang elektron untuk keuntungan kami, kami membangun prosesor mikro.
Ramhound
Ukuran byte 8-bit dan kata 16-bit yang digunakan oleh seri PDP mungkin juga memainkan faktor dalam popularitas byte 8-bit.
Jay Elston
4

Satu byte telah beragam (setidaknya) 1, 4, 6, 7, 8, 9, 12, 18, 20 dan mungkin 36 bit, tergantung pada komputer apa yang Anda lihat. Saya menggunakan "byte" di sini untuk berarti "unit memori terkecil yang dapat dialamatkan", daripada menggunakan segala jenis interpretasi teks-sentris. (Misalnya, Saturn CPU, CPU 64-bit yang digunakan dalam garis kalkulator HP48SX / GX yang populer membahas memori dalam camilan - 4-bit.)

20-bit byte sangat umum di "mesin IAS", di tahun 50-an. 6, 12, 18 (dan mungkin 36) cukup populer di berbagai arsitektur di tahun 60-an, 70-an, dan pada tingkat tertentu, 80-an.

Pada akhirnya, memiliki korespondensi yang bagus antara "kekuatan 2" dan "bit dalam unit addressable" tampaknya telah menang.

Vatine
sumber
Dan tidak pernah 10 bit? Yang bisa saya temukan dengan Google adalah beberapa prosesor video terbaru adalah 10 bit.
rslnx
@ KRFF Mungkin saja, saya tidak dapat mengingat arsitektur apa pun yang memilikinya (saya kebanyakan menganggap komputer untuk keperluan umum).
Vatine
Ya, saya juga mempertimbangkan komputer untuk keperluan umum. Aneh karena saya membayangkan betapa menyenangkannya dengan 10-bit-byte untuk mengetahui bahwa Anda dapat mengatasi 1 kilobyte dengan 1 byte, 1 megabyte dengan 2 byte, dll. Tentu saja, itu hanya kenyamanan pada kenyamanan :)
rslnx
2

Pertama sedikit klarifikasi: Oktet (unit 8-bit) sebenarnya bukan unit dasar dalam arsitektur komputer modern. Setidaknya tidak ada yang lebih mendasar daripada kekuatan dua - 2, 4, 16, 32, 64, 128 dll. Oktet adalah unit dasar untuk prosesor 8-bit (karena itu namanya!), Tetapi arsitektur modern biasanya bekerja dengan bit yang lebih besar -set secara internal. Misalnya x86_64 memiliki register integer 64 bit dan register floating point 80 bit. RAM dibaca dan ditulis dalam potongan 64-bit, dan prosesor hanya menggunakan sedikit sihir untuk membuatnya terlihat seperti Anda dapat mengatasi masing-masing byte 8-bit.

Untuk arsitektur yang lebih tua, "byte" menunjukkan ukuran bus data, dan seperti yang dinyatakan pertanyaan awal, ada banyak ukuran bus yang berbeda (4, 5, 6, 8, 12 dll.). Tetapi sejak tahun 1993 sebuah byte telah didefinisikan sebagai 8 bit, untuk memiliki unit SI standar untuk ukuran data. Oleh karena itu makna "byte" telah berubah dari unit yang bergantung pada arsitektur menjadi unit standar yang independen terhadap arsitektur.

Jadi hari-hari ini, byte adalah unit standar untuk menangani dan mengukur data, tetapi sebenarnya tidak terlalu mendasar.

Unit oktet menjadi standar de-facto untuk penyimpanan terutama karena kekhawatiran tentang menyimpan teks. Untuk menyimpan teks Anda idealnya ingin satu byte untuk menyimpan satu karakter. Dua faktor penting:

  • Memiliki unit yang merupakan kekuatan dua (2, 4, 8, 16, 32 dll.) Lebih nyaman ketika merancang sistem digital.
  • 8-bit sudah cukup untuk menyimpan satu karakter dalam set karakter ASCII (dengan ruang kosong untuk memperluas set karakter untuk mendukung katakanlah Cyrillic).

Tentu saja 8-bit tidak cukup untuk mendukung semua skrip - sesuatu seperti Jepang membutuhkan setidaknya 16 bit (dan untuk apa nilainya, Unicode adalah 21 bit), tetapi pada saat itu bit waktu mahal dan sebagian besar teks digital berada dalam kisaran ASCII.

Hari-hari ini, teks biasanya disimpan dalam pengkodean lebar variabel seperti UTF-8, dan dengan hal-hal seperti Unicode menggabungkan karakter, "satu byte sama dengan satu karakter" telah lama menjadi bagian dari masa lalu. Byte Hari ini sebenarnya hanya standar karena alasan historis.

JacquesB
sumber
1

Menurut informasi saya, kata byte itu sendiri berasal dari frase oleh-delapan yang merupakan delapan (8) bit kata-kata. kenyamanan yang kami temukan dalam 8 bit kata adalah konversi ke nilai heksadesimal karena nilai 00000000 = 00 & 11111111 = FF (255 Des untuk unsigned dan -127 untuk ditandatangani) mudah untuk melakukan semua operasi aritmatika pada struktur tersebut termasuk bit-wise operasi.

Saya melihat byte (8 bit kata) sebagai evolusi alami ukuran kata dari 3 bit serempak kecil hingga 60 bit kata yang sangat besar

A.Rashad
sumber
Saya ingin melihat referensi untuk itu. Saya sangat meragukannya. Terutama sebagai kata "byte", seperti yang digunakan dalam Standar C dan dimasukkan dalam standar C ++, tidak berarti "8 bit". Kuantitas 8 bit adalah oktet.
gnasher729
0

Byte tidak harus 8 bit , tetapi tampaknya C dan C ++ mendefinisikan byte sebagai setidaknya 8 bit (meskipun bisa lebih dari itu). Ini pertanyaan pada Stack Overflow menyebutkan beberapa sistem di mana 1 byte tidak 8 bit.

Thomas Owens
sumber
C ++, atau kompiler ?
Babiker
@Babiker: C ++. Kompiler akan memiliki definisi yang tepat. ( CHAR_BITSmakro)
MSalters