Intel 8086 - Intel 8086

Intel 8086
Intel C8086.jpg
Yandan lehimli pimlere sahip mor seramik DIP paketinde nadir bir Intel C8086 işlemci
Genel bilgi
başlatıldı 1978
Durdurulan 1998
Ortak üretici(ler)
Verim
Maks. CPU saat hızı 5 MHz ila 10 MHz
veri genişliği 16 bit
Adres genişliği 20 bit
Mimari ve sınıflandırma
Min. özellik boyutu 3 µm
Komut seti x86-16
Fiziksel Özellikler
transistörler
yardımcı işlemci Intel 8087 , Intel 8089
Paket(ler)
Soket(ler)
Ürünler, modeller, çeşitler
Varyant(lar)
Tarih
selefi Intel 8085
Varis 80186 ve 80286 (her ikisi de 1982 başlarında tanıtıldı)

8086 (aynı zamanda iAPX 86 ) a, 16-bit mikroişlemci tarafından tasarlanan çip Intel erken 1976 ve serbest, 8 Haziran 1978 arasındadır. Intel 8088 1 Temmuz 1979 yayımlanan, harici bir 8-bit ile biraz değiştirilmiş bir çip veri nakil birimi (daha ucuz ve daha az destek kullanımına izin veren IC ) ve orijinal olarak kullanılan işlemci olarak dikkate değerdir , IBM PC tasarımı.

8086 , sonunda Intel'in en başarılı işlemci serisi haline gelen x86 mimarisine yol açtı . 5 Haziran 2018'de Intel, Intel 8086'nın 40. yıl dönümünü kutlayan, Intel Core i7-8086K adlı sınırlı sayıda bir CPU'yu piyasaya sürdü .

Tarih

Arka plan

1972'de Intel , ilk 8-bit mikroişlemci olan 8008'i piyasaya sürdü . Datapoint şirketi tarafından programlanabilir CRT terminalleri düşünülerek tasarlanan ve oldukça genel amaçlı olduğu kanıtlanan bir talimat seti uyguladı . Cihazın işlevsel bir bilgisayar üretmek için birkaç ek IC'ye ihtiyacı vardı , bunun bir nedeni ayrı bir adres veriyolunun kullanımını engelleyen 18 pinli küçük bir "bellek paketi" içinde paketlenmesiydi (Intel, o zamanlar öncelikle bir DRAM üreticisiydi). ).

İki yıl sonra Intel , ayrı bir adres veriyolu sağlamak için hesap makinesi IC'leri için orijinal olarak geliştirilmiş yeni 40 pinli DIL paketlerini kullanan 8080'i piyasaya sürdü . 8008 ile kaynak uyumlu ( ikili uyumlu değil ) ve ayrıca programlamayı kolaylaştırmak için bazı 16 bitlik talimatlar içeren genişletilmiş bir talimat setine sahiptir . 8080 cihazı ileride yerini tükenmesi yük tabanlı 8085 yerine önceki fiş üç farklı çalışma gerilimlerin tek +5 V güç kaynağı ile de yeterli (1977). Bu yıllarda ortaya çıkan diğer iyi bilinen 8 bit mikroişlemciler Motorola 6800 (1974), General Instrument PIC16X (1975), MOS Technology 6502 (1975), Zilog Z80 (1976) ve Motorola 6809 (1978).

İlk x86 tasarımı

Intel 8086 CPU kalıp görüntüsü

