Selasa, 27 Januari 2009

Andreas 13071271 tugas blog

TEORI MIKROPROSESOR 8088

I. MIKROPROSESOR 8088

Mikroprosesor 8088 mulai diperkenalkan oleh Intel Corporation pada tahun 1978. Mikroprosesor ini mengawali sejarah perkembangan mikroprosesor Intel selanjutnya, seperti 80186, 80286, 80386, 80486, Intel Pentium I, sampai yang sekarang Intel Pentium IV. Semua instruksi yang terdapat pada mikroprosesor 8088 sepenuhnya dapat dijalankan pada mikroprosesor-mikroprosesor Intel tersebut. Karena itu, untuk memahami perancangan hardware dan software pada PC sekarang, ada baiknya jika Anda lebih dahulu memahami perancangan hardware dan software pada mikroprosesor 8088 ini.

Mikroprosesor 8088 mempunyai 8 bit jalur data dan 20 bit jalur alamat. Jalur data memiliki pin yang sama dengan jalur alamat, artinya pada saat tertentu digunakan sebagai jalur data dan pada saat yang lain digunakan sebagai jalur alamat. Karena satu pin memiliki dua fungsi, yaitu sebagai jalur data dan jalur alamat maka digunakanlah sistem time multiplexing, yaitu penggunaan jalur yang sama untuk fungsi dan waktu yang berbeda, sehingga tidak bisa data dan alamat dikirim pada saat yang bersamaan. Mikroprosesor 8088 dibuat dalam bentuk IC dengan kaki sebanyak 40 pin (jenis DIP 40).

Ada dua mode yang dapat digunakan pada mikroprosesor 8088, yaitu mode minimum dan mode maksimum. Pena yang menjadi penentu penggunaan mode adalah pena MN/MX. Mode minimum biasanya digunakan untuk sistem yang sederhana yang umumnya menggunakan prosesor pada satu PCB. Sedangkan mode maksimum umumnya digunakan untuk sistem yang lebih kompleks yang menggunakan multi I/O dan memori yang terpisah serta dapat pula digunakan dengan co-prosesornya (co-prosesor untuk 8088 adalah 8087). Dalam homepage ini, penulis hanya akan menjelaskan perancangan pada mode minimum saja, karena umumnya cukup dengan mode minimum saja suatu alat pengontrol/kendali otomatis sudah dapat diwujudkan.

Mikroprosesor 8088 mampu mengalamati memori sampai 1 MB. Memori ini digunakan untuk menyimpan kode biner dari instruksi yang akan dijalankan oleh µP, selain itu memori juga digunakan untuk menyimpan data secara sementara. Dengan tambahan unit I/O memungkinkan µP 8088 untuk menerima data dari luar (operasi input) ataupun mengirim data keluar (operasi output).

II. Konfigurasi pena µP 8088

Gambar dibawah ini memperlihatkan diagram pewaktuan yang menunjukkan siklus baca tulis ketika terjadi operasi I/O dan Memori oleh µP. Seluruh penjelasan tentang pena-pena pada mikroprosesor 8088 ini akan selalu mengacu pada diagram pewaktuan tersebut.

Pena pada µP 8088 ada yang tidak dipengaruhi oleh perubahan mode baik mode maksimum ataupun mode minimum dan ada pula pena yang berfungsi hanya pada saat mode maksimum.

Pena yang tidak dipengaruhi oleh perubahan mode baik mode maksimum ataupun mode minimum, diantaranya adalah :

a. Bus alamat ( AD0-AD7, A8-A15, dan A16/S3-A19/S6). Mikroprosesor 8088 mempunyai 20 pin jalur alamat sehingga dapat menjangkau 220 ( 1 MB) lokasi memori. Pena-pena ini hanya berfungsi pada saat T1 (lihat diagram pewaktuan). Pada saat T2 sampai T4 ada sebagian pin yang berfungsi sebagai data dan juga sebagai status.

b. Bus data ( AD0-AD7). Mikroprosesor 8088 mempunyai jalur data sebanyak 8 pin dan bisa digunakan secara biderectional (dua arah). Pin-pin ini berfungsi sebagai jalur data hanya pada saat T2-T4. Pada saat T1 berfungsi sebagai jalur alamat.

c. Kontrol baca (RD). Sinyal ini aktif rendah. Jika pena ini berlogic nol berarti µP sedang melaksakan pembacaan data. Sinyal ini aktif dipertengahan T2 dan kembali tidak aktif dipertengahan T4.

d. Clock (CLK). Yaitu masukan sinyal detak yang diberikan dari luar untuk mensinkronkan segala kegiatan pada µP. Miroprosesor 8088 dapat bekerja pada frekuensi clock 4,77 MHz atau 8 MHz untuk versi turbo.

e. Kontrol waktu tunggu (READY). Sinyal READY ini disampel pada sisi naik T2. Jika sinyal READY ini berlogic 0 berarti akan disisipkan TW/Twait antara T3 dan T4. Hal ini terus diulangi sampai sinyal READY diberi logika 1. Sinyal ini biasanya digunakan jika ada hardware lain yang memiliki kecepatan lebih lambat dari kecepatan µP ketika sedang bekerja dalam keadaan normal.

f. Reset sistem (RESET). Sinyal ini aktif tinggi. Bila logika 1 diberikan pada pena ini, mikroprosesor akan menghentikan segala kegiatan yang sedang terjadi saat itu. Semua register akan dibuat 0 kecuali register code segment dibuat FFFF0H (akan dijelaskan pada penjelasan mengenai segment register ).

g. Interupsi (INTR dan NMI). INTR dan NMI (Non Maskable Interrupt) adalah permintaan interupsi yang dipanggil secara hardware. Sinyal INTR merupakan sinyal aktif tinggi, sedangkan NMI dapat aktif menggunakan trigger sisi naik dari sinyal clock. INTR tidak akan berfungsi jika interupsi flag dikosongkan (menggunakan instruksi CLI ), sedangkan NMI tidak dapat dihalangi dengan instruksi CLI.

h. Kontrol tunggu test (TEST). Untuk mengaktifkan sinyal TEST, digunakan instruksi WAIT. Jika pin ini berlogic 1 ketika µP sedang menjalankan instrruksi WAIT, CPU akan berada pada keadaan idle mode, artinya mikroprosesor tidak melakukan kegiatan apa-apa sebelum pin ini berlogic 0. Jika pin ini berlogic 0 kembali, maka pelaksanaan instruksi akan dilanjutkan.

i. Status (A16/S3-A19/S6). Sinyal status digunakan untuk mendeteksi suatu keadaan-keadaan atau operasi-operasi yang sedang berlangsung, diantaranya pengambilan instruksi, membaca memori, menulis memori, dan operasi-operasi yang lain. Sinyal ini dikeluarkan pada saat keadaan T2-T4. Definisi dari status S4 dan S3 adalah :

S4.. S3

Yang Dijangkau saat terjadi siklus bus

0.. ...0

Extra segment (ES)

0..... 1

Stack segment (SS)

1..... 0

Code segment (CS) atau tidak sama sekali

1..... 1

Data segment (DS)

j. Catu daya ( VCC dan GND). Mikroprosesor 8088 membutuhkan Vcc = +5 V yang masih bisa bertoleransi sebesar ± 10% dari +5 V.

Sinyal yang berfungsi hanya pada mode minimum ( mode maksimum tidak digunakan ) adalah :

a. Sinyal tulis (WR). Sinyal ini aktif rendah. Jika sinyal ini berlogic 0, berarti µP sedang melaksanakan operasi tulis data ke unit memori atau I/O. Sinyal ini aktif pada saat T2-T4.

b. Sinyal kontrol memori dan I/O ( IO/M ). Jika pena ini berlogic 0, berarti saat ini pada siklus bus sedang berlangsung operasi input/output. Jika pena ini berlogic 1, berarti saat ini pada siklus bus sedang berlangsung operasi memori.

c. Address Latch Enable (ALE). Sinyal ini digunakan sebagai penahan alamat yang baru masuk dalam suatu proses siklus mesin. Sinyal ini dapat digunakan untuk dimultipleks dengan alamat, data, dan status. Sinyal ini mengeluarkan logic 1 pada saat clock T1.

d. Pengiriman dan penerimaan data ( DT/R ). Jika sinyal ini berlogic 1, arah data adalah dari µP menuju keluar. Jika sinyal ini berlogic 0 maka arah data dari luar menuju µP.

e. Data Enable ( DEN ). Sinyal ini biasanya digunakan untuk meng"on"kan buffer (latch) yang dihubungkan kebus data.

f. Interrupt Acknowledge ( INTA ). Sinyal ini secara khusus digunakan sebagai tanggapan terhadap suatu instruksi INTR.

g. Hold Request ( HOLD). Bila logika 1 diberikan pada pena HOLD, µP akan menghentikan kegiatan dan melepas bus yang berhubungan dengan unit memori dan I/O, sehingga hal ini memberikan kesempatan bagi proses lain untuk mengambil alih sistem.

