1 puan yazan GN⁺ 7 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 7 시간 전
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.

    • 3 yıl sonra 6809 tabanlı 4 KB’lık bir Radio Shack bilgisayarıyla başladım; 40 yılı aşkın süredir 6809 kodu yazmamış olsam da hâlâ birçok opcode’u hatırlıyorum ve yakın zamanda retrocomputing.stackexchange.com’da zorlu bir assembly hatasının çözülmesine yardım ettim.
      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.
    • Turing Complete(https://turingcomplete.game/) öneririm.
      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ı.
    • Z80 ve 6502’nin ikisi de şirket içinde reddedilmiş tasarımlardan doğdu. Bugün işler çok daha karmaşıklaştı ama başka bir tasarımcının FORK86-64 gibi bir şey ortaya koyduğunu görmek isterdim.
    • Ben de ZX81 için harici çevre birimleri bile kendim yapmıştım.
  • 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ı.

    • 12 yaşındayken tam tersine, BASIC’in basit yapısı sayesinde Z80 assembly dilini anlamak daha kolaydı. Bellek adresleri satır numaralarına, register’lar değişkenlere, JP GOTOya, CALL GOSUBa, CP IFe, JP Z THEN GOTOya, LD ise LETe karşılık geliyordu.
    • İlk satın aldığım bilgisayar kit halinde bir ZX-81’di ve küçük bir şehirde bilgi teknolojisinin öncülerinden biri oldum. Her şeyin hem karmaşık hem de basit olduğu zamanlardı; sadece 1 KB RAM ile uçuş simülatörü bile çalıştırıyorduk.
    • Bilgisayarlarla ilk kez ZX-81 üzerinden tanıştım; hızlı modda ekranı kapatma yöntemi ve donanım ile yazılım arasındaki ilginç ödünleşimler beni büyülemişti.
  • “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ı.

    • Parity flag’i kusursuz biçimde uyumlu tutmamak akıllıca bir tercihti. Mevcut programlar bunu neredeyse hiç kontrol etmiyordu; Z80’de farklı davranan komutlardan sonra ise fiilen hiç kontrol etmiyordu.
      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.
    • Tanımsız işlemler 8080 komut setinin parçası değildir; bu yüzden bunları desteklemek komut seti değil, 8080 silikonuyla ikili uyumluluk anlamına gelir. Ancak parity flag farkı gerçek uyumluluğu bozduğu için doğru ifade “parity flag değerleri hariç, yalnızca 8080 komut setine dayanan kodla ikili uyumludur” olur.
  • 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.

    • 1980 civarında ergenken mahalledeki Radio Shack’ten gücüm yettiğince kitap alıp okurdum; TRS-80 Z80 kullandığı için Howard Sams’in yayımladığı Bill Barden’ın Z80 kitabıyla da tanıştı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ü.

    • 1980’lerde ben dahil birçok kişi Z80 komutlarının onaltılık kodlarını sembolik assembly kadar kolay okuyabiliyordu. Microsoft CP/M BASIC yorumlayıcısını veya FORTRAN derleyicisini tersine mühendislik yaparken çok işe yarıyordu.
    • Böyle işler 1970’lerin sonuna aitmiş gibi geliyor ama aslında 1991’di. Bir programın her an tam olarak ne yaptığını bilebilmek harikaydı; fakat karmaşık bir şey uygulamak oldukça zahmetliydi.
    • Assembly dilini CPU’nun anladığı tek dil olan makine koduna elle çevirmiş oluyordunuz.
  • 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.

    • Avrupa’da da liseler TI-84 Plus satın alınmasını şart koşuyordu; hâlâ mağazalarda satıldığına göre kullanılmaya devam ediyor gibi.
      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.
    • TI-84+ en sevdiğim retro bilgisayarlardan biri olabilir.
    • Benimki TI-83’tü; o tür gelişmiş teknolojiler yoktu.