8086 projesi Mayıs 1976'da başladı ve başlangıçta iddialı ve gecikmiş iAPX 432 projesinin geçici bir ikamesi olarak tasarlandı . Diğer üreticilerin ( Motorola , Zilog ve National Semiconductor gibi ) daha az gecikmeli 16 ve 32 bit işlemcilerinden dikkat çekme ve aynı zamanda Zilog Z80'den (eski tarafından tasarlanan) gelen tehdide karşı koyma girişimiydi. Intel çalışanları), çok başarılı oldu. Hem mimari hem de fiziksel çip bu nedenle küçük bir grup insan tarafından oldukça hızlı bir şekilde geliştirildi ve biraz daha eski 8085 için kullanılanla aynı temel mikro mimari öğeleri ve fiziksel uygulama teknikleri kullanılarak (ve 8086'nın da bir devamı olarak işlev görecekti) .

Kaynak uyumlu olarak pazarlanan 8086, 8008, 8080 veya 8085 için montaj dilinin çok az veya hiç el düzenlemesi olmadan otomatik olarak eşdeğer (optimal olmayan) 8086 kaynak koduna dönüştürülmesine izin verecek şekilde tasarlanmıştır . Bunu mümkün kılmak için programlama modeli ve komut seti (gevşek bir şekilde) 8080'e dayanmaktadır. Ancak, 8086 tasarımı tam 16 bit işlemeyi destekleyecek şekilde genişletildi.

Yeni talimat türleri de eklendi; İmzalı tamsayılar, taban+öteleme adresleme ve kendi kendini tekrar eden işlemler için tam destek, Z80 tasarımına benziyordu ancak tümü 8086'da biraz daha genel hale getirildi . Pascal ve PL/M gibi iç içe ALGOL ailesi dillerini doğrudan destekleyen yönergeler de vardı. katma. Baş mimar Stephen P. Morse'a göre bu, önceki Intel işlemcilerinin tasarımından daha yazılım merkezli bir yaklaşımın sonucuydu (tasarımcılar derleyici uygulamalarıyla çalışma deneyimine sahipti). Diğer geliştirmeler, mikro kodlu çarpma ve bölme talimatlarını ve gelecekteki yardımcı işlemcilere ( 8087 ve 8089 gibi ) ve çok işlemcili sistemlere daha iyi uyarlanmış bir veri yolu yapısını içeriyordu .

Komut setinin ve üst düzey mimarinin ilk revizyonu yaklaşık üç ay sonra hazırdı ve neredeyse hiçbir CAD aracı kullanılmadığı için dört mühendis ve 12 yerleşimci aynı anda çip üzerinde çalışıyordu. 8086, 1976-1978'de karmaşık bir tasarım için oldukça hızlı kabul edilen fikirden çalışan ürüne iki yıldan biraz fazla sürdü.

8086, rastgele mantık ve mikro kodun bir karışımı kullanılarak sıralandı ve yaklaşık 20.000 aktif transistörlü (tüm ROM ve PLA sitelerini sayan 29.000) tükenme yüklü nMOS devresi kullanılarak uygulandı . Kısa süre sonra Intel'in hızlı statik RAM ürünlerinin üretimi için geliştirdiği HMOS (Yüksek performanslı MOS için) adlı yeni bir rafine nMOS üretim sürecine taşındı . Bunu HMOS-II, HMOS-III sürümleri ve nihayetinde pille çalışan cihazlar için Intel'in CHMOS süreçleri kullanılarak üretilen tamamen statik bir CMOS sürümü izledi . Orijinal çip 33 mm² ölçüldü ve minimum özellik boyutu 3,2 μm idi.

Mimari, Stephen P. Morse tarafından Bruce Ravenel'in (8087'nin mimarı) son revizyonları iyileştirmede biraz yardımıyla tanımlandı . Mantık tasarımcısı Jim McKevitt ve John Bayliss, donanım düzeyindeki geliştirme ekibinin baş mühendisleriydi ve projenin yöneticisi Bill Pohlman idi. 8086'nın mirası, günümüzün kişisel bilgisayarlarının ve sunucularının temel komut setinde varlığını sürdürmektedir; 8086 ayrıca son iki rakamını tasarımın Intel 286 ve Intel 386 gibi daha sonraki genişletilmiş sürümlerine ödünç verdi ve bunların tümü sonunda x86 ailesi olarak tanındı . (Başka bir referans, Intel aygıtları için PCI Satıcı Kimliğinin 8086 h olduğudur .)

Detaylar

Min ve max modunda 8086 pin atamaları

Otobüsler ve operasyon

Tüm dahili kayıtların yanı sıra dahili ve harici veri yolları, 8086'nın "16 bit mikroişlemci" kimliğini sağlam bir şekilde oluşturan 16 bit genişliğindedir. 20 bitlik bir harici adres yolu, 1  MB'lik bir fiziksel adres alanı sağlar (2 20 = 1.048.576). Bu adres alanı, dahili bellek "segmentasyonu" aracılığıyla adreslenir. Veri yolu, tüm kontrol hatlarını standart bir 40 pinli ikili hat içi pakete sığdırmak için adres yolu ile çoğullanır . 64 KB'lık ayrı G/Ç alanını destekleyen 16 bitlik bir G/Ç adres yolu sağlar  . Maksimum doğrusal adres alanı 64 KB ile sınırlıdır, çünkü dahili adres/indeks kayıtları yalnızca 16 bit genişliğindedir. 64 KB bellek sınırlarının üzerinde programlama, segment kayıtlarının ayarlanmasını içerir (aşağıya bakın); kadar var bu güçlüğün 80386 (bellek yönetimi donanım mimarisi geniş (32-bit) kayıtlarını tanıtıldı 80286 onun kayıtlar genişliğinde hala sadece 16 bit olarak, bu konuda yardım etmedi).

Donanım modları

Tüm harici işlemler için gerekli sinyalleri taşıyan bazı kontrol pinleri, cihazın min veya max modda çalıştırılmasına bağlı olarak birden fazla fonksiyona sahiptir . İlk mod, küçük tek işlemcili sistemler için tasarlanmıştır, ikincisi ise birden fazla işlemci kullanan orta veya büyük sistemler içindir (bir tür çok işlemcili mod). 8087 veya 8089 yardımcı işlemci kullanırken maksimum mod gereklidir. Pim 33 (MN/ MX ) üzerindeki voltaj modu belirler. Pim 33'ün durumunun değiştirilmesi, çoğu CPU'nun (yerel) veri yolunu nasıl idare ettiği ile ilgili olan bazı diğer pimlerin işlevini değiştirir. Mod, genellikle devreye fiziksel olarak bağlıdır ve bu nedenle yazılım tarafından değiştirilemez. Bu modların işleyişi, Intel veri sayfalarında ve kılavuzlarında zamanlama şemaları olarak açıklanmıştır. Minimum modda, tüm kontrol sinyalleri 8086'nın kendisi tarafından üretilir.