h. Hold Acknowledge (HLDA) Sinyal ini digunakan sebagai pengakuan dari µP bahwa sinyal HOLD telah diterima dan sistem dapat diambil alih oleh prosesor lain.

Sinyal yang berfungsi hanya pada saat mode maksimum adalah :

a. Status siklus bus ( S0, S1, S2 ). Sinyal ini merupakan keluaran yang akan diberikan oleh IC lain yang berfungsi sebagai bus kontroller .

b. Kunci ( LOCK ). Sinyal ini akan mengeluarkan logika 0 selama pelaksanaan instruksi LOCK sehingga akan mencegah prosedur lain menjangkau sistem.

c. Status antrian ( QS0, QS1). Sinyal ini akan memberitahu informasi apa yang telah dipindahkan dan informasi apa yang ada dalam antrian sewaktu terjadi siklus clock sebelumnya.

d. Local Bus Control ( RQ/ GT1 dan RQ/ GT0 ). Sinyal ini menggantikan fungsi HOLD dan HLDA pada mode minimum.

III. Arsitektur Internal µP 8088

Arsitektur internal µP 8088 dibagi menjadi dua bagian, yaitu BIU (Bus Interface Unit) dan EU (Execution Unit). BIU berfungsi untuk menjalankan operasi bus seperti menjemput instruksi, membaca data dan menulis ke memori, menerima input dan mengeluarkan output ke unit periferal. Dari BIU ini, dihasilkan bus data sebanyak 8 bit. Untuk menjalankan fungsinya, BIU memiliki register segment, register komunikasi internal, pointer instruksi, antrian kode objek instruksi, bus alamat, dan bus kontrol logika. EU berfungsi untuk menterjemahkan dan menjalankan instruksi.

Mikroprosesor 8088 mempunyai 4 kelompok register internal yaitu register penunjuk instruksi (indeks pointer register), register data (general purpose register), register segment (segment register), serta flag register.

Register Penunjuk Instruksi (Indeks Pointer Register).

Register Penunjuk instruksi merupakan register 16 bit yang berfungsi untuk menunjukkan lokasi instruksi berikutnya yang akan dijalankan. Register IP ini berpasangan dengan CS (code segment) dimana penulisannya adalah sebagai berikut [CS : IP]. Jadi lokasi alamat yang ditunjuk bergantung pada code segment yang terdapat pada segment register.

Register Data (General Purpose Register).

Register data pada µP 8088 dibagi menjadi 4 kelompok register yang semuanya berfungsi untuk penyimpanan data secara sementara. Keempat kelompok register ini adalah register AX, BX, CX. dan DX. Register AX, BX, CX, dan DX merupakan register data 16 bit. Register-register 16 bit dari kelompok ini mempunyai suatu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masing-masing bagian terdiri dari 8 bit, yaitu register data AH; AL (untuk AX), BH; BL (untuk BX), CH; CL (untuk CX), dan DH; DL (untuk DX). Akhiran H menunjukkan High dan akhiran L menunjukkan Low. Selain berfungsi sebagai penyimpan data serba guna yang dapat digunakan secara bebas oleh pemogram, register-register tersebut memiliki juga fungsi-fungsi lainnya secara khusus, yaitu : Register AX biasanya digunakan pada operasi aritmatika (perkalian dan pembagian), dan operasi I/O 16 bit. Register BX biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segment. Register CX biasanya digunakan untuk menunjukkan banyaknya looping yang akan terjadi. Register DX biasanya digunakan untuk menampung sisa hasil pembagian 16 bit serta pada operasi I/O secara tidak langsung (16 bit)

Register Penunjuk dan Register Indeks (Indeks and Pointer Register).

Mikroprosesor 8088 mempunyai dua buah register penunjuk (register SP dan BP) serta dua buah register indeks ( register SI dan DI). Data yang terdapat pada SP ( Stack Pointer) memungkinkan pemogram untuk menjangkau lokasi memori dari stack segment. Stack pointer yang berpasangan dengan stack segment (SS : SP) digunakan untuk menunjukkan alamat dari stack RAM (Random Access Memory). Stack RAM ini biasanya digunakan untuk menyimpan informasi yang berhubungan dengan operasi stack, seperti isi PC, alamat kembali (return address) pada instruksi CALL, dan akumulator. Penyimpanan informasi pada stack RAM menggunakan sistem LIFO (Last In First Out), artinya data yang terakhir dimasukkan (PUSH) merupakan data pertama yang akan diambil (POP). BP (Base Pointer) yang berpasangan dengan register stack segment (SS) digunakan untuk mencatat suatu alamat dimemori tempat data. Source Indeks (SI) dan Destination Indeks (DI) biasanya digunakan pada operasi string dengan mengakses secara langsung pada alamat dimemori yang ditunjukkan oleh kedua register ini .

Register Segment (Segment Register).

Mikroprosesor 8088 menghasilkan 20 bit alamat sehingga dapat menjangkau 1 MB lokasi memori ( 220 = 1048576 Byte atau disingkat 1 MB). Namun pada µP 8088 register yang tersedia hanya 16 bit ( 216 = 64 KB), sehingga untuk menjangkau alamat 1 MB, memori pada µP 8088 dibagi menjadi ruas-ruas 64 KB, sehingga setiap saat hanya ada 4 segment (ruas) yang dapat aktif. Segment-segment register ini adalah: Code Segment (CS), Data Segment (DS), Stack Segment (SS), dan Extra Segment (ES). Code segment digunakan untuk menyimpan program. Data segment digunakan untuk menyimpan data program. Extra segment digunakan untuk menyimpan segment data tambahan. Stack segment digunakan nuntuk menyimpan alamat kembalinya interupsi dan subrutin. Keempat register diatas menunjuk kelokasi masing-masing segment. Karena register segment hanya terdiri dari 16 bit, sedangkan memori yang dapat dijangkau sebanyak 20 bit, maka unit BIU ( Bus Interface Unit) akan menambah 4 bit lagi pada LSB. Sebagai contoh, jika register ES=2721H, maka register akan menunjuk kelokasi 27210H. Setiap segment hanya dapat menampung 64 KB lokasi memori, sehingga jika CS=A000H, maka lokasi memori untuk Code Segment dimulai dari A0000H sampai AFFFFH (64 KB).

Setiap kali catu daya dihidupkan, µP berada dalam keadaan sembarang dimana semua register berisi data yang tidak dapat diramalkan. Hal ini memungkinkan terjadinya pembacaan maupun penulisan lokasi memori yang acak pula. Karena itu semua register µP harus dibuat nol kecuali Code Segment register dibuat FFFF0H, sehingga µP akan menjemput instruksi yang berada pada alamat fisik FFFF0H. Jadi dengan memberikan sinyal RESET ketika pertama kali dihidupkan, µP akan selalu menjemput instruksi pada lokasi FFFF0H. Setelah menempatkan suatu instruksi pada lokasi tersebut, maka instruksi itu merupakan instruksi yang pertama kali dijalankan ketika µP dinyalakan atau ketika diberi sinyal RESET

Flag Register.

Flag register merupakan register 16 bit, namun pada µP 8088 yang digunakan hanya 12 bit, yaitu 9 bit untuk status dan 3 bit untuk kontrol. Diagram blok flag register adalah sebagai berikut :

X

X

X

X

OF

DF

IF

TF

SF

ZF

X

AF

X

PF

X

CF

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Fungsi masing-masing register tersebut adalah:

CF (Carry Flag)

jika berlogic 1 berarti terdapat carry atau borrow pada MSB (Most Significant Bit) yang terjadi selama operasi aritmatika. Jika berlogic 0 berarti tidak terdapat carry atau borrow.

PF (Parity Flag)

jika berlogic 1 berarti 8 bit terendah menghasilkan paritas genap dan jika manghasilkan paritas ganjil PF akan berlogic 0

AF (Auxillary Carry Flag)

jika berlogic 1 berarti terdapat carry pada bit ke 4 pada register AL dan bila tidak akan berlogic 0. Register ini biasanya digunakan pada operasi BCD, seperti perintah AAA. ZF (Zero Flag), jika berlogic 1 maka operasi aritmatika menghasikan sisa 0, jika berlogic 1 maka tidak menghasilkan 0

SF (Sign Flag)

jika digunakan bilangan bertanda bit ini akan bernilai 1. Sedangkan bila SF berlogic 0 berarti bilangan diperlakukan sebagai bilangan tidak bertanda. Bilangan bertanda dibagi menjadi bilangan positif (+) dan bilangan negatif (-). Pada bilangan bertanda, bit terakhir (bit ke-16) diperlakukan sebagai tanda (+) atau tanda(-). Jika bit terakhir tersebut bernilai 1 berarti bilangan tersebut negatif dan jika bit terakhir bernilai 0 berarti bilangan tersebut positif

TF (Trace Flag)

jika berlogic 1 berarti berada pada keadaan single step. Keadaan ini digunakan pada program Debug

IF (Interrupt Flag)

jika berlogic 1 berarti Maskable Interrupt Request dapat dilakukan. Jika berlogic 0 maka permintaan interupsi tidak dapat dipenuhi oleh CPU

OF (Over Flow Flag)

