Prosesor Intel 8086 Mendaftarkan: Dari Chip ke Transistor

Intel 8086 adalah salah satu chip komputer paling berpengaruh yang pernah dibuat. Dia menciptakan arsitektur x86 yang mendominasi komputer desktop dan server modern. Saya telah reverse engineering 8086 berdasarkan gambar kristal, dan dalam artikel ini saya akan menjelaskan implementasi file register (set register).





Crystal 8086. Lokasi penyimpanan register ditandai. Register atas digunakan oleh blok antarmuka bus untuk akses memori, dan register tujuan umum yang lebih rendah digunakan oleh blok eksekusi. Buffer perintah adalah antrian 6-byte dari perintah yang diminta sebelumnya.



Foto tersebut menunjukkan gambar prosesor 8086 di bawah mikroskop. Lapisan logam terlihat di atas chip, di mana silikon disembunyikan. Terletak di tepi luar dari kabel penghubung, sambungkan bantalan pada chip ke 40 pin luar chip.



Lima belas register 16-bit 8086 dan enam byte antrian pra-permintaan perintah ( prefetch kode ) dibingkai . Register menempati bagian penting dari kristal, meskipun secara total mereka akan diketik hanya dalam 36 byte. Karena keterbatasan ruang, mikroprosesor awal memiliki register yang relatif sedikit. Sebagai perbandingan, chip prosesor modern memiliki kilobyte register dan megabyte cache.



8086 adalah salah satu mikroprosesor paling awal yang menerapkan kode prefetch, tetapi Motorola 68000 (1979) memiliki buffer prefetch 4-byte sedikit lebih awal. Dalam mainframe, prefetch tersedia dengan IBM Stretch (1961), CDC 6600 (1964), dan IBM System / 360 Model 91 (1966).



Jumlah register dalam prosesor modern sulit dihitung. Satu-satunya nomor pasti yang saya temukan ada di buku Anatomy of a High-Speed ​​Microprocessor"(1997), menjelaskan secara rinci prosesor AMD K6. Karena penggantian nama register, prosesor modern memiliki lebih banyak register fisik daripada yang arsitektural (yang terlihat oleh programmer), dan jumlah register fisik tidak ditunjukkan dalam dokumentasi. K6, kecuali untuk delapan register x86 Untuk tujuan umum, terdapat 16 register kerja mikroarsitektur untuk



diganti namanya. Prosesor dengan dukungan AVX-512 memiliki register 32 512-bit, yaitu, 2 KB register dicadangkan untuk fungsi ini. Dalam kasus seperti itu, ukuran register bahkan lebih sulit untuk dihitung. Sedangkan untuk ukuran cache, kemudian di prosesor tingkat lanjut volumenya mencapai 77 MB .



Bagaimana register diimplementasikan dalam silikon



Saya akan mulai dengan menjelaskan bagaimana 8086 dibangun dari transistor N-MOS. Kemudian saya akan menjelaskan bagaimana inverter dibuat, bagaimana bit tunggal disimpan dengan inverter, dan bagaimana register dibuat.



8086, seperti chip lain pada masa itu, didasarkan pada transistor N-MOS. Chip ini terdiri dari substrat silikon, di mana pengotor arsenik atau boron disebarkan untuk membentuk transistor. Di atas silikon, konduktor polysilicon membentuk gerbang transistor dan menghubungkan semua komponen satu sama lain. Lapisan logam yang terletak lebih tinggi mengandung konduktor tambahan. Sebagai perbandingan, prosesor modern menggunakan teknologi CMOS , yang menggabungkan transistor N-MOS dan P-MOS, dan mengandung banyak lapisan logam.



Diagram di bawah menunjukkan inverterterdiri dari transistor N-MOS dan resistor. Ketika tegangan input rendah, transistor mati, sehingga resistor pull-up menarik output ke atas. Ketika tegangan input tinggi, transistor menyala, menghubungkan ground dan output, menarik output ke bawah. Dengan demikian, sinyal yang masuk dibalik.



Faktanya, resistor pull-up di katup N-MOS adalah jenis transistor khusus. Sebuah habis berperilaku transistor seperti resistor sementara menjadi lebih kompak dan efisien.





Diagram menunjukkan bagaimana inverter dibuat dari transistor dan resistor. Foto menunjukkan implementasi pada chip. Lapisan logam telah dihilangkan untuk mengekspos silikon dan polisilikon.



Foto di atas menunjukkan bagaimana fisik inverter 8086. Daerah yang berwarna merah muda adalah silikon dengan pengotor yang membuatnya menjadi konduktif, dan garis berwarna tembaga adalah polysilicon di atasnya. Transistor muncul di mana polysilicon berpotongan dengan silikon. Polysilicon membentuk gerbang transistor, dan bagian silikon di kedua sisi menyediakan sumber dan saluran. Sebuah persegi panjang besar polysilicon membentuk resistor pull-up antara + 5V dan output. Jadi rangkaian chipnya sama dengan rangkaian inverter. Sirkuit seperti ini dapat dilihat di bawah mikroskop dan direkayasa ulang.