Kayıtlar ve talimatlar

Intel 8086 kayıtları
1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (bit konumu)
Ana kayıtlar
  AH AL AX (birincil akümülatör)
  BH BL BX (baz, akümülatör)
  CH CL CX (sayaç, akümülatör)
  DH DL DX (akümülatör, genişletilmiş acc)
Dizin kayıtları
0 0 0 0 S aynak ben nDex
0 0 0 0 DI D HEDEF I nDex
0 0 0 0 BP B ase P ointer
0 0 0 0 SP S yapışmayan P ointer
Program sayıcı
0 0 0 0 IP Ben nstruction P ointer
Segment kayıtları
CS 0 0 0 0 ode S egment
DS 0 0 0 0 D ata S egment
ES 0 0 0 0 D Xtra S egment
SS 0 0 0 0 S tack S segmenti
Durum kaydı
  - - - - Ö NS ben T S Z - A - P - C Bayraklar

8086'nın sekiz aşağı yukarı genel 16 bitlik kaydı vardır ( yığın işaretçisi dahil, ancak talimat işaretçisi, bayrak kaydı ve bölüm kayıtları hariç). Bunlardan dördü, AX, BX, CX, DX, 8-bitlik kayıtların iki katı kadar erişilebilir (şekle bakınız), diğer dördü, SI, DI, BP, SP, sadece 16-bit'tir.

8 bitlik işlemcilerden ilham alan kompakt kodlama nedeniyle, komutların çoğu tek adresli veya iki adresli işlemlerdir, bu da sonucun işlenenlerden birinde depolandığı anlamına gelir. İşlenenlerden en fazla biri bellekte olabilir, ancak bu bellek işleneni aynı zamanda hedef olabilir , diğer işlenen ise kaynak olabilir, ya register ya da anında olabilir . Tek bir bellek konumu da sık sık hem olarak kullanılabilir kaynak ve hedef , diğer faktörlerin yanı sıra, bir daha fazla katkıda kod yoğunluğu ile kıyaslanabilir (ve çoğu zaman daha iyi) en sekiz bitlik makineleri zamanda.

Çoğu kaydın genellik derecesi 8080 veya 8085'tekinden çok daha fazladır. Bununla birlikte, 8086 kayıtları çoğu çağdaş mini bilgisayardan daha uzmanlaşmıştır ve ayrıca bazı talimatlar tarafından örtük olarak kullanılır. Montaj programcısı için tamamen mantıklı olsa da, bu, derleyiciler için kayıt tahsisini, PDP-11 , VAX , 68000 , 32016 vb. gibi daha ortogonal 16-bit ve 32-bit işlemcilere kıyasla daha karmaşık hale getirir . Öte yandan gibi oldukça minimalistik ancak her yerde 8 bitlik mikro işlemciler göre daha düzenli olarak 6502 , 6800 , 6809 , 8085 , MCS-48 , 8051 , ve diğer güncel akü dayalı makineler, verimli oluşturmak için önemli ölçüde daha kolay olan kod jeneratörü için 8086 mimarisi.

Bunun için başka bir faktör, 8086'nın Pascal ve PL/M gibi yığın tabanlı yüksek seviyeli programlama dillerini daha iyi desteklemek için bazı yeni talimatlar (8080 ve 8085'te mevcut değildir) sunmasıdır ; daha yararlı yönergelerden bazıları , ve ret size , doğrudan "Pascal çağrı kuralı " nı destekler . ( ve gibi birkaç diğerleri, sonraki 80186, 80286 ve 80386 işlemcilere eklenmiştir.) push mem-op push immedenter

Donanımda daha düşük adreslere doğru büyüyen 64 KB'lık (tek segment) bir yığın desteklenir ; 16 bitlik sözcükler yığına itilir ve yığının tepesi SS:SP ile gösterilir. Hem donanım hem de yazılım tarafından çağrılabilen 256 kesme vardır  . Kesintiler, dönüş adreslerini depolamak için yığın kullanılarak basamaklandırılabilir .

8086, 64 K 8-bit (veya alternatif olarak 32 K 16-bit word) G/Ç bağlantı noktası alanına sahiptir.

Bayraklar

8086, 16 bitlik bir bayrak kaydına sahiptir . Bu koşul kodu bayraklarından dokuzu aktiftir ve işlemcinin mevcut durumunu gösterir: Taşıma bayrağı (CF), Parite bayrağı (PF), Yardımcı taşıma bayrağı (AF), Sıfır bayrağı (ZF), İşaret bayrağı (SF), Tuzak bayrak (TF), Kesinti bayrağı (IF), Yön bayrağı (DF) ve Taşma bayrağı (OF). Durum kelimesi olarak da adlandırılan bayrak kaydının düzeni aşağıdaki gibidir:

Biraz 15-12 11 10 9 8 7 6 5 4 3 2 1 0
bayrak   İLE İLGİLİ DF EĞER TF bilimkurgu ZF   AF   PF   CF

segmentasyon

Ayrıca 8086 CPU'nun alışılmadık bir şekilde bir megabayt belleğe erişmesine izin veren dört adet 16 bitlik segment kaydı (şekle bakın) vardır . Adres alanı kendi kayıt boyutunu aşan çoğu işlemcide olduğu gibi, segment kaydını adres kaydıyla birleştirmek yerine, 8086 16 bitlik parçayı 16 bitlik ofset (16x segment + ofset) eklemeden önce yalnızca dört bit sola kaydırır. ), bu nedenle 32-bit segment:offset çiftinden 20-bit harici (veya etkin veya fiziksel) bir adres üretir. Sonuç olarak, her harici adrese 2 12 = 4096 farklı segment:offset çifti ile başvurulabilir .

  0110 1000 1000 0111  0000 segment , 16 bit, 4 bit sola kaydırıldı (veya 0x10 ile çarpıldı)
+      0011 0100 1010 1001 Ofset , 16 bit
                          
  0110 1011 1101 0001 1001 adres , 20 bit

Birçok programcı tarafından karmaşık ve hantal olarak görülse de, bu şemanın avantajları da vardır; küçük bir program (64 KB'den daha az) kendi segmentinde sabit bir ofsetten (0000 gibi) başlayarak yüklenebilir ve en fazla 15 bayt hizalama israfıyla yeniden yerleştirme ihtiyacını ortadan kaldırır .

8086 ailesi için Derleyiciler genellikle iki tür desteklemek pointer , yakın ve uzak . Yakın işaretçiler, programın kodu veya veri bölümü ile dolaylı olarak ilişkilendirilen 16 bitlik ofsetlerdir ve bu nedenle, yalnızca bir bölüme sığacak kadar küçük bir programın bölümlerinde kullanılabilir. Uzak işaretçiler 32 bit segmenttir: 20 bitlik harici adreslere çözümlenen ofset çiftleridir. Bazı derleyiciler aynı zamanda uzak işaretçiler gibi büyük işaretçileri de destekler , ancak çok büyük bir işaretçi üzerindeki işaretçi aritmetiği onu doğrusal bir 20 bitlik işaretçi olarak ele alırken, uzak bir işaretçi üzerindeki işaretçi aritmetiği , segment parçasına dokunmadan 16 bitlik ofsetini sarar. adresinden.

Çok sayıda işaretçi, veri yapısı ve işlev üzerinde yakın ve uzak belirtme ihtiyacından kaçınmak için , derleyiciler ayrıca varsayılan işaretçi boyutlarını belirten "bellek modellerini" de destekler. Minik (maks 64k), küçük (max 128K), kompakt (veri> 64K), orta (code> 64K), büyük (kod, veri> 64K) ve büyük (bireysel diziler> 64K) modelleri yakın pratik kombinasyonları kapsar kod ve veriler için , uzak ve çok büyük işaretçiler. Minik kod ve veri sadece en 8 bitlik tabanlı işlemciler gibi tek bir segment halinde paylaşılır ve inşa etmek için kullanılabileceğini modeli aracı .com örneğin dosyaları. Önceden derlenmiş kitaplıklar genellikle farklı bellek modelleri için derlenmiş çeşitli sürümlerde gelir.

Morse ve arkadaşlarına göre,. tasarımcılar aslında 16 MB'lık bir fiziksel adres alanı yaratmak için 8 bitlik bir kaydırma (4 bit yerine) kullanmayı düşündüler. Bununla birlikte, bu, segmentleri 256 baytlık sınırlarda başlamaya zorlayacağından ve 1976 civarında bir mikroişlemci için 1 MB çok büyük kabul edildiğinden, fikir reddedildi. Ayrıca, ek dört adres veri yolu pimi için düşük maliyetli 40 pimli bir pakette yeterli pim yoktu.

Prensip olarak, 86 dizisinin adres alanı olabilir ofset çiftleri: uygulamalar, işletim sistemi kendi segmentleri edilen ve farklı segment eşdeğerlik varsayımlar yapmadığını sürece, vites değiştirme değerinin artırılması daha sonra işlemci genişletilmiştir. Pratikte "dev" işaretçiler ve benzer mekanizmaların kullanımı yaygındı ve 80386'daki 32-bit ofset yazmaçları ile düz 32-bit adresleme mümkün kıldı, sonunda sınırlı adresleme aralığını daha genel bir şekilde genişletti (aşağıya bakınız).

Intel, belleği 16 bit sözcüklerle uygulamaya karar verebilirdi (bu, BHE (Bus High Enable) sinyalini ve daha önce açıklanan adres yolu karmaşıklıklarının çoğunu ortadan kaldırabilirdi ). Bu, tüm talimat nesne kodlarına ve verilerine 16 bitlik birimlerde erişilmesi gerektiği anlamına gelir. 8080'in kullanıcıları, uzun zaman önce, işlemcinin belleğini çok verimli bir şekilde kullandığını fark ettiler. Çok sayıda 8 bitlik nesne koduna sahip olan 8080, o sırada piyasadaki en güçlü mini bilgisayarlardan bazıları kadar kompakt nesne kodu üretir.

8086, 8 bitlik nesne kodlarını ve dolayısıyla 8080'in verimli bellek kullanımını muhafaza edecekse, o zaman (16 bit) işlem kodlarının ve verilerin çift-tek bayt adres sınırında kalacağını garanti edemez. İlk 8 bitlik işlem kodu, sonraki 8 bitlik talimatı tek bir bayta veya 16 bitlik bir talimatı tek-çift bayt sınırına kaydıracaktır. 8086 , BHE sinyalini ve gereken ekstra mantığı uygulayarak, talimatların 1 bayt, 3 bayt veya diğer herhangi bir tek bayt nesne kodu olarak var olmasına izin verir.

Basitçe söylemek gerekirse: bu bir takas. Bellek adreslemesi, belleğe yalnızca 16 bitlik birimlerde erişilecek şekilde basitleştirilirse, bellek daha az verimli kullanılır. Intel, mantığı daha karmaşık hale getirmeye karar verdi, ancak bellek kullanımı daha verimli. Bu, bellek boyutunun önemli ölçüde daha küçük ve kullanıcıların bugün alışkın olduğundan daha yüksek değerde olduğu bir dönemdeydi.

Eski yazılımları taşıma

Küçük programlar, segmentasyonu görmezden gelebilir ve yalnızca düz 16 bit adresleme kullanabilir. Bu, 8 bit yazılımın 8086'ya oldukça kolay bir şekilde taşınmasına izin verir . Çoğu DOS uygulamasının yazarları, CP/M'ye çok benzeyen bir Uygulama Programlama Arayüzü sağlayarak ve aynı zamanda basit .com yürütülebilir dosya biçimini ekleyerek bundan yararlandı. CP/M'ye. 8086 ve MS-DOS yeniyken bu önemliydi, çünkü mevcut birçok CP/M (ve diğer) uygulamalarının hızlı bir şekilde kullanıma sunulmasına izin vererek yeni platformun kabulünü büyük ölçüde kolaylaştırdı.

Örnek kod

Aşağıdaki 8086/8088 montajcı kaynak kodu, _memcpybelirli bir boyuttaki bir veri bayt bloğunu bir konumdan diğerine kopyalayan adlı bir alt yordam içindir . Veri bloğu her seferinde bir bayt kopyalanır ve veri hareketi ve döngü mantığı 16 bitlik işlemleri kullanır.

 
 
 
 
 
 
 
 
 
 
 
0000:1000
 
0000:1000
0000:1000 55
0000:1001 89 E5
0000:1003 06
0000:1004 8B 4E 06
0000:1007 E3 11
0000:1009 8B 76 04
0000:100C 8B 7E 02
0000:100F 1E
0000:1010 07
 
0000:1011 8A 04
0000:1013 88 05
0000:1015 46
0000:1016 47
0000:1017 49
0000:1018 75 F7
 
0000:101A 07
0000:101B 5D
0000:101C 29 C0
0000:101E C3
0000:101F
; _memcpy(dst, src, len)
; Copy a block of memory from one location to another.
;
; Entry stack parameters
;      [BP+6] = len, Number of bytes to copy
;      [BP+4] = src, Address of source data block
;      [BP+2] = dst, Address of target data block
;
; Return registers
;      AX = Zero

            org     1000h       ; Start at 0000:1000h

_memcpy     proc
            push    bp          ; Set up the call frame
            mov     bp,sp
            push    es          ; Save ES
            mov     cx,[bp+6]   ; Set CX = len
            jcxz    done        ; If len = 0, return
            mov     si,[bp+4]   ; Set SI = src
            mov     di,[bp+2]   ; Set DI = dst
            push    ds          ; Set ES = DS
            pop     es

loop        mov     al,[si]     ; Load AL from [src]
            mov     [di],al     ; Store AL to [dst]
            inc     si          ; Increment src
            inc     di          ; Increment dst
            dec     cx          ; Decrement len
            jnz     loop        ; Repeat the loop

done        pop     es          ; Restore ES
            pop     bp          ; Restore previous call frame
            sub     ax,ax       ; Set AX = 0
            ret                 ; Return
            end proc

Yukarıdaki kod, bir çağrı çerçevesi oluşturmak için BP (temel işaretçi) kaydını kullanır, yığında alt rutinin yürütülmesi için tüm parametreleri ve yerel değişkenleri içeren bir alan. Bu tür bir çağrı kuralı , yeniden girişli ve özyinelemeli kodu destekler ve 1950'lerin sonlarından beri ALGOL benzeri dillerin çoğu tarafından kullanılmaktadır.

Yukarıdaki rutin, veri bloklarını kopyalamanın oldukça zahmetli bir yoludur. 8086, bayt dizilerini kopyalamak için özel talimatlar sağlar. Bu talimatlar, kaynak verilerin DS:SI'de depolandığını, hedef verilerin ES:DI'de depolandığını ve kopyalanacak öğe sayısının CX'te depolandığını varsayar. Yukarıdaki rutin, kaynak ve hedef bloğun aynı segmentte olmasını gerektirir, bu nedenle DS, ES'ye kopyalanır. Yukarıdakilerin döngü bölümü şu şekilde değiştirilebilir:

0000:1011 FC
0000:1012 F3
0000:1013 A4
            cld                  ; Copy towards higher addresses
loop        rep                  ; Repeat until CX = 0
            movsb                ; Move the data block

Bu, veri bloğunu her seferinde bir bayt kopyalar. REPTalimat aşağıdakileri neden MOVSBCX sıfır otomatik SI ve DI artırma ve onu tekrarlar olarak CX eksiltim kadar tekrarına. Alternatif olarak MOVSWtalimat, bir seferde 16 bitlik kelimeleri (çift bayt) kopyalamak için kullanılabilir (bu durumda CX, bayt sayısı yerine kopyalanan kelime sayısını sayar). Çoğu montajcı , örneğin 'de olduğu gibi talimata REPsatır içi bir önek olarak kullanılırsa talimatı düzgün bir şekilde tanıyacaktır . MOVSBREP MOVSB

Bu rutin, kesintiye uğrarsa doğru şekilde çalışacaktır, çünkü program sayacı REP, blok kopyalama tamamlanana kadar talimata işaret etmeye devam edecektir . Bu nedenle, kesme hizmeti rutini kontrolü geri verdiğinde, kopya kaldığı yerden devam edecektir.

Verim

Intel 8088 (8086'nın bir çeşidi) üzerinden basitleştirilmiş blok diyagram; 1=ana ve dizin kayıtları; 2=segment kayıtları ve IP; 3=adres toplayıcı; 4=dahili adres yolu; 5=talimat kuyruğu; 6=kontrol ünitesi (çok basitleştirilmiş!); 7=veri yolu arayüzü; 8=dahili veri yolu; 9=ALU; 10/11/12=harici adres/veri/kontrol yolu.

Bu özel çipteki diğer tasarım seçenekleri tarafından kısmen gölgelenmiş olsa da, çoğullanmış adres ve veri yolları performansı biraz sınırlandırıyor; 16-bit veya 8-bit miktarların transferleri, birçok çağdaş 8-bit tabanlı CPU ile karşılaştırıldığında, 8-bit miktarlarda daha yavaş olmasına rağmen, 16-bit üzerinde daha hızlı olan dört-saatli bir bellek erişim döngüsünde yapılır. Talimatlar bir ila altı bayt arasında değiştiğinden, getirme ve yürütme eşzamanlı yapılır ve ayrı birimlere ayrıştırılır (bugünkü x86 işlemcilerinde olduğu gibi): Veri yolu arabirim birimi , talimat akışını 6 baytlık bir ön getirme kuyruğu aracılığıyla yürütme birimine besler ( gevşek bağlanmış şeklidir ardışık işlemleri hızlandırmak), kayıtlar ve immediates , hafıza işlemleri daha yavaş olurken (dört yıl sonra, bu performans problemi ile giderilmiştir 80186 ve 80286 ). Bununla birlikte, tam genişlikte ALU'ya sahip tam (kısmi yerine) 16-bit mimari , 16-bit aritmetik talimatların artık tek bir ALU döngüsü ile gerçekleştirilebileceği anlamına geliyordu (8080 ve 8085'te olduğu gibi, dahili taşıma yoluyla iki yerine) , bu tür talimatları önemli ölçüde hızlandırmak. İle birlikte orthogonalizations karşı operasyonların işlenen türleri ve adresleme modları , hem de diğer geliştirmeler, bu eski cips hızlı (aşağıya bakınız) olabilir durumlarda rağmen 8080 veya oldukça önemli 8.085 üzerinde performans kazancı yaptı.

Tipik talimatlar için yürütme süreleri (saat döngülerinde)
talimat kayıt-kayıt hemen kayıt ol kayıt-hafıza hafıza kaydı bellek-anında
hareket 2 4 8+EA 9+EA 10+EA
ALU 3 4 9+EA, 16+EA, 17+EA
zıplamak kayıt ≥ 11 ; etiket ≥ 15 ; durum,etiket ≥ 16
tamsayı çarpması Herhangi bir EA dahil olmak üzere 70~160 (işlenen verilere ve boyuta bağlı olarak)
tamsayı bölme Herhangi bir EA dahil 80~190 (işlenen verilere ve boyuta bağlı olarak)
  • EA = 5 ila 12 döngü arasında değişen etkin adresi hesaplama süresi.
  • Önceden getirme durumuna, talimat hizalamasına ve diğer faktörlere bağlı olarak zamanlamalar en iyi durumdur.

Bu tablolardan görülebileceği gibi, yazmaçlar ve aniler üzerindeki işlemler hızlıydı (2 ile 4 döngü arasında), bellek işlenen komutları ve atlamalar ise oldukça yavaştı; atlamalar, basit 8080 ve 8085'tekinden daha fazla döngü aldı ve 8088 (IBM PC'de kullanıldı) ayrıca daha dar veriyolu tarafından engellendi. Bellekle ilgili talimatların çoğunun yavaş olmasının üç nedeni vardı:

  • Gevşek birleştirilmiş getirme ve yürütme birimleri, talimat önceden getirme için verimlidir, ancak atlamalar ve rastgele veri erişimi (özel önlemler olmadan) için değildir.
  • Özel adres hesaplama toplayıcı sağlanmadı; mikrokod rutinleri bunun için ana ALU'yu kullanmak zorundaydı (özel bir segment + ofset toplayıcı olmasına rağmen ).
  • Adres ve veri yolları çoğullandı ve tipik çağdaş 8-bit işlemcilere göre biraz daha uzun (%33~50) bir veri yolu döngüsünü zorladı.