jika terjadi Over Flow pada operasi aritmatika, bit ini akan bernilai 1. Dan jika tidak terjadi Over Flow pada operasi aritmatika, bit ini akan bernilai 0

DF (Direction Flag)

jika berlogic 1 berarti pada instruksi string nilai register akan diturunkan secara otomatis dan jika berlogic 0 maka akan dinaikkan secara otomatis

X

Tidak digunakan

Alamat Relatif dan Alamat Absolut

Didalam suatu segment, alamat dimulai dari 0000H sampai FFFFH (64KB). Alamat ini disebut juga alamat relatif / offset. Sedangkan alamat absolut dari 0000H s/d FFFFH adalah 00000H s/d FFFFFH. Berikut kita lihat cara pengkonversian alamat relatif kealamat absolut. Pengkonversian dapat dilakukan dengan menggeser nilai segment sebanyak 4 bit kekiri dan kemudian dijumlahkan dengan nilai offset. Atau cara yang lebih sederhana adalah dengan mengalikan nilai segment dengan 2 pangkat 4 (10H) kemudian dijumlahkan dengan nilai offset. Cara ini dikembangkan dari besarnya selisih segment yang satu dengan yang berikutnya sebesar 2 pangkat 4 (10H). Lihatlah contoh dibawah ini:

Alamat relatif :

1357H : 2468H

1356H : 2478H

Pengkonversian :

13570H

13560H


2468H

2478H


__________+

__________+

Alamat absolut :

159D8H

159D8H

Pada kedua contoh diatas terlihat jelas alamat relatif 1357H : 2468H sebenarnya menunjukkan lokasi yang sama didalam memori (alamat absolutnya) dengan alamat relatif 1356H : 2478H yang disebabkan adanya overlapping.

Generator Clock Untuk Mikroprosesor 8088

Tidak seperti 8085, mikroprosesor 8088 tidak mempunyai pembangkit clock sendiri, ia harus diberi clock dari luar. Miroprosesor 8088 dapat bekerja pada frekuensi clock 4,77 MHz atau 8 MHz (untuk versi turbo). Mikroprosesor 8088 juga membutuhkan sinyal sinkronisasi reset terhadap clock. Untuk memenuhi persyaratan diatas, tersedia dipasaran IC yang telah dirancang sebagai generator clock yaitu IC 8284 (sekedar informasi tambahan, Anda dapat saja menggunakan pembangkit-pembangkit clock yang lain, asalkan sesuai dengan spesifikasi clock untuk 8088). Gambar dibawah ini memperlihatkan pena-pena dari IC 8284.

Arti pena-penanya adalah sebagai berikut:

Vcc

Catu daya + 5V

GND

Ground

X1&X2

Masukan untuk crystal eksternal

OSC

Keluaran osilator yang mempunyai frekuensi yang sama dengan frekuensi crystal

CLK

Sinyal clock untuk dikirimkan keµP.Sinyal ini mempunyai frekuensi 2/3 dari frekuensi crystal dengan siklus kerja 33%

PCLK

Sinyal ini mempunyai frekuensi ½ dari frekuensi yang dikeluarkan pena CLK, dan memiliki siklus kerja 50%

F/ C

Pena ini merupakan penentu referensi untuk clock. Jika pena ini berlogic 1, maka clock mendapat sumber dari pena EFI, sedangkan jika berlogic 0 mendapat sumber dari pena OSC

EFI

Masukan frekuensi eksternal yang digunakan untuk sebagai sumber clock

CSYNC

Sinkronisasi clock yang digunakan untuk sinkronisasi beberapa IC 8284. Jika menggunakan crystal pena ini dibuat 0

RES

Digunakan untuk sinyal menghasilkan reset

RESET

Digunakan menghasilkan sinyal reset untuk µP setelah disinkronisasi dahulu dengan RES dan CLK

READY

Sinyal ini berfungsi untuk memberitahukan µP bahwa unit I/O dan memori siap untuk mengirim atau menerima data

AEN1 dan RDY1

Sinyal ini digunakan untuk membangkitkan keadaan tunggu ke µP

AEN2 dan RDY2

Sama dengan pena AEN1 dan RDY1, sinyal ini digunakan untuk membangkitkan keadaan tunggu ke µP

ASYNC

Sinkronisasi untuk memilih tipe masukan yang diberikan pada IC 8284

Untuk membangkitkan sinyal clock pada IC 8284 ini ada 2 cara, cara pertama yaitu dengan memasang crystal pada masukan X1 dan X2 serta dengan memberikan logic 0 pada pena F/C. Cara yang kedua adalah dengan memberikan frekuensi eksternal pada pena EFI dan pena F/C dibuat 1.

Perancangan Sistem Minimum berbasis Mikroprosesor 8088

Home
Halaman Muka


Sajian Utama
Komunikasi
Komputer
Energi

Abstract

This issue is about " Minimum System Design " using Microprocessor 8088 for Monitoring System or Data Detection, which in further application this system can be expended for waste radioactive monitoring system, materials pollution detection system or Telemetry System.

In this issues the Microprocessor 8088 has been choused for data processing and here we will describes.

Intisari

Pada tulisan kali ini Penulis akan mengupas perancangan sistem minimum untuk sistem Monitoring atau sistem deteksi data, dimana dalam pengembangan aplikasi lebih lanjut dapat digunakan untuk monitoring limbah radioaktif dan deteksi bahan-bahan polutan atau bahan lainnya yang berbahaya, disamping itu sistem ini dapat digunakan untuk sistem Telemetri, tentunya dengan beberapa desain tambahan.

Pada sistem minimum ini akan digunakan komponen Mikroprosesor 8088 untuk pemroses datanya dan akan diuraikan secara teknis cara kerja dari Mikroprosesor 8088 baik dari segi "software" secara umum mulai dari transfer data,pengalamatan, eksekusi data dan lain sebagainya maupun segi hardware sebagai sebuah komponen serta unjuk kerja Mikroprosesor 8088 setelah dipadukan dalam suatu sistem.

Pendahuluan

Central Processing Unit (CPU) 8088

Mikroprosesor 8 bit yang dibuat dengan teknologi HMOS (High Performance Metal Oxide Semiconductor). Mikroprosesor 8088 memiliki sifat yang unik yaitu mampu mengakses lokasi memori sampai 1.024.576 byte (1 Mbyte), padahal instruksi-instruksinya hanya mengijinkan operasi dan manipulasi alamat 16-bit. Hal ini dimungkinkan karena mikroprosesor 8088 memiliki 4 segmen register 16-bit yang dapat digunakan untuk memanipulasi pengalamatan.

Prosesor 8088 dapat dioperasikan dalam 2 mode, yaitu mode minimum dan mode maksimum. Pada perancangan ini digunakan mode minimum dengan pertimbangan pada kesederhanaan dan hanya 1 (satu) prosesor yang dioperasikan. Gambar – 1 menunjukan arsitektur internal 8088, yang (Korespondensi adalah staff Peneliti dari Puslitbang TELKOMA-LIPI , Jl.Cisitu No.21/154D Bandung 40135)

berdasarkan fungsi-nya dibagi dalam 2 (dua) unit yaitu : Bus Interface Unit (BIU) dan Execution Unit (EU).

  • Bus Interface Unit (BIU), berfungsi menangani seluruh transfer data dan alamat untuk bagian eksekusi, mulai dari mengirim alamat, mengambil instruksi dari memori, membaca data dari memori atau port dan menuliskan data ke port atau memori.
  • Execution Unit (EU), berfungsi memberitahu Bus Interface Unit (BIU) dimana data dan instruksi harus diambil, men-dekode instruksi dan mengeksekusi instruksi.

Gambar – 1 : Blok Diagram CPU 8088.

Register CPU 8088.

Pada CPU 8088 ini memiliki 14 register 16-bit. Adapun register-register tersebut diklasifikasikan dalam :

  • Register Data, terdiri atas 4 register.
  • Register Index dan Pointer, terdiri atas 4 register.
  • 4 Segment Register.
  • Instruction Pointer dan Sebuah Register Flag.

Register data terdiri atas : AH, AL, BH, BL, CH, CL, DH dan DL yang mana register-register tersebut digunakan untuk menyimpan data 8-bit atau secara berpasangan dipakai untuk menyinpan data 16-bit. Bentuk pasangan yang diijinkan dalam register data adalah :

  • AH dan AL membentuk AX, sebagai Accumulator untuk menyimpan salah satu nilai yang akan dioperasikan oleh Arithmatic Logic Unit (ALU) dan tempat menerima hasil operasi tersebut.
  • BH dan BL membentuk BX, sebagai Base Register dalam pengalamatan.
  • CH dan CL membentuk CX, digunakan untuk pencacah pada instruksi tertentu.
  • DH dan DL membentuk DX, untuk menyimpan alamat I/O bila CPU mengakses peralatan I/O.

