Motorola 68000 - Motorola 68000


Vikipedi, özgür ansiklopedi
Motorola 68000 mimarisi
tasarımcı Motorola
Uçları 16/32 bit
tanıtıldı 1979 ; 39 yıl önce ( 1979 )
dizayn CISC
Dallanma Durum kodu
endian Büyük
Defterleri
Genel amaçlı işaretçi yığını + için en ameliyat 8 x 32 bit + 7 adres kayıt kullanılabilir, aynı zamanda
Motorola 68000 CPU
Talimatlar 56
Veri genişliği 16
Adres genişliği 24

Motorola 68000 ; ( " 'altmış sekiz bin'" de denir m68k veya Motorola 68k , " altmış sekiz-kay 16/32-bit") CISC mikroişlemci bir uygular, 32 bit komut seti ile, 32-bit makine ve 32 bit dahili veri yolu , ancak bir ile 16 bit veri ALU ve iki 16-bit aritmetik ALU ve 16 bit harici veri yolu tasarlanmış ve tarafından pazarlanan, Motorola Semiconductor Ürünleri Sektörü. İle 1979 yılında tanıtılan HMOs başarılı 32 bit ilk üyesi olarak teknoloji Motorola 68000 serisi , bu yazılım genellikle ileriye uyumlu bir 16 bit genişliğinde dış otobüse sınırlı olmasına rağmen hattın kalanı ile. 39 yıl sonra üretime , 68000 mimarisi halen kullanılmaktadır.

Yayın öncesi XC68000 çip 1979 yılında üretilen
Die Motorola 68000 arasında

Tarihçe

Motorola MC68000'de El Sıkışmalı ( CLCC paketi)
Motorola MC68000'de El Sıkışmalı ( PLCC paketi)

68000 büyümüştür MACSS olmadan tamamen yeni bir mimari geliştirmeye 1976 yılında başlamış, proje (Silikon üzerinde Motorola Gelişmiş Bilgisayar Sistemi) geriye dönük uyumluluk . Mevcut 8 bitlik tamamlayan yüksek güç kardeş olurdu 6800 uyumlu bir halefi yerine çizgi. Sonunda, 68000, bir muhafaza yaptığı yolu protokolü 6800 çevresel aygıtlar, mevcut uyumluluk modu ve bir 8-bit veri yolu üretildi bir versiyonu. Ancak, tasarımcılar ağırlıklı geleceği veya odaklanmış ileri uyumluluğu 68000 Design sonra 32 bit karşı bir başlangıç verdi komut kümesi mimarileri . İşlemcide az müstakil yapılar kendisi bir seferde 32 bit üzerinde işlem olsa da, örneğin, CPU kayıt 32 bit, geniş. MACSS ekibi etkisi ağır çekti mini bilgisayar gibi işlemci tasarımı PDP-11 ve VAX benzer edildi sistemleri, microcode tabanlı.

1970'li yılların ortalarında 8-bit mikroişlemci üreticileri 16 bit nesil tanıtmak yarıştı. National Semiconductor onun ilk olmuştu IMP-16 ve AKPM 1973-1975 yılında işlemciler, ancak bu hız ile sorunları vardı. Intel onların ileri 16/32 bit üzerinde çalışmış Intel iAPX 432 1975 yılından bu yana (takma ad 8800) ve bunların 8086 Intel 1976 yılından bu yana (1978 yılında başlatılmış ancak neredeyse özdeş 8088 şeklinde gerçekten yaygınlaştı IBM PC birkaç yıllar sonra). İşlemcinin fazla transistör 16 bit arenaya geç verir gelen (yaklaşık 40.000 aktif 8086 aktif 20.000 karşı), bir 32-bit macroinstructions ve kullanım beğenilen genel kolaylığı.

Orijinal MC68000'de El Sıkışmalı edildi imal bir kullanarak HMOs 3.5 ile işlem  um özelliği boyutu. Resmen Eylül 1979 yılında tanıtılan, ilk numuneler Kasım ayında sayaç üzerinde mevcut üretim çipleri ile Şubat 1980'de serbest bırakıldı. İlk hız sınıflarda 4, 6 ve 8 idi  MHz . 10 MHz cips 1981 sırasında ortaya çıktıkça, Haziran 1982. tarafından 12.5 MHz cips MC68000'de El Sıkışmalı 16,67 MHz "12F" sürüm, özgün HMOs çip hızlı versiyonları 1980'lerin sonlarına kadar üretilen değildi.

68k komut seti özellikle Unix uygulamak için uygun ve 68000 ve ardılları Unix tabanlı baskın CPU'lar oldu iş istasyonları dahil Güneş iş istasyonları ve Apollo / Alan iş istasyonları. 68000 ayrıca gibi kitlesel pazar bilgisayarlar için kullanıldı LisaAma , Macintosh , Amiga ve Atari ST . 68000 Microsoft kullanılmıştır Xenix sistemleri yanı sıra erken NetWare Unix tabanlı Sunucusu. 68000 masaüstü ilk nesil kullanılan lazer yazıcılar orijinal dahil Apple Inc LaserWriter ve HP LaserJet . 1982 yılında 68000 olan bir güncelleme aldı ISA o desteklemek için izin sanal bellek ve uymak için Popek ve Goldberg sanallaştırma gereksinimleri . Güncellenmiş çip denilen 68010 . Adres yolu 31 bit maruz başka bir genişletilmiş versiyonu, aynı zamanda az miktarlarda üretildi 68012 .