Ancak, Intel'in yeni nesil 8086 ailesi CPU'ları ile bellek erişim performansı büyük ölçüde geliştirildi. 80186 ve 80286 , her iki birçok döngü tasarruf özel adresi hesaplama donanım vardı ve 80286 ayrıca ayrı (non-birden fazla mesaj göndermiş) adres ve veri yollarını vardı.

Kayan nokta

8086/8088, donanım/mikro kod tabanlı kayan nokta performansı eklemek için matematiksel bir yardımcı işlemciye bağlanabilir . Intel 8087 80 bitlik sayılar üzerinde faaliyet gösteren 8086 ve 8088 için standart matematik işlemcisi oldu. Cyrix (8087 uyumlu) ve Weitek ( 8087 uyumlu değil ) gibi üreticiler sonunda 8087 ile rekabet eden yüksek performanslı kayan nokta yardımcı işlemcileri ile ortaya çıktı.

Çip sürümleri

Saat frekansı başlangıçta 5 MHz ile sınırlıydı, ancak HMOS'taki son sürümler 10 MHz için belirtildi. HMOs-III ve CMOS versiyonları uzun süre üretildi (en azından bir süre 1990'larda içine) için gömülü sistemler kendi halefi rağmen, 80.186 / 80.188 (bazı on-chip çevre birimleri içerir) gömülü kullanılmak üzere daha popüler olmuştur .