Register segmen terdiri atas 4 register 16-bit, yaitu : register CS (Code Segment), DS (Data Segment), SS (Stack Segment) dan ES (Extra Segment). Penggunaan regsiter segmen ini memiliki beberapa keuntungan, yaitu :

  • Mampu mengakses memori hingga 1 Mbyte meskipun instruksinya hanya mengijinkan operasi 16-bit.
  • Dengan menggunakan lebih dari 1 segmen kode, data dan stack memungkinkan panjang program, data dan stack lebih dari 64 Kbyte.
  • Memberi fasilitas penggunaan ruang memori yang terpisah antara program, data dan stack.

Pada gambar – 2 dibawah ini ditunjukkan pengorganisasian memori pada CPU 8088.

Sistem Pewaktu Pada CPU 8088.

Pada sistem mikroprosesor 8088, panjang 1 siklus bus ada 4 pulsa clock, yaitu : T1, T2, T3 dan T4. Bila ada sinyal tunggu panjang 1 siklus bus tersebut ditambahkan sejumlah pulsa clock yang diberi notasi Tw. Dimana Tw tersebut letaknya disisipkan diantara T3 dan T4, bila peralatan I/O atau memori kurang cepat dalam merespon perpindahan data.

Gambar – 2 : Organisasi Memori CPU 8088.

Universal Synchronous/Asynchronous Receiver Transceiver (USART) 8251.

Secara internal USART 8251 terdiri dari 7 blok, yang masing-masing fungsinya dapat dilihat pada gambar – 3, adalah :

  • Data Bus Buffer : menyimpan data paralel 8-bit yang akan dikeluarkan ke jalur data, maupun yang diterima dari jalur data.
  • Read/Write Logic : berfungsi untuk mengendalikan perpindahan data dan command status, sehingga memungkinkan data dapat dibaca maupun ditulis pada lokasi dan waktu yang tepat. Pada blok ini terdapat pin CS yang mengaktifkan 8251 dengan memberikan logika ‘0’. Sedangkan frekwensi CLK-nya 30 x bit rate pengiriman data.
  • Modem Control : merupakan perantara hubungan dari USART 8251 dengan Modem. Pada blok ini terdapat pin RTS yang dipakai untuk ‘handshaking’.
  • Receiver Buffer (S-P) & Receiver Control : bagian ini saling bekerja sama dalam menerima data serial. Receiver buffer akan mengubah data serial menjadi paralel agar dapat dibaca oleh CPU, sedangkan receiver control memantau status dari receiver buffer. Pada blok ini terdapat RxC, pada modus transmisi sinkron nilai baud rate-nya sama dengan frekwensinya.

SYNDET yang mempunyai dua fungsi adalah :

  • Pada mode asinkron, bila jalur input data RxD berada pada keadaan ‘0’ selama lebih dari 2 waktu karakter, pin ini akan ‘high’.
  • Pada mode sinkron, pin ini akan ‘high’ bila 8251 mendeteksi adanya karakter sinkronisasi pada deret bit data.
  • Transmitter Buffer (P-S) & Transmitter Control : bagian ini saling bekerja sama dalam mentransmisikan data serial. Transmitter buffer berfungsi menerima data dari CPU kemudian secara otomatis pada data ditambahkan bit start, bit paritas dan bit stop sesuai dengan mode word yang diberikan, sedangkan transmitter control memantau status dari transmitter buffer. Pada blok ini terdapat TxC, pada modus transmisi asinkron nilai baud rate-nya sama dengan frekwensinya.

Gambar - 3 : Blok Diagram USART 8251.

Programmable Interval Timer (PIT) 8253.

PIT 8253 berfungsi untuk mengimplementasikan pewaktu/pencacah pada sistem mikrokomputer. Pada gambar – 4 nampak satu pin PIT 8253 terdapat tiga buah pencacah 16-bit yang saling terpisah, yang masing-masing mampu mencacah hingga frekwensi 2.6 MHz. PIT 8253 terdiri atas 4 blok yang fungsi masing-masing bagian adalah :

  • Data Bus Buffer : mempunyai 3 fungsi utama, yaitu :
  1. Untuk memprogram mode dari PIT 8253.
  2. Untuk memberikan nilai awal cacahan pada register pencacah.
  3. Untuk membaca nilai cacahan.
  • Read/Write Logic : berfungsi membangkitkan sinyal kontrol untuk mengendalikan seluruh operasi PIT 8253, termasuk pembacaan atau penulisan pada register pencacah.
  • Control Word Register : berisi informasi yang dikirim sistem prosesor untuk mengidentifikasi operasi PIT 8253 yang diinginkan, juga digunakan untuk memilih pencacah, mode operasi dan jenis pencacah.
  • Counter 0, 1 dan 2 : bagian ini pencacahan dilaksanakan, yang mana ketiga counter tersebut identik dan bebas satu dengan yang lainnya. Tiap-tiap pencacah dapat dioperasikan pada mode yang berlainan.

Gambar – 4 : Blok Diagram PIT 8253.

Programmable Peripheral Interface (PPI) 8255.

PPI 8255 ini melakukan fungsi interface (fungsi I/O) dalam sistem mikroprosesor. Pada gambar – 5 ini ditunjukkan diagram blok dari PPI 8255. PPI 8255 terbagi atas 3 buah port, yaitu : Port A, Port B dan Port C, juga dilengkapi pula dengan Data Bus Buffer serta Read/Write Control Logic. Fungsi dari Control Logic disini untuk menyimpan kombinasi bit yang mengkodekan mode kerja dari PPI 8255. Sedangkan input CS digunakan untuk memungkinkan pembacaan atau penulisan data dan dihubungkan dengan rangkaian dekoder untuk memilih perangkat bila dikehendaki.

Gambar – 5 : Diagram Blok PPI 8255.

Cara Kerja

Central Processing Unit (CPU) 8088

Pada mikroprosesor 8088 ini untuk bekerjanya memerlukan clock. Dimana clock tersebut dipergunakan untuk mensinkronisasi semua operasi didalam mikroprosesor. Pada perancangan ini dipergunakan IC 8284 yang memang diaplikasi pada CPU 8088. Sebagai sumber frekwensinya dipergunakan kristal 14.318 MHz. Untuk dapat bekerja secara optimum duty cycle yang diisyaratkan oleh CPU 8088 adalah 33%.

Pemrograman USART 8251.

Sebelum melaksanakan fungsinya USART 8251 harus diinisialisasi terlebih dahulu. Yang mana inisialisasi tersebut dilakukan oleh CPU 8088 dengan jalan mengirimkan control word ke alamat control register. Operasi pada USART 8251 ditentukan oleh nilai yang diberikan pada bit-bit control word. Dimana format control word dibagi dalam 2 jenis, yaitu :

  1. Mode Instruction, dibagi menjadi 2 macam, yaitu :
  • Mode Instruction untuk operasi Asinkron.
  • Mode Instruction untuk operasi Sinkron.

Mode ini untuk mendefinisikan karakteristik operasi secara umum USART 8251, dan hanya cukup ditulis sekali saja pada setiap kali selesai operasi reset.

  1. Command Instruction.

Pada command instruction dapat ditulis berkali-kali sesuai dengan keperluan.
Mengontrol operasi dan format mode instruction yang dipilih

Adapun urutan program dari control word dapat dilihat pada gambar – 6.

MODE INSTRUCTION

Gambar – 6 : Urutan Pemrograman USART 8251.

Pemrograman PIT 8253.

Untuk mengoperasikan PIT 8253, terlebih dahulu dilakukan inisialisasi. Yang mana inisialisasi dilakukan oleh CPU 8088 dengan cara mengirimkan control word ke control word register. Control word akan mendefinisikan modus kerja. pencacah, urutan pemberian nilai, urutan pembacaan dan jenis cacahan. Pada tabel – 1 terlihat format control word dari PIT 8253. Dan pada tabel – 2 menunjukkan pemiliham pencacah.

Tabel – 1 : Format Control Word PIT 8253.

D7

D6

D5

D4

D3

D2

D1

D0

SC1

SC0

RL1

RL0

M2

M1

M0

BCD

Tabel – 2 : Pemilihan Pencacah PIT 8253.

SC1

SC0

DEFINISI

0

0

Pilih Pencacah 0

0

1

Pilih Pencacah 1

1

0

Pilih Pencacah 2

1

1

Tidak boleh

Pemrograman PPI 8255.

PPI 8255 terbagi atas 3 buah port, yaitu : Port A, Port B dan Port C, dan sebuah Control Word Register yang masing-masing terdiri atas 8-bit dan dapat diatur melalui software untuk melaksanakan fungsi output dan input. Pada tebel – 3 ditunjukkan salah satu cara untuk menentukan bit control word dari PPI 8255.

Tabel – 3 : Control Word PPI 8255.

D7

D6

D5

D4

D3

D2

D1

D0

1

0

0

1

0

0

0

0

Kesimpulan

  • Sistem minimum merupakan sistem pengolah data yang sederhana karena hanya menggunakan 1 buah Mikroprosesor yang dioperasikan, sistem minimum ini bila dipadukan dengan sistem RF Transmitter dapat digunakan untuk sistem monitoring data dengan jarak jangkauan yang cukup jauh (Telemetri ).
  • Mikroprosesor 8088 mempunyai fungsi yang cukup beragam pada aplikasi-aplikasi rangkaiannya dan relatif mudah serta murah untuk direalisasikan dalam sebuah sistem yang dirancang sesuai keinginan.