Daha küçük hafıza boyutları ile daha düşük maliyetli sistemler ve kontrol uygulamaları desteklemek için, Motorola 8-bit uyumlu tanıtıldı MC68008 Bu bir 8-bit veri yolu ve daha küçük (20-bit) adres yolu ile 68000 oldu da 1982 yılında,. 1982 sonrasında Motorola daha fazla özen 68020 ve 88000 projelerde.

İkinci kaynak

Hitachi HD68000
Thomson TS68000

Diğer bazı şirketler vardı ikinci kaynak HMOs 68000'e üreticileri Bunlar arasında Hitachi onların 12.5 MHz versiyonu için 2.7 mikron kadar özellik boyutunu küçüldü (HD68000), Mostek (MK68000), Rockwell (R68000), Signetics (SCN68000), Thomson / SGS-Thomson (başlangıçta EF68000 ve daha sonra TS68000) ve Toshiba (TMP68000). Toshiba da CMOS 68HC000 (TMP68HC000) ikinci kaynak makinesi oldu.

Pil destekli bellekte opcodes ve işlemkodu verileri için Hitachi FD1089 ve FD1094 mağaza şifre çözme anahtarlarını olmanın 68000 Şifreli varyantları, dahil olmak üzere bazı Sega çarşı sistemlerinde kullanılan System 16 korsanlık ve yasadışı kaçak oyunlar önlemek için.

CMOS versiyonları

Motorola MC68HC000LC8

68HC000, ilk CMOS 68000 versiyonu Hitachi tarafından tasarlanmış ve Hitachi en HD68HC000 iken ortaklaşa, MC68HC000 denirdi 1985'te Motorola'nın sürümünde tanıttı. 68HC000 sonunda 8-20 MHz hızında sunuldu. CMOS devreler kullanılarak dışında, bu HMOs MC68000'de El Sıkışmalı ile benzer davranış, ancak CMOS'ta değişim büyük ölçüde güç tüketimini azaltmıştır. Orijinal HMOs MC68000'de El Sıkışmalı 1.35 tüketilen  watt 25 bir çevre sıcaklığında  ° C MC68HC000 8 MHz sadece 0.13 watt, 20 MHz'de 0.38 watt tüketirken, bağımsız olarak saat hızı. (Boşta, böylece güç tüketimi saat hızına sahip küçük değişiklik gösterdiğinde CMOS devreleri farklı olarak, HMOs hala güç çekiyor.) Elma kullanılmak üzere 68HC000 seçilmiş Taşınabilir Macintosh .

Motorola Bu çip birçok bakımdan 68HC000 andıran 1990 yılında MC68HC001 ile MC68008 yerine, ama veri yolu sıfırlama bir giriş pimi değerine bağlı olarak, ya da 16 bit ya da 8-bit modunda çalışabilir. Böylece, 68008 gibi daha ucuz 8 bitlik anılarıyla sistemlerde kullanılabilir.

68000 sonradan evrimi daha modern odaklanmış gömülü kontrol çevre birimleri uygulamaları ve on-chip. 68EC000 çip ve SCM68000 çekirdek, 32 bit adres yolu genişletilmiş M6800 çevre veri yolu çıkarıldı ve kullanım modu programlar SR talimat Hareket'i hariç. 1996 yılında, Motorola sadece 2 çizim, tam olarak statik bir devre ile bağımsız çekirdek güncellenmiş  uW MC68SEC000 çağırarak, düşük güç modunda.

Motorola 1996 yılında HMOs MC68000'de El Sıkışmalı üretimini ve MC68008 durdurdu, ancak spin-off şirketi Freescale Semiconductor hala MC68HC000, MC68HC001, MC68EC000 ve MC68SEC000 yanı sıra MC68302 ve MC68306 mikrokontrollör ve sonraki sürümlerini üretiyordu DragonBall ailesi. 68000 mimari torunları, 680x0 , CPU32 ve Coldfire aileleri, üretimde hala da vardı. Daha yakın zamanlarda, Sendai fab kapanması ile, tüm 68HC000, 68020, 68030 ve 68882 parça üretiminde sadece 68SEC000 bırakarak kaldırıldı.

Bir mikro-kontrolör çekirdek olarak

"Gerçek" 32-bit mikro tarafından başarılı sonra, 68000, birçok çekirdek olarak kullanıldı mikro denetleyici . 1989 yılında, Motorola kişiye MC68302 iletişim işlemcisi.

Uygulamalar

İki Hitachi 68HC000 CPU'lar atari oyun PCB kullanılıyor