8086'nın CMOS versiyonu olan 80C86 , GRiDPad , Toshiba T1200 , HP 110 ve son olarak 1998–1999 Lunar Prospector'da kullanıldı .

Paketleme için Intel 8086, hem seramik hem de plastik DIP paketlerinde mevcuttu.

Seramik bir D8086 çeşidi
Bir plastik P8086 çeşidi

Intel 8086 listesi

Model numarası Sıklık teknoloji Sıcaklık aralığı yayın tarihi Fiyat (USD)
8086 5 MHz HMOS 0 °C ila 70 °C 8 Haziran 1978 $86.65
8086-1 10 MHz HMOS II Reklam
8086-2 8 MHz HMOS II Reklam Ocak/Şubat 1980 $200 dolar
8086-4 4 MHz HMOS Reklam 72.50 $
I8086 5 MHz HMOS Endüstriyel -40 °C ila +85 °C Mayıs/Haziran 1980 173,25 $
M8086 5 MHz HMOS Askeri sınıf −55 °C ila +125 °C
80C86 CMOS

Türevler ve klonlar

Uyumlu ve çoğu durumda geliştirilmiş sürümler Fujitsu , Harris / Intersil , OKI , Siemens , Texas Instruments , NEC , Mitsubishi ve AMD tarafından üretildi . Örneğin, NEC sırasıyla orijinal Intel klonları μPD8088D ve μPD8086D yapmış, ancak 80186'nın komut setini 80186'nın bazılarıyla (hepsi değil) birlikte dahil etse de NEC V20 ve NEC V30 çifti 8088 ve 8086 ile donanım uyumluydu. hız geliştirmeleri, üreticilerin tasarımlarını değiştirmesine gerek kalmadan hem komut setini hem de işlem hızını yükseltme olanağı sağlar. CMOS'taki bu tür nispeten basit ve düşük güçlü 8086 uyumlu işlemciler, gömülü sistemlerde hala kullanılmaktadır.

