Zilog Z80'ın piyasaya çıkışının 50. yılı
(goliath32.com)- Temmuz 1976'da piyasaya çıkan Zilog Z80, kişisel ve hobi bilgisayarlarından gömülü ve endüstriyel ekipmanlara kadar geniş ölçüde kullanılarak 8 bit mikroişlemci çağını temsil eden işlemcilerden biri oldu
- Intel 8080 ikili uyumluluğunu korurken yazmaç, adresleme, komut ve kesme özelliklerini genişletti; elektriksel bağlantılar ise daha basit tasarlandı
- 8008'in sınırlı yığını ve 14 bit adres alanı, 8080'de bellek tabanlı yığın ve 16 bit adres alanıyla iyileştirildi; Z80 ise buna indeks yazmaçları, alternatif yazmaç bankası ve blok komutları ekledi
- Tek 5V güç kaynağı, tek saat ve MREQ·IORQ·RD·WR denetim sinyalleri ile dahili DRAM yenileme sayesinde az sayıda çevre çipiyle bilgisayar kurulabiliyordu
- Z80 ailesi, Game Boy'un Sharp LR35902'si ve eZ80 gibi çeşitli türevler ortaya çıkardı; orijinal Z80 ise uzun endüstriyel ömrünün ardından Haziran 2024'te üretimden kaldırıldı
Datapoint 2200'den Intel 8008'e
- Computer Terminal Corporation(CTC), ayrık TTL çiplerinden oluşan 8 bit işlemci kullanan Datapoint 2200 programlanabilir terminalini geliştirdi
- TTL devresinin bir bölümünü özel IC ile değiştirme planı, tüm CPU'yu tek çipe koyma yönünde genişledi ve tasarımı sırasıyla Texas Instruments ile Intel üstlendi
- Her iki şirket de tasarımı zamanında tamamlayamadı; Intel'in çipi hazır olduğunda CTC zaten TTL tabanlı terminalini satıyordu
- CTC mühendisleri çipin performansından da memnun değildi ve yeni nesil terminalin mimarisini de değiştirmişti
- TI tasarımı durdurdu, ancak Intel aslen 1201 olan ürünü pazarlama adı olan 8008 ile ticarileştirdi
8008'in yapısı ve sınırları
- 8008, A·B·C·D·E·H·L olmak üzere 7 yazmaç sunuyordu
- A akümülatördü, H ve L ise bellek işaretçisi HL'yi oluşturuyordu
- Sözde yazmaç M, HL'nin işaret ettiği bellek baytını gösteriyordu
- ALU durumu Carry, Parity, Zero ve Sign bayraklarıyla tutuluyor; bunlar koşullu atlama, çağrı ve dönüşlerde kullanılıyordu
- Program sayacı doğrudan ele alınması zor bir yapıdaydı ve işlev çağrıları için işlemci içindeki 8 aşamalı dönüş adresi yığını kullanılıyordu
- Bunun nedeni, Datapoint 2200'ün seri bellek kullanmasının planlanması ve bellek tabanlı çağrı yığınının darboğaz yaratabileceğinin düşünülmesiydi
- Bellek adresi 14 bit idi ve ayrı bir adres alanında 32 I/O portu sağlanıyordu
- Kesme oluştuğunda çevre aygıtı veri yoluna RST komutunu koyuyor, CPU da bunu yürütüyordu
- RST, adres alanının başındaki 8 yuvadan birini çağırıyordu
- Genel amaçlı bellek yığını olmadığından ve tüm bellek erişimleri HL gerektirdiğinden, kesme sırasında yazmaçları kaydetmek için I/O yolundaki harici latch'lerin geçici yazmaç olarak kullanılması gerekiyordu
- Yaklaşık 3.500 transistör ve DIP18 paket kullanıyordu; adres ve veri yolunu çokluyordu
- Harici devrenin veri yolunu latch'lemesi ve CPU'nun iç durum sinyallerini yorumlaması gerekiyordu
- Fazları farklı 500kHz'lik iki saat ve +5V·-9V güç gerektiriyordu
8008'den 8080'e
- 8008 geliştirmesi bitmeden önce bile sınırlarını iyileştirme tartışmaları başladı, ancak Intel yönetimi önce pazar tepkisini görmek istedi
- Federico Faggin, geliştirilmiş sürümün geliştirilmesini itti; rakiplerin 8 bit ürün duyurusuna kadar beklenmesi sonucunda Intel 9 aylık öncülük süresini kaybetti
- Faggin, proje onayından önce bile Busicom'dan Masatoshi Shima'yı alıp 8080 tasarımına kattı
- Potansiyel müşterilerin 8008 demolarında verdiği eleştiri ve geri bildirimler de yansıtıldı; baştan itibaren 8008 ile ikili uyumluluktan vazgeçme kararı alındı
8080 mimarisi
- 8080, 8008'e benzer yazmaç yapısını korurken dahili dönüş adresi yığınını kaldırdı ve SP'nin işaret ettiği bellek yığınını getirdi
- BC·DE·HL·AF yazmaç çiftleri yığına konulup çıkarılabiliyordu
- Intel assembly'de AF, program durum sözcüğü olan PSW diye adlandırılıyordu
- Adres alanı 16 bit 64KB'ye, I/O portları ise 256'ya çıktı
- BC ve DE üzerinden sınırlı dolaylı erişim mümkün hale geldi
- Akümülatör ve HL, doğrudan belirtilen adresten okunup o adrese yazılabiliyordu
- Yazmaç çifti artırma/azaltma gibi 16 bit işlemler eklendi; böylece işaretçi hesapları ve 16 bit sayaçlar işlenebildi
- Bu işlem bloğu ALU bayraklarını etkilemediğinden, BC azaltıldıktan sonra iki baytın da 0 olup olmadığı ayrıca kontrol edilmeliydi
- Kesmeler, RST tabanlı yöntemi korurken yazılımla etkinleştirilip devre dışı bırakılabilir hale geldi
- Açık bellek yığını sayesinde yazmaç saklamak için I/O donanımı gereksinimi ortadan kalktı
- Intel 8080 assembly'sinde mnemonikler ile opcode'lar neredeyse bire bir eşleşiyordu; bu da assembler uygulamasını kolaylaştırırken insanlar için okumayı rahatsız edebiliyordu
- Yazmaç çifti komutları yalnızca bir taraftaki yazmaç adını kullanıyor, INX'teki X ise tek baytlık INC'den ayırmak için ekleniyordu
8080'in elektriksel arayüzü
- Hızı artırmak için NMOS mantığına geçilirken -5V·+5V·+12V olmak üzere üç güç hattı ve fazları farklı iki saat gerekli oldu
- 40 pinli paket sayesinde adres ve veri hatları ayrıldı, ancak bazı denetim durumları veri yolu üzerinde çoklandığı için harici latch ve decoder hâlâ gerekiyordu
- Intel, durum çözümleme ve saat üretimi için destek çipleri sattı; sisteme göre kesme denetleyicisi, zamanlayıcı ve DMA denetleyicisi de gerekebiliyordu
- Programlanabilir zamanlayıcı en azından DRAM yenilemeyi sürmek için kullanılabiliyordu
- Sonraki 8085, tek 5V güç ve tek 5V saat kullandı ve bazı denetim sinyalleri ekledi, ancak yine de özel destek çipleri gerektiriyordu
Zilog'un kurulması ve Z80'in geliştirilmesi
- 8080 projesinin onay gecikmesinden ve Intel yönetimiyle yaşanan çatışmalardan memnun olmayan Faggin, mikroişlemci bölümünün başındaki Ralph Ungermann ile birlikte Intel'den ayrılıp şirket kurdu
- Başta mikrodenetleyici düşünülse de, fabless yarı iletken girişimi için kâr marjının düşük olduğuna karar verildi
- Ardından 8080'in geliştirilmiş sürümü olan Super 80 tasarlanmaya karar verildi ve bu ürün Zilog Z80'e dönüştü
- Exxon'dan finansman sağlandı ve Shima da Intel'den transfer edildi
- Yerleşim ve yazılım simülasyonu gibi işleri üstlenen ekip toplam 11 kişiye çıktı
- Amaç, 8080 ikili uyumluluğunu korurken yazmaç, adresleme yöntemi ve komutlar eklemek; ayrıca 6800 gibi çağdaş işlemcilerin özelliklerini yansıtmaktı
- 8080'den daha yüksek hız ve daha basit elektriksel bağlantı da hedefler arasındaydı
- Çalışan ilk prototipe kadar yaklaşık 400 bin dolar harcandı ve Exxon'dan alınan 500 bin dolarlık bütçenin altında kalınarak takvim korundu
- Üretim, ilk anlaşılan Synertek ile yaşanan anlaşmazlığın ardından Mostek'e dayandı
- Daha sonra Exxon'un ek yatırımıyla kendi fab'i kuruldu, ancak Z80'in çoklu tedariki sürdürüldü
Z80 mimarisindeki genişlemeler
- Z80, 8080 komut kümesiyle tamamen ikili uyumluydu
- 6800'den esinlenen 16 bit indeks yazmaçları IX ve IY eklendi
- Opcode önekleri kullanılarak HL yerine kullanılabiliyor, anlık ofset de destekleniyordu
- AF·BC·DE·HL yazmaç çiftleri alternatif bankalara sahipti; böylece kesme işleme sırasında hızlı geçiş yapılabiliyordu
- Kesmeler üç mod sunuyordu
- Mod 0, 8080 uyumlu yöntemdi
- Mod 1, her zaman sabit bir adresi çağırıyordu
- Mod 2, veri yolundaki değeri indeks olarak kullanıp çağrı tablosuna dallanıyor; ayrı bir yazmaç da tablonun bellek taban adresini belirliyordu
- Bit döndürme, test etme ve ayarlama; BCD işlemleri; BC'yi sayaç olarak kullanan tekrar komutları; blok aktarımı, karşılaştırma ve string işlemleri eklendi
- Tüm bir bayt kopyalama döngüsü, kendi kendine tekrar eden LDIR komutuyla değiştirilebiliyordu
- Intel assembly mnemonikleri üzerinde telif hakkı iddia ettiği için Z80 kendi sözdizimini benimsedi
- İşlenenler daha açık yazılıyor ve temel mnemonikler aşırı yüklenerek 8080 sözdizimine göre daha okunabilir hale getiriliyordu
Basitleştirilmiş veri yolu tasarımı
- Z80 yalnızca tek 5V güç kaynağı ve tek saat gerektiriyordu
- 8080'de harici devrenin latch'leyip yorumladığı durumlar, ayrılmış sinyallerle doğrudan veriliyordu
- MREQ ve IORQ, bellek ile I/O erişimini ayırıyordu
- RD ve WR, okuma ve yazmayı gösteriyordu
- M1, mevcut bellek erişiminin komut getirme olduğunu bildiriyordu
- Adres ve veri hatlarını doğrudan bağlayıp, yalnızca bir 74xx138 ile EEPROM·RAM·UART seçen devre düzeyinde basit bir yapı kullanılarak temel bilgisayar kurulabiliyordu
- Dahili yenileme sayacı, komut çözümleme çevrimi sırasında adres yoluna değer çıkarıp denetim hatlarını etkinleştirerek DRAM yenilemesini yürütüyordu
- Kesme modu 1 kullanıldığında harici kesme denetleyicisi olmadan tek bir aygıt kesme pinine bağlanabiliyordu
- Birden fazla aygıt ise 74xx148 öncelik kodlayıcı ve latch gibi basit devrelerle ele alınabiliyordu
Z80 sonrası gelişmeler
- Z80 Temmuz 1976'da piyasaya çıkmadan önce bile 16 bit Z8000'in ilk tasarımı başlamıştı; ürün ise Intel 8086'dan sonra ve Motorola 68000'den önce, 1979'da çıktı
- Z8000, 8086 gibi bölümlü bellek kullanıyordu; ancak segment numarasını veri yoluna çıkarıyor, harici MMU da doğrusal adres çevirisi ile aralık ve yetki denetimini üstleniyordu
- 8086 komut kümesinde, 8080 soyunun yanı sıra Z80'in kendi tekrar eden blok, string ve döngü komut özellikleri de yansıdı
- Z8000 MMU tasarımı, 286'nın tanımlayıcı tablosu tabanlı 16 bit korumalı modu üzerinde de etkili oldu
Exxon, IBM PC ve Zilog'daki değişim
- Zilog, mikroişlemcilerin mantık devresi yerine geçen bileşenler sayıldığı dönemden itibaren bilgisayar pazarını hedefledi; ancak Exxon ile ilişkisi, IBM'in PC'de Zilog yerine Intel 8088 seçmesinin nedenlerinden biri oldu
- Exxon, IBM'e karşı kendi bilişim iş grubunu kurmak istedi ve daktilo, kelime işlemci, yazıcı üreticileri gibi şirketlere stratejik yatırımlar yaptı
- Bunların bazıları Zilog bileşenleri tabanlı ürünler tasarlayarak IBM ürünlerinin pazar payını aşındırdı
- Exxon ile yakın ilişki, Faggin ile Ungermann arasında da çatışma yarattı ve Ungermann, Zilog 1980'de Exxon'un tamamen bağlı ortaklığı olmadan önce şirketten ayrıldı
- Zilog, 1989'da Exxon'dan yeniden ayrıldı ve 1991'de halka açıldı
- Sonrasında özel sermaye fonları ve elektronik şirketleri arasında birkaç kez el değiştirdi; bugün Littelfuse tarafından sahipleniliyor
- Z80, uzun süre gömülü işlemci olarak kullanıldıktan sonra Haziran 2024'te üretimden kaldırıldı
Kişisel Z80 deneyimi ve uzun vadeli etkisi
- Z80 ve onunla ikili uyumlu 8080·8085, 8 bit mikrobilgisayarların fiili donanım standardının oluşmasına katkı sağladı; CP/M ve Microsoft BASIC'in de fiili yazılım standardı haline gelmesinin temelini oluşturdu
- Z80, ilk kişisel bilgisayarlarda, ev ve hobi bilgisayarlarında ve çeşitli gömülü ile endüstriyel sistemlerde kullanıldı
- Orijinal Game Boy'daki Sharp LR35902 başta olmak üzere kopyalar ve türev mimariler de ortaya çıktı
- Zilog, 16 ve 32 bit türev ailelerini bıraktıktan sonra boruhattı ve yüksek saat hızları uygulayan eZ80 gibi Z80 tabanlı mikrodenetleyicilere geri döndü
- Gençlik yıllarının sonlarında elektronik parça kataloğunda hâlâ satılmakta olan Z80'i keşfettikten sonra küçük bir bilgisayar tasarladı ve okulun karanlık odasını gece kullanarak PCB aşındırdı
- Öğretmenlerden, eski ev bilgisayarları ve konsollar ile Tupperware kutusu içine wire-wrap ile yapılıp CP/M·WordStar çalıştıran bilgisayarlar gibi deneyimler dinledi
- MCS-85 parçaları ile Z80·8085·6502·6522 çiplerini de alıp kendi projelerinde kullandı
- Bu süreçte, güvenilir power-on reset'in beklenenden zor olduğunu, linker'ın assembler'dan çok daha zor uygulanabildiğini ve bireylerin de gerçekten derleyici yapabileceğini öğrendi
1 yorum
Hacker News yorumları
1978’de programlamaya assembly diliyle başladım; yalnızca yazılımı değil, donanımın nasıl çalıştığını da bilmek istiyordum.
Bir Z80 kitini topladıktan sonra mantık probu ve osiloskopla dijital elektroniği öğrendim, kılavuzları didik didik ederek komut setini kavradım. Şimdi neredeyse 70 yaşındayım ama dün olmuş gibi canlı; Z80 gerçekten harika bir CPU’ydu.
Ders ya da kitap olmadan ROM’u tersine çevirip Motorola özet kartına bakarak kendi kendime öğrendim; sonrasında birkaç startup kurarak başarılı bir kariyer yaptım. Bilgisayarı en alt katmandaki ilk ilkelerden öğrenmenin hâlâ yeri doldurulamaz bir değeri var.
NAND kapılarıyla temel devreler kurup işlevsel birimler ve komut çözücüleri birleştirerek Turing-complete bir mimari inşa ettiğiniz, ardından kendi tanımladığınız assembly diliyle programladığınız bir dijital mantık simülasyon oyunu. Yeni bir opcode gerekiyorsa kendiniz uygulayabiliyorsunuz; zor ama çok tatmin edici. Tam sürüme yaklaştı ve fragmanı da yayımlandı.
FORK86-64gibi bir şey ortaya koyduğunu görmek isterdim.12 yaşındayken TV programı “Klein Microcomputer Sebstgebaut und Programmiert”in kitiyle bir Z80 bilgisayarı topladım.
Güç kaynağı olarak Märklin trafosu, veri depolama için Telefunken teybi kullandım; bir ay modülü iniş oyununu Z80 makine koduyla girdikten sonra programı kaybetmekten korktuğum için iki hafta boyunca elektriği hiç kapatmadım.
ZX Spectrum’un 1980’lerine dönmüş gibi hissettiriyor; o zamanlar 128 KB RAM karşılanması zor bir lükstü. Bugünle de biraz benzer.
https://spectrumcomputing.co.uk/entry/2000237/Book/Mastering...
http://www.primrosebank.net/computers/zxspectrum/docs/Comple...
ZX-81 kullanıcı kılavuzunun sonundaki Z80 komut referans tablosuna bakıp hiçbir şey anlamadığımı hatırlıyorum. BASIC gibi yüksek seviyeli soyutlamalardan farklı olarak, CPU’nun bir programı gerçekte nasıl çalıştırdığını kavramam epey zaman aldı.
JPGOTOya,CALLGOSUBa,CPIFe,JP ZTHEN GOTOya,LDiseLETe karşılık geliyordu.“Z80, 8080 komut setiyle tamamen ikili uyumludur” ifadesi flag register da hesaba katılırsa doğru değil. Bazı işlemlerde parity flag’in davranışı farklıydı.
Ayrıca 8080’in tanımsız opcode’larını kullanan programlar keyfî biçimde çalışabiliyordu; Z80 ise bu opcode’ları yeni komutlar için yeniden kullandı.
Böylece parity flag’i overflow flag olarak yeniden kullanmak mümkün oldu ve bu çok yararlı bir genişletmeydi. Datapoint 2200, Intel 8008, Intel 8080 ve RISC-V, donanımın overflow’u algılamadığı nadir komut setlerinden; basit ve ucuz erken tasarımlardan farklı olarak RISC-V’nin mazereti yok ve bence en büyük hatası bu.
1983 başlarında TRS-80 Model I üzerinde Z80 assembly diliyle programlamaya başladım. Bill Barden’ın kitapları ve 80 Micro dergisindeki Hardin Brothers imzalı “The Next Step” yazı dizisi yolu açtı; o dönemdeki deneyimimi bu yazıda topladım.
Bir çocuğun bile anlayacağı kadar açıktı; baştan sona okudum. Gerçek bir Z80’e hiç dokunmamış olsam da 6502 ile 8051 ve PIC gibi erken mikrodenetleyicileri de zorlanmadan anlamamı sağlayan temeli verdi. Bugün bile modern mikroişlemcileri Z80’e benzeterek anlıyor gibiyim; sıradan bir insanın tamamını kavrayabileceği kadar basit olan 8 bit mikroişlemci öğrenimini tavsiye ederim.
Yüksek seviyeli dil derleyicilerinin pahalı olduğu, shareware’in de bugünün açık kaynak yazılımları kadar kolay bulunmadığı dönemde Z80 ile başladım. Makineye ne yaptırdığınızı anlamak için herkesin biraz assembly öğrenmesi gerekir; Z80 akıl yürütmek için yeterince basitti.
35 yıl önce programları elle assemble edip onaltılık makine kodunu karta girmek gerekiyordu. Bunu kolaylaştırmak için kendi assembler’ımı yazdım; bu deneyim beni geliştirici araçları alanından büyük C++ derleyicileri üzerinde çalışmaya kadar götürdü.
Hâlâ ABD’de milyonlarca öğrencinin kullandığı ve BASIC ile programlanabilen TI-84 hesap makinesi atlanmış. Siyah-beyaz modeller Z80, renkli ekranlı modeller ise eZ80 kullanıyor.
Arkadaşlarımla TI-BASIC’te küçük programlar yapıp birbirimize göstererek çok zaman geçirdik ama Z80 assembly’ye kadar öğrenemedim. TI-84 Plus için Z80 assembly kılavuzunun tamamını yazdırıp okumaya başladım, ama hâlâ tek satır bile yazmış değilim.