Register prosesor, dalam arsitektur komputer, adalah sejumlah kecil memori komputer yang bekerja dengan kecepatan sangat tinggi yang digunakan untuk melakukan eksekusi terhadap program-program komputer dengan menyediakan akses yang cepat terhadap nilai-nilai yang umum digunakan. Umumnya nilai-nilai yang umum digunakan adalah nilai yang sedang dieksekusi dalam waktu tertentu.

Register prosesor berdiri pada tingkat tertinggi dalam hierarki memori: ini berarti bahwa kecepatannya adalah yang paling cepat; kapasitasnya adalah paling kecil; dan harga tiap bitnya adalah paling tinggi. Register juga digunakan sebagai cara yang paling cepat dalam sistem komputer untuk melakukan manipulasi data. Register umumnya diukur dengan satuan bit yang dapat ditampung olehnya, seperti "register 8-bit", "register 16-bit", "register 32-bit", atau "register 64-bit" dan lain-lain.

Istilah register saat ini dapat merujuk kepada kumpulan register yang dapat diindeks secara langsung untuk melakukan input/output terhadap sebuah instruksi yang didefinisikan oleh set instruksi. untuk istilah ini, digunakanlah kata "Register Arsitektur". Sebagai contoh set instruksi Intel x86 mendefinisikan sekumpulan delapan buah register dengan ukuran 32-bit, tapi CPU yang mengimplementasikan set instruksi x86 dapat mengandung lebih dari delapan register 32-bit.

Register terbagi menjadi beberapa kelas:

  • Register data, yang digunakan untuk menyimpan angka-angka dalam bilangan bulat (integer).
  • Register alamat, yang digunakan untuk menyimpan alamat-alamat memori dan juga untuk mengakses memori.
  • Register general purpose, yang dapat digunakan untuk menyimpan angka dan alamat secara sekaligus.
  • Register floating-point, yang digunakan untuk menyimpan angka-angka bilangan titik mengambang (floating-point).
  • Register konstanta (constant register), yang digunakan untuk menyimpan angka-angka tetap yang hanya dapat dibaca (bersifat read-only), semacam phi, null, true, false dan lainnya.
  • Register vektor, yang digunakan untuk menyimpan hasil pemrosesan vektor yang dilakukan oleh prosesor SIMD.
  • Register special purpose yang dapat digunakan untuk menyimpan data internal prosesor, seperti halnya instruction pointer, stack pointer, dan status register.
  • Register yang spesifik terhadap model mesin (machine-specific register), dalam beberapa arsitektur tertentu, digunakan untuk menyimpan data atau pengaturan yang berkaitan dengan prosesor itu sendiri. Karena arti dari setiap register langsung dimasukkan ke dalam desain prosesor tertentu saja, mungkin register jenis ini tidak menjadi standar antara generasi prosesor.

Tabel berikit berisi ukuran register dan padanan prosesornya

Register

Prosesor

4-bit

Intel 4004

8-bit

Intel 8080

16-bit

Intel 8086, Intel 8088, Intel 80286

32-bit

Intel 80386DX, Intel 80486, Intel Pentium, Intel Pentium Pro, Intel Pentium II, Intel Pentium III, Intel Pentium 4, Intel Celeron, Intel Xeon, AMD K5, AMD K6, AMD Athlon, AMD Athlon MP, AMD Athlon XP, AMD Athlon 4, AMD Duron, AMD Sempron

64-bit

Intel Itanium, Intel Itanium 2, Intel Xeon, Intel Core, Intel Core 2, AMD Athlon 64, AMD Athlon X2, AMD Athlon FX, AMD Turion 64, AMD Turion X2, AMD Sempron

RAM

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

Langsung ke: navigasi, cari

Memori akses acak (bahasa Inggris: Random access memory, RAM) adalah sebuah tipe penyimpanan komputer yang isinya dapat diakses dalam waktu yang tetap tidak memperdulikan letak data tersebut dalam memori. Ini berlawanan dengan alat memori urut, seperti tape magnetik, disk dan drum, di mana gerakan mekanikal dari media penyimpanan memaksa komputer untuk mengakses data secara berurutan.

Pertama kali dikenal pada tahun 60'an. Hanya saja saat itu memori semikonduktor belumlah populer karena harganya yang sangat mahal. Saat itu lebih lazim untuk menggunakan memori utama magnetic.

Perusahaan semikonduktor seperti Intel memulai debutnya dengan memproduksi RAM , lebih tepatnya jenis DRAM.

Biasanya RAM dapat ditulis dan dibaca, berlawanan dengan memori-baca-saja (read-only-memory, ROM), RAM biasanya digunakan untuk penyimpanan primer (memori utama) dalam komputer untuk digunakan dan mengubah informasi secara aktif, meskipun beberapa alat menggunakan beberapa jenis RAM untuk menyediakan penyimpanan sekunder jangka-panjang.

Tetapi ada juga yang berpendapat bahwa ROM merupakan jenis lain dari RAM, karena sifatnya yang sebenarnya juga Random Access seperti halnya SRAM ataupun DRAM. Hanya saja memang proses penulisan pada ROM membutuhkan proses khusus yang tidak semudah dan fleksibel seperti halnya pada SRAM atau DRAM. Selain itu beberapa bagian dari space addres RAM ( memori utama ) dari sebuah sistem yang dipetakan kedalam satu atau dua chip ROM.

Perangkat keras/Memori ROM dan RAM

Dari Wikibooks Indonesia, sumber buku teks bebas berbahasa Indonesia

< Perangkat keras

Langsung ke: navigasi, cari

Memori dan RAM memori berfumgsi sebagai penyimpan data. menori terdri dari berbagai tipe yang tercepat aksesnya sampai yang lambat.

  • Tercepat: Chace Memory dan Main Memory
  • Terlambat: Sekunder Memory

Selain menyatakan hubungan kecepatan, hirarki tersebut juga menyatakan hubungan – hubungan lain, yaitu :

  • Hubungan Harga : Semakin kebawah adalah harganya semakin murah. (Harga dihitung berdasarkan rupiah per bit data disimpan).
  • Hubungan Kapasitas : Semakin keatas umumnya kapasitasnya semakin terbatas.
  • Hubungan frekuensi pengaksesan : Semakin keatas semakin tinggi frekuensi pengaksesan.

Setiap kali pemroses melakukan eksekusi, pemroses harus membaca instruksi dari memori utama. Agar intruksi dapat dilakukan secara cepat maka harus diusahakan instruksi tersedia di memori pada hirarki berkecepatan akses lebih tinggi. Kecepatan eksekusi ini akan meningkatkan kinerja system. Untuk itu terdapat konsep memori dua level, yaitu ditampung dulu sementara di memori pada hirarki lebih tinggi.

Manajemen memori DOS

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

Langsung ke: navigasi, cari

Artikel bertopik teknologi informasi ini perlu dirapikan agar memenuhi standar Wikipedia
Merapikan artikel bisa berupa membagi artikel ke dalam paragraf atau wikifikasi artikel. Setelah dirapikan, tolong hapus pesan ini.

MS-DOS merupakan sebuah sistem operasi yang berjalan di dalam modus real dari prosesor Intel x86. Dalam modus real, hanya 20-bit pertama dari bus alamat yang akan digunakan oleh sistem operasi untuk mengakses memori, sehingga menjadikan jumlah memori yang dapat diakses hanya mencapai 220=1048576 bytes (1 MB) saja, dari yang seharusnya 32-bit/40-bit pada prosesor-prosesor modern.

Daftar isi

[sembunyikan]

Jenis-jenis ruang alamat memori MS-DOS


Ruang alamat memori dalam sistem operasi DOS

DOS akan membagi area memori yang hanya 1 MB tersebut menjadi dua buah ruang alamat, yakni sebagai berikut:

  • Conventional Memory (memori konvensional)
  • Upper Memory, atau Upper Memory Block, atau High Memory

Jika manajer memori diinstalasikan di dalam CONFIG.SYS (sebagai contoh, saat HIMEM.SYS dan EMM386.EXE diinstalasikan), maka jumlah ruang alamat pun dapat bertambah. Selain duajenis di atas, DOS juga menawarkan dua jenis memori lagi, yakni:

  • Extended Memory
  • Expanded Memory

[sunting] Conventional Memory

Ruang alamat ini merupakan ruang alamat yang digunakan oleh program agar dapat dieksekusi. Ukurannya hanya 640 Kilobytes saja, yang diambil dari ruang alamat 1 MB pertama. Semua program komputer yang berjalan (baik itu berjalan di latar depan atau latar belakang) menggunakan ruang area ini.

Upper Memory

Upper memory adalah ruang alamat yang dapat digunakan untuk tujuan khusus, seperti halnya untuk mengatur memori video. Ukurannya adalah sisa dari 1 MB memori pertama yang tidak digunakan oleh conventional memory, yakni 384 KB.

Extended Memory