Tanıtımından olarak, 68000, ilk çok kullanıcılı de dahil olmak üzere, yüksek fiyatlı sistemlerde kullanılan mikrobilgisayarları WICAT 150 gibi erken Alfa Microsystems bilgisayar, Adaçayı II / IV , Tandy TRS-80 Model 16 ve Fortune 32:16 ; Tek kullanıcılı iş istasyonları gibi Hewlett-Packard 'ın HP 9000 Serisi 200 sistemleri, ilk Apollo / Alan sistemleri, Sun Microsystems ' Sun-1 ve Corvus Konsept ; ve grafik terminalleri gibi Digital Equipment Corporation, 'ın VAXstation 100 ve Silicon Graphics ' IRIS 1000 1200. Unix sistemleri hızla 1980'ler boyunca bu pazarda popüler kalmıştır 68k hattının daha yetenekli sonraki nesillere taşınmıştır.

1980'li yılların ortalarında, düşen üretim maliyeti kullanım için 68000 yaşayabilir yapılan kişisel ve ev bilgisayarları ile başlayan LisaAma ve Macintosh ve ardından Commodore Amiga , Atari ST ve Sharp X68000 . Öte yandan, Sinclair QL mikro örneğin ICL bunun türevleri ile birlikte, 68008 en ticari açıdan önemli kullanımı olan Masa Başına Bir iş terminali. (Missouri, ABD) Helix Sistemleri bir uzantıyı tasarlanmış SWTPC SS-50 otobüs , SS-64 ve 68008 işlemci etrafında inşa üretilen sistemler.

RISC ve x 86 kabul edilmesi masaüstü / iş istasyonu CPU olarak 68000 serisi yerinden birlikte, işlemci önemli kullanım alanı bulmuş gömülü uygulamaları. 1980'lerin başlarında, 68000 CPU miktarları az 30 için satın alınabilir  dolar parçası başına.

Video oyun üreticileri birçok omurgası olarak 68000 kullanılan oyun salonu ve ev oyun konsolları Atari: Gıda Mücadele , 1982, ilk 68000-tabanlı platform oyunlarından biriydi. Diğerleri dahil Sega 'nın Sistem 16 , Capcom ' ın CP sistem ve CPS-2 ve SNK 'ın Neo Geo . 1980'lerin sonlarında, 68000 böyle Sega olarak güç ev oyun konsolları, yeterince ucuz Mega Drive (Genesis) konsolu ve ayrıca Sega CD bununla (Bir Sega CD sistemi üç CPU, bunlardan 68000s iki vardır) için eki. 1993 çok işlemcili Atari Jaguar bazı geliştiriciler bağlı yakınlık birincil işlemci olarak kullanılmış olmasına rağmen, konsol, bir destek çip gibi bir 68000 kullanılır. 1994 çok işlemcili Sega Satürn konsolu (Mega Drive / Genesis kullanan kadar sağlam bir ko-işlemcisi olarak 68000 kullanılan Z80 ses ve / veya diğer amaçlar için yardımcı işlemci gibi).

Bazı çarşı (gibi oyunlar Çelik Gunner dayanan ve diğerleri Namco Sistemi 2 üçlü 68000 CPU yapılandırma ile çift 68000 CPU yapılandırması kullanan) ve sistemleri de (örneğin mevcut Galaxy Kuvvetleri ile birlikte Sega Y Kurulu dayalı ve diğerleri) tarafından kullanılan bir dört 68000 CPU yapılandırması, Jaleco gibi oyunlar için (ses için bir 68000 diğer 68000 işlemci ile karşılaştırıldığında daha düşük bir saat oranı) büyük çalıştırmak ve Cisco Heat ; (Diğer 68000 işlemci kıyasla farklı bir saat hızında) beşinci 68000 ilave Jaleco pasaj oyunda kullanılan vahşi pilot için I / O işlemi.

68000 ayrıca gömülü denetleyici olarak büyük bir başarı gördü. Gibi erken 1981 olarak, lazer yazıcılar bu tür Imagen Künye-10 olarak ilk HP 68000 'ile donatılmış dış panoları ile kontrol edildi LaserJet içinde -introduced, yerleşik bir 8 MHz 68000'e Diğer yazıcı üreticileri ile 1984-geldi 68000 benimsenen onun tanıtımıyla Apple dahil LaserWriter 1985 yılında, ilk PostScript lazer yazıcı. 68000 alt uç yazıcılarda 1990'larda içine iyice devam eden yaygın 1980'ler geri kalanı boyunca yazıcılarda kullanılmak üzere devam etti.

68000 ayrıca endüstriyel kontrol sistemleri alanında başarısını gördük. Kendi mikroişlemci aileleri gibi bir 68000 veya türevi olan yararlanan sistemleri arasında programlanabilir lojik kontrol yoluyla imal edilen (PLC) Allen Bradley , Texas Instruments tarafından TI bu bölümünü satın aşağıdaki, daha sonra ve Siemens . Birçok 68000 tabanlı kontrolörler de 21. yüzyılda güvenilir hizmet devam edecek, bu tür sistemlerinin kullanıcıları iç kullanıcılar aynı oranda ürün eskime kabul etmiyoruz ve olduğu halde 20 yıl önce yüklenmiş bu tamamen muhtemeldir.