Sovyetler Birliği'nin elektronik endüstrisi , 8086'yı hem endüstriyel casusluk hem de tersine mühendislik yoluyla kopyalayabildi . Ortaya çıkan çip, K1810VM86 , ikili ve 8086 ile pin uyumluydu.

i8086 ve i8088 sırasıyla Sovyet yapımı PC uyumlu EC1831 ve EC1832 masaüstü bilgisayarların çekirdekleriydi . (EC1831, IZOT 1036C'nin EC kimliğidir ve EC1832, Bulgaristan'da geliştirilen ve üretilen IZOT 1037C'nin EC kimliğidir. EC, Единая Система anlamına gelir.) Ancak, EC1831 bilgisayarı (IZOT 1036C), IBM PC prototipinden önemli donanım farklılıklarına sahipti. . EC1831, dinamik veri yolu boyutuna sahip ilk PC uyumlu bilgisayardı (ABD Patenti No 4,831,514). Daha sonra EC1831 ilkelerinin bazıları PS/2'de (ABD Patenti 5,548,786) ve diğer bazı makinelerde (28 Haziran 1989'da yayınlanan Birleşik Krallık Patent Başvurusu, Yayın No. GB-A-2211325) kabul edildi.

Sovyet klonu K1810VM86
OKI M80C86A QFP-56
1984 yılından itibaren NEC μPD8086D-2 (8 MHz), 19. hafta JAPONYA (Intel D8086-2 klonu)

Destek çipleri

  • Intel 8237 : doğrudan bellek erişimi (DMA) denetleyicisi
  • Intel 8251 : 19.2 kbit/s'de evrensel senkron/asenkron alıcı/verici
  • Intel 8253 : programlanabilir aralıklı zamanlayıcı, 3x 16-bit maks. 10 MHz
  • Intel 8255 : programlanabilir çevresel arabirim, yazıcı bağlantısı için kullanılan 3x 8-bit G/Ç pinleri vb.
  • Intel 8259 : programlanabilir kesinti denetleyicisi
  • Intel 8279 : klavye/ekran denetleyicisi, bir klavye matrisini tarar ve 7-seg gibi matrisi görüntüler
  • Intel 8282 / 8283 : 8 bit mandal
  • Intel 8284 : saat üreteci
  • Intel 8286 / 8287 : çift yönlü 8 bit sürücü. 1980'de her iki Intel I8286/I8287 (endüstriyel sınıf) sürümü 100'lük miktarlarda 16.25 ABD Doları karşılığında mevcuttu.
  • Intel 8288 : veri yolu denetleyicisi
  • Intel 8289 : veri yolu hakemi
  • NEC µPD765 veya Intel 8272A : disket denetleyicisi

8086 kullanan mikro bilgisayarlar

  • Intel Multibus uyumlu tek kartlı bilgisayar ISBC 86/12 1978'de duyuruldu.
  • Xerox NoteTaker erken biri taşınabilir bilgisayar 1978 tasarımları ve (CPU, grafik işlemci, ve I / O işlemcisi gibi), üç 8086 fiş kullanılır, ancak ticari üretim girdi olmadı.
  • Seattle Computer Products, S-100 veriyolu tabanlı 8086 sistemlerini (SCP200B) daha Kasım 1979'da sevk etti .
  • 1980 yılında tanıtılan Norveç Mycron 2000.
  • En etkili mikro bilgisayarlardan biri olan IBM PC , 8086'nın 8 bit veri yoluna sahip bir versiyonu olan Intel 8088'i kullandı (yukarıda belirtildiği gibi).
  • İlk Compaq Deskpro , 7.16 MHz'de çalışan bir 8086 kullanıyordu, ancak 4.77 MHz IBM PC XT için tasarlanmış eklenti kartlarla uyumluydu ve CPU'yu daha düşük hıza indirebiliyordu (aynı zamanda 8088'in daha yavaş erişimi) yazılım zamanlama sorunlarını önlemek için.
  • IBM PC uyumlu bir masaüstü mikrobilgisayar olan AT&T 6300 PC'de ( Olivetti tarafından inşa edilmiş ve dünya çapında çeşitli marka ve model numaralarıyla bilinir) 8 MHz 8086-2 kullanıldı . M24 / PC 6300, IBM PC/XT uyumlu 8-bit genişleme yuvalarına sahiptir, ancak bazıları 8086 CPU'nun tam 16-bit veri yolunu sağlayan tescilli bir uzantıya sahiptir (kavram olarak IBM'in 16-bit yuvalarına benzer). PC AT , ancak tasarım ayrıntılarında farklı ve fiziksel olarak uyumsuz) ve yerleşik video sistemi de dahil olmak üzere tüm sistem çevre birimleri de 16 bit veri aktarımlarından yararlanır. Daha sonraki Olivetti M24SP, maksimum 10 MHz'de çalışan bir 8086-2'ye sahipti.
  • IBM PS / 2 modeller 25 ve 30 8 MHz 8086 ile inşa edildi.
  • Amstrad PC1512 , PC1640 , PC2086, PC3086 ve PC5086'nın tümü 8 MHz'de 8086 CPU kullandı.
  • NEC PC 9801 .
  • Tandy 1000 SL serisi ve RL makineleri 9.47 MHz 8086 işlemciler kullanılır.
  • IBM Displaywriter tarafından üretilen kelime işlem makinası ve Wang Profesyonel Bilgisayar, Wang Laboratories , ayrıca 8086 kullanılır.
  • NASA , 2011'deki uzay mekiği programının sonuna kadar Uzay Mekiği Discovery'nin yer tabanlı bakımı için ekipmanlarda orijinal 8086 CPU'ları kullandı . Bu karar, yükseltmeden veya kusurlu klonlara geçişten kaynaklanabilecek yazılım gerilemesini önlemek için alındı.
  • KAMAN Proses ve Alan Radyasyon Monitörleri

Ayrıca bakınız

Notlar

Referanslar

Dış bağlantılar