Extended memory adalah memori tambahan setelah 1 Megabyte pertama di mana kombinasi antara upper memory block dan conventional memory berakhir. Pengguna dapat menambahkan banyak memori ke sebuah komputer, tapi MS-DOS tidak akan menggunakannya, kecuali beberapa program yang didesain agar dapat mengakses ruang alamat Extended memory, seperti Windows.

Extended memory membutuhkan sebuah driver untuk dapat digunakan, yang disebut sebagai Extended Memory Manager, seperti halnya HIMEM.SYS. Manajer-manajer memori tersebut akan mengatur ruang alamat memori ini agar dapat digunakan oleh aplikasi yang membutuhkannya, selain tentunya mencegah agar dua aplikasi tidak menggunakan alamat memori yang sama pada satu waktu (yang dapat menyebabkan terjadinya crash/tabrakan antara dua aplikasi).

Expanded Memory

Expanded Memory merupakan sebuah jenis memori yang, seperti halnya Extended memory, dapat ditambahkan ke dalam komputer IBM PC. Penggunaanya didefinisikan di dalam spesifikasi EMS (Expanded Memory Specification). Perbedaannya terletak pada ukurannya, di mana Expanded Memory dibatasi ukurannya hingga 8 MB saja (spesifikasi EMS versi 3.2) atau 32 MB (Spesifikasi EMS versi 4.0).

Sama seperti halnya Extended memory yang tidak dapat diakses oleh program DOS. Agar dapat diakses, sebuah perangkat mutlak dibutuhkan, yang disebut dengan Expanded Memory Manager seperti halnya EMM386.EXE, yang dapat memetakan beberapa blok (disebut sebagai page) dari expanded memory ke dalam frame yang berada di dalam conventional memory (yang tentunya dapat diakses).

Bagaimana DOS mengalamati memori

DOS mengalamati memori dengan sebuah cara yang disebut dengan segmentation (segmentasi). Dalam segmentasi, ruang alamat memori akan dibagi ke dalam beberapa bagian yang disebut dengan segmen. Untuk mengalamati sebuah lokasi yang diperlukan, sebuah program harus menentukan alamat mutlak (absolute address) dengan format xxxx:yyyy di mana xxxx adalah alamat segmen dan yyyy merupakan alamat offset (ofset merupakan alamat lokasi ke berapa dari segmen tersebut yang dimulai dari permulaan segmen). Kedua bilangan tersebut direpresentasikan dalam bilangan heksadesimal. Nilai absolute address dapat dihitung dengan menggunakan perhitungan sederhana: dengan melakukan pemangkatan dengan bilangan 16 (karena memang basis yang digunakan adalah basis 16/heksadesimal) dari segmen dan menjumlahkannya dengan alamat offset. Melakukan pemangkatan alamat segmen dapat dengan mudah dilakukan, yaitu dengan menambahkan angka 0 (nol) di samping angka segmen, sehingga yang tadinya hanya berjumlah empat digit akan bernilai lima digit. Hasil dari pemangkatan ini ditambahkan dengan alamat offset, dan jadilah alamat mutlak sebuah memori.

Karena dalam real mode, memori komputer hanya dapat diakses hingga 1 MB saja, maka alamat segmen pun dibuat sedemikian rupa. DOS akan membagi 1 MB alamat ke dalam 16 segmen berukuran 65536 bita (64K), yang diberi alamat dari 0x0000 hingga 0x10000. Memori konvensional dialamatkan oleh DOS pada alamat segmen 0x0000 hingga 0xA000 (10 segmen); Upper memory dialamatkan oleh DOS pada alamat segmen 0xA000 hingga 0x10000 (6 segmen). Beberapa segmen di dalam upper memory dialokasikan untuk beberapa keperluan (tapi tidak harus begitu), yakni segmen 0xA000 dan 0xB000 disediakan untuk Video Memory; segmen 0xC000 dan 0xD000 dialokasikan untuk pengendali cakram (seperti SCSI) dan beberapa kartu lainnya; sementara segmen 0xE000 dan 0xF000 dialokasikan untuk ROM BIOS. Alokasi segmen-segmen dalam upper memory tersebut hanyalah sebuah panduan umum, dan tidak berlaku dalam setiap kasus.

Intel 8088

From Wikipedia, the free encyclopedia

Jump to: navigation, search

Intel 8088
Central processing unit


An Intel 8088 microprocessor

Produced

From 1979 to 1990s

Common manufacturer(s)

Intel, AMD, and several others.

Max CPU clock

5 MHz to 10 MHz

Instruction set

x86-16

Package(s)

40 pin DIP

The Intel 8088 is an Intel x86 microprocessor based on the 8086, with 16-bit registers and an 8-bit external data bus. It can address up to 1 MB of memory. The 8088 was introduced on July 1, 1979, and was used in the original IBM PC.