Bir dizi dijital osiloskop 80s, 68000 bir dalga formu gösterim işlemcisi olarak kullanılmıştır; dahil olmak üzere, bazı modellerde LeCroy 9400 / 9400A da (iki dalga / referanslar / dalga anılar toplama, çıkarma, çarpma ve bölme dahil) bir dalga biçimi matematik işlemcisi olarak 68000 kullanın ve bazı dijital osiloskoplar 68000 dahil (9400 / 9400A kullanılarak ) da gerçekleştirebilir FFT bir dalga üzerinde işlevleri.

683XX 68000 mimarisine dayanan mikrodenetleyiciler, ağ ve telekom ekipmanları, televizyon set üstü kutular, laboratuvar ve tıbbi aletler ve hatta el hesap makineleri kullanılmaktadır. MC68302 ve türevlerinin Cisco, 3com Ascend, Marconi, Kiklad ve diğerlerinden birçok telekom ürünlerinde kullanılmaktadır. Geçmiş modellerinin Palmiye PDA'lar ve Handspring Visor kullanılan DragonBall , 68000'e bir türevi AlphaSmart onun taşınabilir kelime işlemciler sonraki sürümlerinde DRAGONBALL ailesini kullanır. Texas Instruments onun high-end grafik hesap makineleri içinde 68000 kullanır TI-89 ve TI-92 serisi ve Voyage 200 . Bunlardan ilk versiyonları statik 68EC000 çekirdeği ile özel bir mikrodenetleyici kullanılan; sonraki sürümleri standart MC68SEC000 işlemci kullanır.

68000 modifiye edilmiş bir versiyonu temelini oluşturan IBM XT / 370 sistemi 370, işlemcinin donanım emülatörü.

Mimari

Motorola 68000 kayıtları
3 1 ... 2 3 ... 1 5 ... 0 7 ... 0 0 (Bit pozisyonu)
Veri kayıtları
D0 Veri 0
D1 Veri 1
D2 Veri 2
D3 Veri 3
D4 Veri 4
D5 Veri 5
D6 Veri 6
D7 Veri 7
Adres kayıtları
  A0                           Adres 0
  A1                           Adres 1
  A2                           Adres 2
  A3                           Adres 3
  A4                           Adres 4
  A5                           Adres 5
  A6                           Adres 6
Yığın işaretçileri
  A7 / USP                        Yığın Pointer (kullanıcı)
  A7' / SSP                        Yığın Pointer (gözetmen)
Program sayıcı
  PC                           Program sayıcı
Durum Kodu Kayıt
  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 pozisyonu)
  T S M 0 ben 0 0 0 X N- Z V C CCR

Adres otobüsü

68000 A0 "yerini" 24 bit harici adres yolu ve iki bayt seçim sinyalleri vardır. Bunlar 24 satır nedenle bayt çözünürlükte fiziksel bellek 16 MB ele alabilir. Adres depolama ve hesaplama dahili olarak 32 bit kullanır; Bununla birlikte, 8 yüksek sıralı adres biti nedeniyle devre olduğunda fiziksel eksikliği göz ardı edilir. Bu da mantıksal olarak düz 32 bit için yazılmış yazılımları çalıştırmak için izin verir adres alanı yalnızca 24 bit fiziksel adres alanını erişirken. İç 32 bit adres alanı ile Motorola'nın niyet bunun mümkün 68000 talimat setinin sonra 32 bit uygulamaların tam olarak yararlanmak istiyorum 68000 yazılım yazmak için yapım ileri uyumluluk oldu.

Ancak, bu ileri uyumsuz yazılımlar yazmasını programcıları engelleyemedi. Üst adres bayt atılır, ya da ele daha başka amaçlar için kullanılabilir "24-bit" yazılımı, 32-bit 68000 uygulamaları başarısız olabilir. Örneğin, Apple'ın erken (7.0 öncesi) sürümleri Mac OS gibi bayraklarını tutmak için bellek bloğu usta işaretçiler yüksek bayt kullanılır kilitli ve purgeable . OS sonraki sürümlerinde yakındaki bir konuma bayrakları taşındı ve Apple "vardı bilgisayarları sevkiyat başlamasından 32 bit temiz 1989 Mac IICi yayınlanması ile başlar" ROM'ları.

68000 aile içinde bellekte multi-byte tamsayılar depolayan big-endian sırayla.

İç kayıtları