Blok penyusun register adalah dua inverter dalam loop umpan balik yang menyimpan satu bit (lihat di bawah). Jika konduktor atas adalah 0, inverter kanan akan mengeluarkan 1 ke konduktor bawah. Inverter kiri kemudian akan mengeluarkan 0 ke konduktor atas, menyelesaikan siklus. Jadi, rangkaiannya stabil dan "mengingat" 0. Dan sebaliknya, jika konduktor atas adalah 1, maka akan berubah menjadi 0 pada konduktor bawah, dan kembali ke 1 pada konduktor atas. Akibatnya, rantai dapat menyimpan 0 atau 1, membentuk memori satu bit.





8086 memiliki dua inverter berpasangan yang menyimpan satu bit dalam register. Sirkuit dalam keadaan stabil dalam keadaan 0 atau 1.



Tiga transistor ditambahkan ke pasangan inverter untuk membuat sel register yang dapat digunakan. Satu transistor memilih sel untuk dibaca, yang kedua memilih sel untuk menulis, dan yang ketiga memperkuat sinyal saat membaca. Di tengah rangkaian di bawah ini, dua inverter menyimpan bit. Untuk membaca bit, arus diterapkan ke bus merah. Ini menghubungkan output inverter ke garis bit melalui transistor penguatan. Untuk menulis sedikit, arus diterapkan ke garis merah, yang menghubungkan garis bit ke inverter. Dengan menerapkan sinyal arus tinggi 0 atau 1 ke garis bit (dan, karenanya, ke bit yang disimpan), kami memaksa inverter untuk beralih ke nilai yang diinginkan. Perhatikan bahwa garis bit digunakan untuk membaca dan menulis.



Prosesor lain menggunakan lokasi register yang sedikit berbeda. 6502 menggunakan transistor tambahan di loop umpan balik inverter untuk memutus rangkaian ketika nilai baru ditulis. Z80 menulis ke kedua inverter pada saat yang sama, yang "membuatnya mudah" untuk berubah, tetapi membutuhkan dua kabel untuk menulis. 8086 memiliki transistor penguatan di setiap lokasi register untuk membaca, sementara prosesor lain membaca output dari kedua inverter dan menggunakan penguat diferensial eksternal untuk memperkuat sinyal. Sel dasar register 8086 terdiri dari 7 transistor (7T), yang lebih dari sel RAM statis biasa yang menggunakan 6 atau 4 transistor, tetapi hanya menggunakan satu baris bit, bukan dua baris yang berbeda. Memori dinamis (DRAM) jauh lebih efisien, dan menggunakan transistor dan kapasitor tunggal,Namun, tanpa memperbarui data, data akan hilang.





Diagram skematis dari sel register yang menyimpan sedikit. File register dibuat dari array sel semacam itu.



File register terdiri dari matriks sel register yang mirip dengan yang dijelaskan di atas. Matriks ini memiliki lebar 16 sel karena register menyimpan nilai 16-bit. Setiap register ditempatkan secara horizontal, sehingga bus baca atau tulis memilih semua sel dari register tertentu. 16 garis bit vertikal membentuk bus tunggal, sehingga 16 bit dalam register yang dipilih dibaca dan ditulis secara paralel.



Foto di bawah ini menunjukkan file register umum yang diperbesar 8086 yang menunjukkan matriks sel register: 16 kolom dan 8 baris, 8 register 16-bit. Kemudian peningkatan diberikan ke satu lokasi register di file. Izinkan saya menjelaskan bagaimana sel ini diimplementasikan.





8086 ( 16- ), . , .



8086 terbuat dari silikon yang diolah dan konduktor polisilikon dengan konduktor logam di atasnya. Foto kiri di bawah ini menunjukkan konduktor logam vertikal dari sel register. Kabel ground, power, dan bit bus diberi tanda (kabel yang tersisa melewati file register, tetapi tidak menyentuhnya). Pada foto di sebelah kanan, lapisan logam dilarutkan sehingga polisilikon dan silikon bisa terlihat. Bus baca dan tulis adalah konduktor polysilicon horizontal. Karena chip hanya memiliki satu lapisan logam, logam digunakan dalam register untuk bus vertikal, dan polysilicon untuk bus horizontal sehingga tidak saling berpotongan). Logam dan silikon melalui sambungan muncul sebagai lingkaran yang lebih cerah pada foto logam dan sebagai lingkaran pada foto silikon.