The 8088 was targeted at economical systems by allowing the use of 8-bit designs. Large bus width circuit boards were still fairly expensive when it was released. The prefetch queue of the 8088 was shortened to four bytes (as opposed to the 8086's six bytes) and the prefetch algorithm slightly modified to adapt to the narrower bus.

Variants of the 8088 with more than 5 MHz maximum clock frequency include the 8088-2, which was fabricated using Intel's new enhanced nMOS process called HMOS, and specified for a maximum frequency of 8 MHz. Later followed the 80C88, a fully static CMOS design, which could operate from DC to 8 MHz. There were also several other, more or less similar, variants from other manufacturers. For instance, the NEC V20 was a pin compatible and slightly faster (at the same clock frequency) variant of the 8088, designed and manufactured by NEC.

Depending on the clock frequency, the number of memory wait states, as well as on the characteristics of the particular application program, the average performance for the Intel 8088 ranged from approximately 0.33 to 1 million instructions per second [1]. Meanwhile, the mov and ALU[1] reg,reg instructions taking 2 and 3 cycles respectively yielded an absolute peak performance of between 1/3 and 1/2 MIPS per MHz, that is, somewhere in the range 3–5 MIPS at 10 MHz.

Selection for use in the IBM PC

The original IBM PC was the most influential microcomputer to use the 8088. It used a clock frequency of 4.77 MHz (4/3 the NTSC colorburst frequency). Some of IBM's engineers and other employees wanted to use the IBM 801 processor, some preferred the new Motorola 68000,[2] while others argued for a small and simple microprocessor similar to what had been used in earlier personal computers.[3] However, IBM already had a history of using Intel chips in its products and had also acquired the rights to manufacture the 8086 family.[4] Another factor was that the 8088 allowed the computer to be based on a modified 8085 design, as it could easily interface with existing, and quite economical, 8085-type components.[5]

The descendants of the 8088 include the 80188, 80186, 80286, 80386, and later software compatible processors, which are in use today. See below for a more complete list.

See also

Notes and references

  1. ^ ALU stands for one of the instructions add,adc,sub,sbc,cmp,and,or,xor.
  2. ^ Later used for the IBM Instruments 9000 Laboratory Computer
  3. ^ There were some rumours that (the then small) Microsoft somehow managed to persuade IBM to use the 8088, because it had more and better 16-bit capabilities than most other "8-bit" CPUs.
  4. ^ In exchange for giving Intel the rights to its bubble memory designs. However, due to fierce competition from Japanese manufacturers who was able to undercut by cost, Intel soon left this market and changed focus to microprocessors
  5. ^ 68000 components were not widely available at the time, though it could use Motorola 6800 components to an extent.

[hide]

v d e

Intel processors



Discontinued

pre-8086

4004 · 4040 · 8008 · 8080 · 8085



x86 (16 bit)

8086 · 8088 · 80186 · 80188 · 80286



x86/IA32 (32 bit)

80386 · 80486 · Pentium · Pentium Pro · Pentium II · Pentium III · Pentium 4 · Pentium M · Core · Celeron M · Celeron D



x86-64/EM64T (64 bit)

Pentium 4 (Some) · Pentium D · Pentium Extreme Edition · Celeron D (Some)



Other

ItaniumiAPX 432RISC: i860 · i960 · XScaleMicrocontrollers: 8048 · 8051 · MCS-96



Current

Celeron · Pentium Dual-Core · Core 2 · A100 · Atom · Xeon · Itanium · Core i7



Upcoming

Tukwila · Tolapai · Moorestown · Core i5 (Lynnfield)



Lists

CPU slots / sockets · Chipsets · Microarchitectures · Processors · Codenames
Atom · Celeron · Core · Core 2 · Core i7 · Itanium · Pentium II · Pentium III · Pentium 4 · Pentium D · Pentium Dual-Core · Pentium M · Xeon
Future Celeron · Future Core 2 · Future Xeon



Microarchitectures

Past and present

P5 · P6 · NetBurst · Core · Nehalem



Future

Larrabee · Sandy Bridge · Haswell

Intel 8086

From Wikipedia, the free encyclopedia

Jump to: navigation, search


This article needs additional citations for verification. Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (December 2007)

Intel 8086
Central processing unit


Produced

From 1978 to 1990s

Common manufacturer(s)

Intel

Max CPU clock

5 MHz to 10 MHz

Instruction set

x86-16

Package(s)

40 pin DIP

The 8086[1] is a 16-bit microprocessor chip designed by Intel and introduced on the market in 1978, which gave rise to the x86 architecture. Intel 8088, released in 1979, was essentially the same chip, but with an external 8-bit data bus (allowing the use of cheaper and fewer supporting logic chips[2]), and is notable as the processor used in the original IBM PC.

Contents

[hide]

History

Background

In 1972, Intel launched the 8008, the first 8-bit microprocessor[3]. It implemented an instruction set designed by Datapoint corporation with programmable CRT terminals in mind, that also proved to be fairly general purpose. The device needed several additional ICs to produce a functional computer, in part due to its small 18-pin "memory-package", which ruled out the use of a separate address bus (Intel was primarily a DRAM manufacturer at the time).

Two years later, in 1974, Intel launched the 8080[4], employing the new 40-pin DIL packages originally developed for calculator ICs to enable a separate address bus. It had an extended instruction set that was source- (not binary-) compatible with the 8008 and also included some 16-bit instructions to make programming easier. The 8080 device, often described as the first truly useful microprocessor, was nonetheless soon replaced by the 8085 which could cope with a single 5V power supply instead of the three different operating voltages of earlier chips.[5] Other well known 8-bit microprocessors that emerged during these years were Motorola 6800 (1974), Microchip PIC16X (1975), MOS Technology 6502 (1975), Zilog Z80 (1976), and Motorola 6809 (1977), as well as others.

The first x86 design

The 8086 was originally intended as a temporary substitute for the ambitious iAPX 432 project in an attempt to draw attention from the less-delayed 16 and 32-bit processors of other manufacturers (such as Motorola, Zilog, and National Semiconductor) and at the same time to top the successful Z80 (designed by former Intel employees). Both the architecture and the physical chip were therefore developed quickly (in a little more than two years[6]), using the same basic microarchitecture elements and physical implementation techniques as employed by the older 8085, and for which it also functioned as its continuation. Marketed as source compatible, it was designed so that assembly language for the 8085, 8080, or 8008 could be automatically converted into equivalent (sub-optimal) 8086 source code, with little or no hand-editing. This was possible because the programming model and instruction set was (loosely) based on the 8085. However, the 8086 design was expanded to support full 16-bit processing, instead of the fairly basic 16-bit capabilities of the 8080/8085. New kinds of instructions were added as well; self-repeating operations and instructions to better support nested ALGOL-family languages such as Pascal, among others.

The 8086 was sequenced[7] using a mix of random logic and microcode and was implemented using depletion load nMOS circuitry with approximately 20,000 active transistors (29,000 counting all ROM and PLA sites). It was soon moved to a new refined nMOS manufacturing process called HMOS (for High performance MOS) that Intel originally developed for manufacturing of fast static RAM products[8]. This was followed by HMOS-II, HMOS-III, and eventually a CMOS version. The original chip measured 33 mm² and minimum feature size was 3.2 μm.

The architecture was defined by Stephen P. Morse and Bruce Ravenel. Peter A.Stoll was lead engineer of the development team and William Pohlman the manager. While less known than the 8088 chip, the legacy of the 8086 is enduring; references to it can still be found on most modern computers in the form of the Vendor ID entry for all Intel devices, which is 8086H (hexadecimal). It also lent its last two digits to Intel's later extended versions of the design, such as the 286 and the 386, all of which eventually became known as the x86 family.

[edit] Details

[edit] Buses and operation

All internal registers as well as internal and external data buses were 16 bits wide, firmly establishing the "16-bit microprocessor" identity of the 8086. A 20-bit external address bus gave an 1 MB (segmented) physical address space (220 = 1,048,576). The data bus was multiplexed with the address bus in order to fit a standard 40-pin dual in-line package. 16-bit I/O addresses meant 64 KB of separate I/O space (216 = 65,536). The maximum linear address space were limited to 64 KB, simply because internal registers were only 16 bits wide. Programming over 64 KB boundaries involved adjusting segment registers (see below) and were therefore fairly awkward (and remained so until the 80386).

Some of the control pins, which carry essential signals for all external operations, had more than one function depending upon whether the device was operated in "min" or "max" mode. The former were intended for small single processor systems whilst the latter were for medium or large systems, using more than one processor.

[edit] Registers and instructions

The 8086 had eight (more or less general) 16-bit registers including the stack pointer, but excluding the instruction pointer, flag register and segment registers. Four of them (AX,BX,CX,DX) could also be accessed as (twice as many) 8-bit registers (AH,AL,BH,BL, etc), the other four (BP,SI,DI,SP) were 16-bit only.

Due to a compact encoding inspired by 8085 and other 8-bit processors, most instructions were one-address or two-address operations which means that the result were stored in one of the operands. At most one of the operands could be in memory, but this memory operand could also be the destination, while the other operand, the source, could be either register or immediate. A single memory location could also often be used as both source and destination which, among other factors, further contributed to a code density comparable to (often better than) most eight bit machines.

Although the degree of generality of most registers were much greater than in the 8080 or 8085, it was still fairly low compared to the typical contemporary minicomputer, and registers were also sometimes used implicitly by instructions. While perfectly sensible for the assembly programmer, this complicated register allocation for compilers compared to more regular 16- and 32-bit processors (such as the PDP-11, VAX, 68000, etc); on the other hand, compared to contemporary 8-bit microprocessors (such as the 8085, or 6502), it was significantly easier to generate code for the 8086 design.

As mentioned above 8086 also featured 64 KB of 8-bit (or alternatively 32 K-word or 16-bit) I/O space. A 64 KB (one segment) stack growing towards lower addresses is supported by hardware; 2-byte words are pushed to the stack and the stack top (bottom) is pointed out by SS:SP. There are 256 interrupts, which can be invoked by both hardware and software. The interrupts can cascade, using the stack to store the return address.

The processor had some new instructions (not present in the 8085) to better support stack based high level programming languages such as Pascal and PL/M; some of the more useful ones were push mem-op, and ret size, supporting the "pascal calling convention". (Several others, such as push immed and enter, would be added in the subsequent 80186, 80286, and 80386 designs.)

[edit] Segmentation

There were also four sixteen-bit segment registers (CS, DS, SS, ES, standing for "code segment", "data segment", "stack segment" and "extra segment") that allowed the CPU to access one megabyte of memory in an unusual way. Rather than concatenating the segment register with the address register, as in most processors whose address space exceeded their register size, the 8086 shifted the segment register left 4 bits and added it to the offset address (physical address = 16·segment + offset), producing a 20-bit effective address from the 32-bit segment:offset pair. As a result, each physical address could be referred to by 212 = 4096 different segment:offset pairs. This scheme had the advantage that a small program (less than 64 kilobytes) could be loaded starting at a fixed offset (such as 0) in its own segment, avoiding the need for relocation, with at most 15 bytes of alignment waste. The 16-byte separation between segment bases was known as a "paragraph".

Compilers for the 8086 commonly supported two types of pointer, "near" and "far". Near pointers were 16-bit addresses implicitly associated with the program's code or data segment (and so made sense only in programs small enough to fit in one segment). Far pointers were 32-bit segment:offset pairs. C compilers also supported "huge" pointers, which were like far pointers except that pointer arithmetic on a huge pointer treated it as a flat 20-bit pointer, while pointer arithmetic on a far pointer wrapped around within its initial 64-kilobyte segment.

To avoid the need to specify "near" and "far" on every pointer and every function which took or returned a pointer, compilers also supported "memory models" which specified default pointer sizes. The "small", "compact", "medium", and "large" models covered every combination of near and far pointers for code and data. The "tiny" model was like "small" except that code and data shared one segment. The "huge" model was like "large" except that all pointers were huge instead of far by default. Precompiled libraries often came in several versions compiled for different memory models.

In principle the address space of the x86 series could have been extended in later processors by increasing the shift value, as long as applications obtained their segments from the operating system and did not make assumptions about the equivalence of different segment:offset pairs. In practice the use of "huge" pointers and similar mechanisms was widespread, and the shift value was never changed.

According to Morse et al, the designers of the 8086 considered using a shift of eight bits instead of four, which would have given the processor a 16-megabyte address space.[9].

[edit] Subsequent expansion

The 80286's protected mode extended the processor's address space to 224 bytes (16 megabytes), but not by increasing the shift value. Instead, the 16-bit segment registers supply an index into a table of 24-bit base addresses, to which the offset is added. To support old software the 80286 also had a "real mode" in which address calculation mimicked the 8086. There was, however, one small difference: on the 8086 the address was truncated to 20 bits, while on the 80286 it was not. Thus real-mode pointers could refer to addresses between 100000 and 10FFEF (hexadecimal). This roughly 64-kilobyte region of memory was known as the High Memory Area, and later versions of MS-DOS could use it to increase available low memory.

The 80386 increased both the base address and the offset to 32 bits and introduced two more general-purpose segment registers, FS and GS. The 80386 also introduced paging. The segment system can be used to enforce separation of unprivileged processes in a 32-bit operating system, but most operating systems using paging for this purpose instead, and set all segment registers to point to a segment with an offset of 0 and a length of 232, giving the application full access to its virtual address space through any segment register.

The x86-64 architecture drops most support for segmentation. The segment registers still exist, but the base addresses for CS, SS, DS, and ES are forced to 0, and the limit to 264.

In x86 versions of Microsoft Windows, the FS segment does not cover the entire address space. Instead it points to a small data structure, different for each thread, which contains information about exception handling, thread-local variables, and other per-thread state. The x86-64 architecture supports this technique by allowing a nonzero base address for FS and GS.

[edit] Porting older software

Small programs could ignore the segmentation and just use plain 16-bit addressing. This allowed 8-bit software to be quite easily ported to the 8086. The authors of MS-DOS took advantage of this by providing an Application Programming Interface very similar to CP/M as well as including the simple .com executable file format, identical to CP/M. This was important when the 8086 and MS-DOS was new, because it allowed many existing CP/M (and other) applications to be quickly made available, greatly easing the acceptance of the new platform.

[edit] Performance

Although partly shadowed by other design choices in this particular chip, the multiplexed bus limited performance slightly; transfers of 16-bit or 8-bit quantities were done in a four-clock memory access cycle.[10] As instructions varied from 1 to 6 bytes, fetch and execution were made concurrent (as it remains in today's x86 processors): The bus interface unit fed the instruction stream to the execution unit through a 6 byte prefetch queue (a form of loosely coupled pipelining), speeding up operations on registers and immediates, while memory operations unfortunately became slower (4 years later, this performance problem was fixed with the 80186 and 80286). However, the full (instead of partial) 16-bit architecture with a full width ALU meant that 16-bit arithmetic instructions could now be performed with a single ALU cycle (instead of two, via carry), speeding up such instructions considerably. Combined with orthogonalizations of operations versus operand-types and addressing modes, as well as other enhancements, this made the performance gain over the 8080 or 8085 fairly significant, despite cases where the older chips may be faster (see below).

Execution times for typical instructions (in clock cycles):

Timings are best case, depending on prefetch status, instruction alignment, and other factors.

MOV reg,reg: 2, reg,im: 4, reg,mem: 8+EA, mem,reg: 9+EA,  mem,im: 10+EA cycles
ALU reg,reg: 3, reg,im: 4, reg,mem: 9+EA, mem,reg: 16+EA, mem,im: 17+EA cycles
JMP reg: 11, JMP label: 15, Jcc label: 16 (cc = condition code)
MUL reg: 70..118 cycles
IDIV reg: 101..165 cycles

EA: time to compute effective address, ranging from 5 to 12 cycles.

As can be seen from these tables, operations on registers and immediates were fast (between 2 and 4 cycles), while memory-operand instructions and jumps were quite slow; jumps took more cycles than on the simple 8080 and 8085, and the 8088 (used in the IBM PC) was additionally hampered by its narrower bus. The reasons why most memory related instructions were slow were threefold:

  • Loosely coupled fetch and execution units are efficient for instruction prefetch, but not for jumps and random data access (without special measures).
  • Address calculations were performed by microcode routines without a dedicated adder (using the main ALU), although it had a separate segment + offset adder.
  • The address and data buses were multiplexed, forcing a slightly longer (33~50%) bus cycle than in typical contemporary 8-bit processors.

It should be noted, however, that memory access performance was drastically enhanced with Intel's next generation chips. The 80186 and 80286 both had address calculation in hardware, saving many cycles, and 80286 also had separate (non-multiplexed) address and data buses.

Floating point

The 8086/8088 could be connected to a mathematical coprocessor to add floating point capability. The Intel 8087 was the standard math coprocessor, operating on 80-bit numbers, but manufacturers like Weitek soon offered higher performance alternatives.

Chip versions

The clock frequency was originally limited to 5 MHz (IBM PC used 4.77 MHz, 4/3 the standard NTSC color burst frequency), but the last versions in HMOS were specified for 10 MHz. HMOS-III and CMOS versions were manufactured for a long time (at least a while into the 1990s) for embedded systems, although its successor, the 80186/80188, has been more popular for embedded use.

Derivatives and clones


Soviet clone KP1810BM86.


OKI M80C86A QFP-56

Compatible and, in many cases, enhanced versions were manufactured by Fujitsu, Harris/Intersil, OKI, Siemens AG, Texas Instruments, NEC, and AMD. For example, the NEC V20 and NEC V30 pair were hardware compatible with the 8088 and 8086, respectively, but incorporated the instruction set of the 80186 along with some (but not all) of the 80186 speed enhancements, providing an drop-in capability to upgrade both instruction set and processing speed without manufacturers having to modify their designs. Such relatively simple and low power 8086-compatible processors in CMOS are still used in embedded systems.

The electronics industry of the Soviet Union was able to replicate the 8086 through both industrial espionage and reverse engineering. The resulting chip, K1810BM86, was pin-compatible with the original Intel 8086 and had the same instruction set. This IC was the core of Soviet-made PC-compatible ES1840 and ES1841 desktops. However, in hardware these computers had significant differences from their authentic prototypes (respectively PC and PC/XT): the K1810BM86 was a copy from Intel 8086, not Intel 8088, and the data/address bus circuitry was designed independently of original Intel products.

Notable bugs

8086/8088 CPUs produced prior to 1982 had a severe interrupt bug. IBM provided an upgrade free of charge to affected PCs. Processors remaining with original 1979 markings are quite rare; they have become collectors' items.

Microcomputers using the 8086

  • One of the most influential microcomputers of all, the IBM PC, used the Intel 8088, a version of the 8086 with an eight-bit data bus (as mentioned above).
  • The first commercial microcomputer built on the basis of the 8086 was the Mycron 2000.
  • The IBM Displaywriter[citation needed] word processing machine and the Wang Professional Computer, manufactured by Wang Laboratories, also used the 8086. Also, this chip could be found in the AT&T 6300 PC (built by Olivetti).
  • The first Compaq Deskpro used an 8086 running at 7.14 MHz, but was capable of running add-in cards designed for the 4.77 MHz IBM PC XT.
  • The FLT86 is a well established training system for the 8086 CPU still being manufactured by Flite Electronics International Limited in Southampton, England
  • The IBM PS/2 models 25 and 30 were built with an 8MHz 8086
  • The Tandy 1000 SL-series machines used 8086 CPUs.

Notes and references

  1. ^ "Microprocessor Hall of Fame". Intel. Retrieved on 2007-08-11.
  2. ^ It also permitted cheap 8080-family chips to be used (such as the 8254 CTC, 8255 PIO, and 8259 PIC which were used in the IBM PC design). In addition, it made PCB layout simpler and boards cheaper, as well as demanding fewer (1 or 4-bit wide) DRAM chips.
  3. ^ using enhancement load pMOS logic
  4. ^ using enhancement load nMOS logic
  5. ^ made possible with depletion load nMOS logic (the 8085 was later made using HMOS processing, just like the 8086)
  6. ^ Two years from idea to product was considered fast for a complex design as almost no CAD-tools were used; four engineers and 12 layout people were simultaneously working on the chip.
  7. ^ 8086 used less microcode than many competitors designs, such as the MC68000 and others
  8. ^ Fast static RAMs in MOS technology (as fast as bipolar RAMs) was an important product for Intel during this period.
  9. ^ The designers actually contemplated using an 8-bit shift (instead of 4-bit), in order to create a 16 MB physical address space. However, as this would have forced segments to begin on 256 byte boundaries, and 1 MB was considered very large for a microprocessor around 1976, the idea was dismissed. Also, there were not enough pins available on a low-cost 40-pin package.Intel 8008 to 8086 by Stephen P. Morse et al
  10. ^ Faster on 16-bit, although slower on 8-bit quantities, compared to typical contemporary "8-bit" CPUs.

See also

External links

[hide]

v d e

Intel processors



Discontinued

pre-8086

4004 · 4040 · 8008 · 8080 · 8085



x86 (16 bit)

8086 · 8088 · 80186 · 80188 · 80286



x86/IA32 (32 bit)

80386 · 80486 · Pentium · Pentium Pro · Pentium II · Pentium III · Pentium 4 · Pentium M · Core · Celeron M · Celeron D



x86-64/EM64T (64 bit)

Pentium 4 (Some) · Pentium D · Pentium Extreme Edition · Celeron D (Some)



Other

ItaniumiAPX 432RISC: i860 · i960 · XScaleMicrocontrollers: 8048 · 8051 · MCS-96



Current

Celeron · Pentium Dual-Core · Core 2 · A100 · Atom · Xeon · Itanium · Core i7



Upcoming

Tukwila · Tolapai · Moorestown



Lists

CPU slots / sockets · Chipsets · Microarchitectures · Processors · Codenames
Atom · Celeron · Core · Core 2 · Core i7 · Itanium · Pentium II · Pentium III · Pentium 4 · Pentium D · Pentium Dual-Core · Pentium M · Xeon
Future Celeron · Future Core 2 · Future Xeon



Microarchitectures

Past and present

P5 · P6 · NetBurst · Core · Nehalem



Future

Larrabee · Sandy Bridge · Haswell