İşlemci , sekiz 32-bit genel amaçlı veri sahip kayıtları (D0-D7) ve sekiz adres kayıt birimini (A0-A7). Son adres kayıt olan yığın işaretçisi ve montajcılar A7 eşdeğer olarak etiket SP kabul ediyoruz. Bu birçok yönden anda kayıtları iyi bir sayı oldu. 68000 hızla yanıt sağlayacak kadar küçüktü kesmeleri için yeterli (8 veri D0-D7 kaydeder ve 7 adres A0-A6, toplam 15 kayıtlarını kaydedilmesini gerekli kaydeder nerede hatta en kötü durumda) ve henüz büyük onlar bellekte herhangi kısmi sonuçları tutmadan işlemci içerisinde tamamlanabilir çünkü çoğu hesaplamalar hızlı olun. (Yönetici modunda bir özel rutin da 8 adres kayıt toplam olarak kullanıcının yığın işaretçisi A7, kaydedebilir unutmayın. Bununla birlikte, başka çift yığın işaretçisi (A7 ve denetçi mod A7' ), bu, normal olarak gereksiz kılar 68000 tasarımı, bir görev anahtarı çoklu görev sistemde gerçekleştirildiğinde.)

Kayıtları iki tür olması hafif zamanlarda sinir bozucu, ama pratikte kullanımı zor değildi. Söylendiğine göre, bir yardımcı kullanarak, paralellik, daha yüksek bir derecesi elde etmek için işlemci tasarımcıları izin yürütme birimi adres kayıt için.

Durum kayıt

Bir durum sicilinde 68000 karşılaştırma, aritmetik ve mantık işlemleri set bit bayrakları sonra şartlı atlar tarafından kullanılmak üzere onların kayıt altına almaktır. Bit bayrak olan "sıfır", (Z) "taşımak" (C) "taşması" (V) ', "uzama" (X), ve "negatif" (N). O ayrı olduğu için "genişletmek" (X) bayrağı, anılmayı hak taşıma bayrak . Bu aritmetik mantık ve kaydırma işlemi ekstra bit akışının kontrol-ve bağlantı için taşıma ayrılmalıdır izin verir.

Komut seti

Tasarımcılar çevirici dili yapmaya teşebbüs ortogonal . Yani, talimatlar işlemleri ve ayrılır edilir adres modları ve neredeyse tüm adres modları hemen hemen tüm talimatlar için kullanılabilir. 56 talimatlar ve 16 bit minimum talimat boyutu vardır. Birçok talimatları ve adresleme modları ek adres veya mod bitlerini içerecek şekilde uzundur.

İmtiyaz seviyeleri

İşlemci ve daha sonra bütün aile, ayrıcalık iki seviye uygular. Kullanıcı modu, kesme seviyesi kontrolleri gibi ayrıcalıklı talimatlar dışında her şeyi erişim sağlar. Danışman ayrıcalık her şeye erişim sağlar. Bir kesme hep denetleyici olur. gözetmen bit durum sicilinde kayıtlı ve kullanıcı programlarına da görebilir.

Bu sistemin bir avantajı denetleyicisi seviyesinin ayrı yığın işaretçisi sahip olmasıdır. Bu izin çok görevli tasarımcıları kesme, bir maksimum yığın kadar yığını çerçeveleri tutmak için gerekli bellek tahsis gerekmez, çünkü görevleri için çok küçük yığınları kullanmak için sistem.

Kesmeler

İşlemci yedi tanır kesme seviyeleri. 5 arasındaki Seviyeleri 1 kesinlikle önceliklidir. Bu yüksek sayıda kesme her zaman daha düşük numaralı kesme işlemi kesintiye uğratabilir olup. Durum kayıt olarak, ayrıcalıklı bir talimat biri düşük veya eşit öncelikli kesmelerini engelleme, şimdiki asgari kesme seviyesini ayarlamanızı sağlar. Durum sicilinde kesme seviyesi 3'e ayarlanırsa Örneğin, 4 ila 7 den daha yüksek seviyeler bir istisna neden olabilir. Seviye 7 seviye tetikledi olan maskelenemez kesme (NMI). Seviye 1 herhangi bir yüksek düzeyine göre kesilebilir. Seviye 0 Hiçbir kesme anlamına gelir. Seviye durum sicilinde kayıtlı ve kullanıcı düzeyinde programlara da görebilir.

Donanım kesmeleri en yüksek tutuksuz kesme önceliği kodlamak üç girişlerini kullanarak CPU işareti vardır. Ayrı Encoder genellikle sistemler için bu üçten fazla donanım ek yazılım karmaşıklığı pahasına kodlanmış girişlerine doğrudan kesme sinyalleri bağlamak mümkündür kesmeleri gerekmez olsa kesmeler kodlamak için gereklidir. Kesinti denetçisi bir kadar basit olabilir 74LS148 öncelikli kodlayıcı ya da bu (kullanılan MC68901 Çok Fonksiyonlu Çevresel olarak bir VLSI çevresel çip bir parçası olabilir , Atari ST bilgisayar aralığı ve keskin X68000 da verilen), UART , zamanlayıcı, ve paralel I / O.

"Durum tablosu" ( kesme vektör tablosu kesme vektörü adresleri) 256 32-bit vektörler izin 0 1023 aracılığıyla adreslerde sabitlenir. Birinci vektör (RESET) İki vektör, yani başlangıç yığın adresi ve başlangıç kodu adresi içerir. : 15 arası Vektörler 3 değişik hataları bildirmek için kullanılır otobüs hatası , adres hatası, yasadışı talimat , sıfır bölünme , CHK ve CHK2 vektör, ayrıcalık ihlali (bloke etmek ayrıcalık tırmanmasını ) ve hat 1010 emülatörü oldu bazı ayrılmış vektörler, satır 1111 emülatörü ve donanım kesme . Vektör 24 başlar gerçek : kesmeler sahte kesme seviyesi ile daha sonra 7 autovectors, 16 TRAP vektörler, daha sonra biraz daha ayrılmış vektörler, daha sonra kullanıcı tanımlı vektörleri (donanım alındı), ve seviye 1.

En azından başlangıç kod adresi vektör her zaman reset geçerli olması gerektiği için, sistemler yaygın bazı kalıcı bellek (örn dahil ROM vektörleri ve içerdiği adresinde sıfır başlayarak) önyükleme kodu. İşletim sistemi, çalışma zamanında vektörleri değiştirmek mümkün olması için Bununla birlikte, genel amaçlı bir sistem olması arzu edilir. Bu genellikle bir ROM vektörleri işaret ya ile gerçekleştirilmiştir atlama tablo olarak RAM ya da kullanımı ile banka anahtarlama ROM zamanında RAM ile ikame izin vermek.

68000 uymayan Popek ve Goldberg sanallaştırma ihtiyaçlarını da ayrıcalıklı devletin az miktarda kullanıcı modu yazılım salt okunur erişim sağlayan tek bir imtiyazsız talimat "SR Hareket'i", çünkü tam işlemci sanallaştırma için.

68000 de kolayca destekleyemez sanal bellek tuzak becerisi gerektirir ve başarısız bir bellek erişimi kurtarmak. 68000 tuzak kullanılabilecek bir otobüs hatası istisna sağlamak, ancak işletim sistemi istisna ele alarak kez hatalı talimat sürdürmek için yeterli işlemci durumunu kaydetmez. Bazı şirketler farklı aşamalı saatler paralel olarak çalışan iki 68000 çipleri kullanarak çalıştı sanal bellek ile 68000 tabanlı Unix iş istasyonları yapımında başarılı oldu. "Lider" 68000 kötü bellek erişimi karşılaştı zaman ekstra donanım da kötü bellek erişimi karşılaşmadan engellemek için "ana" 68000 sözünü kesiyor. Bu kesme rutin sanal bellek fonksiyonlarını idare ve yeniden başlatmak olacaktır "ana" 68000 kesmesinden döndüğünde doğru durumda 68000 "lider" düzgün çalışmasını senkronize devam etmek.

Bu sorunlar MC68010 sürümü ile, 68k mimarisinin bir sonraki büyük revizyon sabitlendi. Otobüs Hata ve Adres Hatası istisnalar iyileşmeyi kolaylaştırmak için gözetmen yığını üzerine iç devletin büyük miktarda itin ve SR eğitiminden TAŞI ayrıcalıklı yapıldı. talimat Yeni imtiyazsız "MKO'dan TAŞI" kullanıcı modu yazılım tarafından yerine kullanılmak üzere temin edilmektedir; Eğer istenirse, bir işletim sistemi tuzak SR talimatlarından kullanıcı Mod Taşı taklit.

Talimat seti ayrıntıları

Standart adresleme modları şunlardır:

  • direkt Kayıt
    • veri kayıt, örneğin, "D0"
    • adres kayıt, örneğin, "A0"
  • dolaylı Kayıt
    • Basit adresi, örneğin, (A0)
    • + Sonrası artış, örneğin, (A0) ile Adres
    • Önceden azalmayla Adresi, örneğin - (A0)
    • 16-bit ile Adres ofset imzalı, örneğin 16 (A0)
    • indeks kaydı ve 8 bitlik imzalı ofset örneğin 8 (A0, D0) ya da 8 ile dolaylı Kayıt (A0, A1)
    - bunun için (A0) + ve Not (A0), gerçek artış veya azalma değerini işlenen büyüklüğüne bağlıdır: 1 ile bir bayt ile erişim artışlarla adres kaydı, 2 ile bir kelime ve uzun 4 ile.
  • deplasman bilgisayar (program sayacı) göreli
    • Bağıl 16 bit, ofset imzalı örneğin 16 (PC). Bu mod konumdan bağımsız kod için çok faydalı oldu.
    • 8-bit ile Bağıl indeksi ile ofset imzalı, örneğin 8 (PC, D2)
  • Mutlak bellek konumu
    • Ya bir sayı, örneğin, "4000 $" veya sembolik ad çevirici tarafından tercüme
    • Çoğu 68000 montajcı için "$" sembolü kullanılan onaltılık yerine "0x" veya bir eğik H.,
    • Bu adresleme modunun 16 ve 32-bit sürümleri vardı
  • Acil mod
    • talimatında depolanan veriler, örneğin "# 400"
  • Hızlı acil modu
    • 3-bit işaretsiz (veya moveq ile imzalanmış 8 bit) değeri ile işlem kodu depolanan
    • addq ve subq olarak, 0 ila 8 eşdeğeridir
    • (Hem d0 yapılmış olsa eşit 0) örn moveq # 0, d0 clr.l d0 daha çabuk oldu

Artı: erişimin durumu kayıt sonraki modellerinde, diğer özel kayıtlarında, ve.

Çoğu talimatlar, 16 bit kelime ( ".w ") ve 32 bit uzun (" .l ") (" .b") 8-bitlik bayt üzerinde gerçekleşmesi işlemleri izin, nokta harfli eklerini var.

Döneminin birçok CPU'lar gibi bazı talimatların döngüsü zamanlama kaynağı işlenen (ler) bağlı değişiyordu. Örneğin, işaretsiz çoklu kullanıcı burada 'n' tamamlamak için (38 + 2n) saat devir alır işlenen ayarlanan bit sayısına eşittir. Sabit bir devir sayımının aldı bir işlev oluşturmak için çarpın talimat sonra fazladan kod eklenmesini gerekli. Bu orijinal çarpma işlenen ayarlanan değildi her bit için ekstra döngüleri genelde tüketmek olacaktır.

Çoğu talimatlar verilmiştir diyadik o operasyon kaynağı, ve bir hedef vardır, ve hedef değiştirilir. Önemli talimatlar vardı:

  • Aritmetik: ADD, SUB, (çarpma imzalı) MULU (işaretsiz çarpma), MULS, DIVU, div'leri, NEG (katkı olumsuzlama) ve CMP (argümanlar çıkarılarak ve durum bitlerini ayarlayarak yapılan karşılaştırmanın bir tür ama saklamak etmedi sonuç)
  • İkili kodlu ondalık aritmetik: ABCD ve SBCD
  • Mantık: EOR (özel veya), VE, NOT (mantıksal değil) VEYA (dahil veya)
  • Kaydırma: LSL LSR ((mantıksal, yani doğru kaymalar en anlamlı bit sıfır koyun) aritmetik kaymalar , ROXL, ROXR (boyunca uzanır dönerek olup), ASR, ASL örneğin, en anlamlı bit-uzanır işareti) ROL, ROR
  • Bit testi ve manipülasyon bellekte (0) (1) BSET, BCLR, BCHG (ters bit) ve BTST (test edilen bit ise sıfır bitini ayarlamak 0)
  • Çoklu işlem kontrolünü: TAS, test ve set , izin, bölünmez bir otobüs işlem yürüttü semaforları tek hafızayı paylaşan birçok işlemcileri eşitlemek için kullanılmak üzere
  • Kontrol akışı: JMP (jump), JSR (alt yordam atlama), BSR (alt yordam göreli adres atlama), RTS (dönüş Değişmeze (dönüş), RTE istisna yani Bir kesme,), TRAP (benzer bir yazılım istisna tetiklemek yazılım kesmesi), CHK (şartlı yazılım istisna) için
  • Bölüm: Gizli ( "cc" durum yazmacındaki durum kodları 16 testlerin biri belirtilen: Eşit, daha fazla ve daha az, daha taşır ve durum yazmacındaki mevcut en kombinasyonları ve mantıksal dönüşmesi).
  • Azaltma ve dallardan: DBCC D-kayıt indirildiği ve bir hedefe dallanmış, ( "cc" dal talimatları gibi olduğu) bir durumda hala doğru olarak sağlanan ve yazmaç -1 indirildiği edilmemişti. Sonlandırma değeri olarak bu -1 kullanımı yerine 0 döngü girmeden önce ek bir kontrol için gerek kalmadan, sayım başlamak 0 ise hiçbir şey yapmak zorunda döngü kolay kodlama izin verdi. DBCC Bu da kolaylaştırdı yuvalama.

68EC000

Motorola 68EC000 denetleyici

68EC000 gömülü kontrol uygulamaları için tasarlanmış 68000 düşük maliyetli bir versiyonudur. 68EC000 bir ya sahip olabilir 8-bit veya 16-bit veri otobüsü Resettensonra, seçim yapilabilir.

İşlemcileri 8 ve 16 de dahil olmak üzere çeşitli hızlarda mevcuttur  MHz 2.100 ve 4.376 üreten konfigürasyonlar,  Dhrystones her. Bu işlemciler hiçbir bilgisi kayan nokta birimi , ve bir FPU uygulamak zordur işlemcisi ( MC68881 / 2 EC serisi gerekli yardımcı işlemci talimatı olmadığı için biriyle).

68EC000 dahil birçok ses uygulamalarında bir denetleyici olarak kullanılmıştır Ensoniq bunun bir parçasıydı müzik aletleri ve ses kartları, MIDI sentezleyici. Ensoniq ses kartlarında, kontrolör gemide bir CPU olmadan rakiplerine kıyasla birçok avantaj sağlamıştır. Tahta izin işlemci gibi çeşitli ses görevleri gerçekleştirmek için yapılandırılmış olması MPU-401 MIDI sentezi veya MT-32 , bir kullanılmadan, emülasyon TSR programı. Bu geliştirilmiş yazılım uyumluluğu, CPU kullanımı düşürdü ve ana bilgisayar sistemi bellek kullanımını ortadan kaldırmıştır.

Motorola 68EC000 çekirdek daha sonra m68k bazlı kullanılmıştır DRAGONBALL Motorola / gelen işlemciler Freescale .

Aynı zamanda bir ses denetleyicisi olarak kullanılmıştır Sega Saturn oyun konsolu ve bir denetleyici olarak HP Jetdirect Ethernet 1990'ların ortalarında için kontrol panoları LaserJet yazıcıları.

örnek kod

68000 montajcı Aşağıdaki kod adlı bir alt yordam içindir strtolowertüm alfabetik karakterler dönüştürmek hedef dizeye 8 bitlik karakter boş sonlandırılmış dize, küçük harfe kopyalar.

                     
                     
                     
                     
        
             
                     
                     
                     
00100000          
00100000  4E56 0000
00100004  306E 0008
00100008  326E 000C
0010000C  1018
0010000E  0C40 0041
00100012  6500 000E
00100016  0C40 005A
0010001A  6200 0006
0010001E  0640 0020
00100022  12C0
00100024  66E6
00100026  4E5E
00100028  4E75
0010002A
; strtolower:
; Copy a null-terminated ASCII string, converting
; all alphabetic characters to lower case.
;
; Entry parameters:
;   (SP+0): Source string address
;   (SP+4): Target string address

                org     $00100000       ;Start at 00100000
strtolower      public
                link    a6,#0           ;Set up stack frame
                movea   8(a6),a0        ;A0 = src, from stack
                movea   12(a6),a1       ;A1 = dst, from stack
loop            move.b  (a0)+,d0        ;Load D0 from (src), incr src
                cmpi    #'A',d0         ;If D0 < 'A',
                blo     copy            ;skip
                cmpi    #'Z',d0         ;If D0 > 'Z',
                bhi     copy            ;skip
                addi    #'a'-'A',d0     ;D0 = lowercase(D0)
copy            move.b  d0,(a1)+        ;Store D0 to (dst), incr dst
                bne     loop            ;Repeat while D0 <> NUL
                unlk    a6              ;Restore stack frame
                rts                     ;Return
                end

Altyordam kurar arama çerçeve çerçeve işaretçisi olarak A6 kayıt kullanılmıştır. Bu tür çağırma destekler evresel ve özyinelemeli kodu ve tipik gibi diller tarafından kullanılan C ve C ++ . Alt program o zaman (iletilen parametreleri alır srcve dstistiften). Daha sonra gelen bir ASCII karakter (tek bayt) okuma, döngüler srcsonra, bir küçük harfle dönüştürerek, bu alfabetik bir karakter olup olmadığını kontrol edip eğer öyleyse, dizeye karakterini yazarken dstdize. Son olarak, karakter olup olmadığını denetler null karakteri ; bu döngü tekrar değilse, aksi takdirde önceki yığın çerçevesi (A6 kayıt) ve döner yükler. Dize işaretçileri (A0 ve A1 kaydeder) otomatik artan döngü her tekrarında olduğuna dikkat edin.

Buna karşılık, aşağıdaki kod için bile AMS en kısıtlayıcı versiyonunda, tek başına bir fonksiyonu içindir TI-89 serisi , hiçbir değer tablolar, dosya veya kütüphanelerde infaz baktı ile çekirdek bağımsız olma hesap makineleri, hiçbir sistem çağrıları, istisna işleme, asgari kayıtlar kullanılacak, ne gerek herhangi kaydedin. Bu tarihsel için geçerlidir Jülyen 1 Mart 1 AD'nin gelen veya tarihlerden Gregoryen olanlar. En az iki düzine operasyonlar içinde, uygun bir günlük sayısını hesaplar ISO 8601 bunların karşılık gelen konumlarda muhafaza üç girişli çağrıldığında:

;
;  WDN, an address - for storing result d0
; FLAG, 0 or 2 - to choose between Julian or Gregorian, respectively
; DATE, year0mda - date stamp as binary word&byte&byte in basic ISO-format
;(YEAR, year ~ YEAR=DATE due to big-endianness)
;
     move.l DATE,d0
     move.l d0,d1
;
; Apply step 1 - Lachman's method of congruence
     andi.l #$f00,d0
     divu #100,d0
     addi.w #193,d0
     andi.l #$ff,d0
     divu #100,d0 ; d0 contains the month index in the upper word
;
; Apply step 2 - Using spqr as the Julian year of the last leap day
     swap d0
     andi.l #$ffff,d0
     add.b d1,d0
     add.w YEAR,d0
     subi.l #$300,d1
     lsr  #2,d1
     swap d1
     add.w d1,d0 ; spqr/4 + year + mi + da
;
; (Apply step 0 - Gregorian adjustment)
     mulu FLAG,d1
     divu #50,d1
     mulu #25,d1
     lsr  #2,d1
     add.w d1,d0
     add.w FLAG,d0 ; (sp32div16) + spqr/4 + year + mi + da
;
     divu #7,d0
     swap d0  ;  d0.w becomes the day number
;
     move.w d0,WDN ; returns the day number to address WDN
     rts
;
; Days of the week correspond to day numbers of the week as:
; Sun=0  Mon=1  Tue=2  Wed=3  Thu=4  Fri=5  Sat=6
;

Ayrıca bakınız

Referanslar

daha fazla okuma

Dış bağlantılar