Daftarkan lokasi penyimpanan. Foto di sebelah kiri menunjukkan lapisan logam, dan di sebelah kanan - lapisan polysilicon dan silikon yang sesuai.



Diagram di bawah menunjukkan korespondensi skema fisik sel register dengan sel utama. Inverter terdiri dari transistor A dan B serta register. Transistor C, D dan E dibentuk oleh potongan polysilicon yang ditandai. Garis bit tidak terlihat karena terletak di lapisan logam. Perhatikan bahwa tata letak sel memori sangat dioptimalkan untuk meminimalkan ukuran. Perhatikan juga bahwa transistor A jauh lebih kecil dari yang lain. Inverter A memiliki arus keluaran yang cukup rendah, sehingga garis bit dapat mengatasinya saat menulis.





Daftarkan sel dari 8086 dengan sirkuit yang sesuai



Dukungan untuk register 8-bit



Jika Anda memeriksa kristal dengan cermat, Anda dapat melihat bahwa beberapa sel register memiliki struktur yang sedikit berbeda. Di sebelah kiri adalah lokasi register yang telah kita diskusikan, dan di sebelah kanan adalah sepasang lokasi register dengan dua bus tulis, bukan satu. Di foto kiri, bus tulis melintasi silikon di kedua sel register. Di foto kanan, bus "tulis kanan" melintasi silikon di kanan, tetapi berjalan di antara silikon di kiri. Sebaliknya, garis "tulis kiri" melintasi silikon di sisi kiri dan membentang di antara daerah silikon di kanan. Jadi, satu bus mengontrol penulisan bit kanan, sedangkan bus lainnya mengontrol penulisan bit kiri. Dalam register 16-bit, bagian berselang-seling 8-bit dapat ditulis secara terpisah dengan cara ini.



Sel register pada kristal tidak diulang secara seragam - setiap sel kedua adalah bayangan cermin dari sel sebelumnya. Ini meningkatkan kepadatan sel register - rel listrik yang berjalan di antara dua sel cermin dapat memberi daya pada keduanya (hal yang sama berlaku untuk ground). Pengulangan cermin mengurangi jumlah rel daya dan arde yang dibutuhkan menjadi setengahnya.



Meskipun diagram blok biasanya menunjukkan bagaimana register 16-bit dibagi menjadi dua bagian kiri dan kanan, dalam dunia nyata bit di setiap sisi disisipkan alih-alih selalu menyimpan bagian 8-bit pertama di kiri dan yang kedua di kanan. Implementasi ini menyederhanakan tugas yang terkadang muncul untuk menukar dua bagian dari kata 16-bit. Salah satu kasus tersebut adalah membaca atau menulis memori tanpa keselarasan. Lain adalah operasi ALU yang menggunakan bagian atas register - misalnya, AH. Menukar bit antara bagian kanan dan kiri akan membutuhkan penarikan kabel panjang di antara semua potongan kata. Namun, dalam pengaturan bolak-balik, untuk menukar dua bagian kata, setiap pasangan bit yang berdekatan harus ditukar, yang tidak memerlukan kabel panjang. Dengan kata lain,register berselang-seling 8086 memudahkan penataan konduktor untuk menukar dua bagian kata.





Dua pasang sel memori dengan sirkuit berbeda. Sel di sebelah kiri memiliki satu bus tulis, dan sel di kanan memiliki bus tulis terpisah untuk bit kiri dan kanan.



Mengapa beberapa register memiliki dua bus tulis dan yang lainnya memiliki satu? Alasannya adalah karena 8086 memiliki register 16-bit, tetapi empat di antaranya dapat diakses sebagai 8-bit seperti yang ditunjukkan di bawah ini. Misalnya, akumulator A 16-bit dapat diakses sebagai register AH 8-bit (bagian akumulator orde tinggi) dan 8-bit AL (komponen orde rendah). Implementasi register dengan dua bus kontrol tulis memungkinkan penulisan ke setiap setengah register secara terpisah.



Jika file register hanya mendukung register 16-bit, bukan 8-bit, prosesor mungkin bekerja, tetapi kurang efisien. Menulis ke bagian 8-bit akan dilakukan dengan membaca semua 16 bit, mengubah setengah 8-bit, dan menulis semua 16 bit. Akibatnya, alih-alih mengakses satu register, panggilan akan beralih ke tiga. Dalam kasus ini, file register tidak perlu mendukung pembacaan 8 bit, karena setengah yang tidak perlu dapat diabaikan begitu saja.





Register serba guna pada 8086. Register A, B, C, dan D dapat dibagi menjadi dua bagian 8-bit.



Register multiport



Sejauh ini kita telah membahas delapan "register rendah" untuk tujuan umum. 8086 juga memiliki tujuh "register atas" yang digunakan untuk akses memori, termasuk register segmen yang terkenal . Register-register ini memiliki skema operasi multi-port yang lebih kompleks, memungkinkan beberapa proses baca dan tulis dilakukan secara bersamaan. Misalnya, file register multiport memungkinkan Anda membaca penghitung program, register segmen, dan menulis register segmen lain, semuanya pada waktu yang sama.



Diagram blok di bawah ini berbeda dari kebanyakan diagram blok.untuk 8086, karena ini menunjukkan implementasi fisik prosesor yang sebenarnya, dan bukan apa yang dibayangkan oleh programmer. Secara khusus, diagram menunjukkan dua "register komunikasi internal" di antara register modul antarmuka bus (kanan), bersama dengan register segmen yang cocok dengan 7 register yang dapat dilihat pada chip. Register sementara yang ditunjukkan di bawah ini secara fisik merupakan bagian dari ALU, jadi saya tidak akan membahasnya dalam artikel ini.







Buku " Designing Modern Processors " membahas tentang sistem register yang kompleks dalam sebuah prosesor sejak tahun 2000-an. Dikatakan bahwa kompleksitas sirkuit dengan cepat melampaui tiga port, dan beberapa prosesor tingkat lanjut memiliki file register dengan 20 port atau lebih.



Sel register multiport di bawah ini didasarkan pada rangkaian dua inverter yang sama, namun memiliki tiga garis bit (bukan satu seperti pada kasus sebelumnya) dan lima garis kontrol (bukan dua). Tiga bus baca memungkinkan Anda membaca konten sel register pada salah satu dari tiga baris bit, dan dua bus tulis memungkinkan bit A atau C menulis ke sel register.





Multiport register cell dalam prosesor 8086



Sekilas, file register 8086 tampak seperti sekumpulan register yang homogen, tetapi jika dilihat lebih dekat, setiap register dioptimalkan tergantung pada fungsinya. Beberapa di antaranya adalah register 16-bit sederhana dan terletak paling rapat. Register 16-bit lainnya dapat diakses sebagai dua register 8-bit, yang membutuhkan bus kontrol lain. Register paling kompleks memiliki dua hingga tiga port untuk membaca dan satu atau dua untuk menulis. Dalam setiap kasus, implementasi fisik sel register dirancang dengan hati-hati untuk mengambil ruang sesedikit mungkin, dan oleh karena itu bentuk transistor seringkali rumit. Insinyur Intel menekan tata letak register sekencang mungkin agar sesuai dengan semuanya di ruang yang tersedia bagi mereka.



Register atas memiliki jumlah port yang berbeda untuk membaca dan menulis: dua register dengan 3 bus baca dan 2 tulis, satu register dengan 2 bus baca dan 2 tulis, empat register dengan 2 bus baca dan 1 tulis. Tiga register pertama mungkin adalah penghitung program, register sementara tidak langsung, dan register operan sementara. Empat yang terakhir kemungkinan adalah register segmen SS, DS, SS dan ES. Ada juga tiga register buffer prefetch instruksi, masing-masing dengan satu bus baca dan satu tulis.



Prosesor 8088 yang digunakan pada PC IBM asli hampir identik dengan 8086, kecuali bahwa ia memiliki bus eksternal 8-bit, bukan bus 16-bit, jadi sistemnya lebih murah. Ukuran buffer prefetch 8088 adalah 4 byte, bukan 6 - mungkin karena 4 byte sudah cukup untuk bus memori 8088 yang lebih lambat.



Berbeda dengan 8086, register prefetch 8088 mendukung penulisan independen ke bagian 8-bit (mirip dengan register A, B, C, dan D 8088, hanya sel-sel ini yang terlihat berbeda). Ini karena 8088 meminta perintah satu byte pada satu waktu, dan bukan satu kata pada satu waktu, karena bus sempit. Oleh karena itu, register prefetch harus mendukung penulisan byte, sedangkan 8086 mendukung prefetch kata.





File register atas terdiri dari sepuluh register 16-bit. Foto menunjukkan silikon dan polysilicon. Garis merah vertikal - sisa-sisa lapisan logam yang dihilangkan. Dapat diklik.



Kesimpulan



Meskipun prosesor 8086 berusia 42 tahun, namun tetap memiliki pengaruh yang signifikan pada komputer modern, karena arsitektur x86 masih sangat umum digunakan hingga saat ini. Register 8086 masih ada di komputer x86 modern, walaupun hari ini sudah 64 bit, dan selain register ini masih banyak lagi yang lainnya.



Kristal 8086 sangat menarik untuk dipelajari karena transistornya dapat dilihat di bawah mikroskop. Dulu itu adalah prosesor yang kompleks, dengan 29.000 transistor di atasnya, tetapi cukup sederhana untuk melacak semua sirkuit dan memahami cara kerjanya.



Lihat juga:






All Articles