Zilog Z80 के लॉन्च की 50वीं वर्षगांठ
(goliath32.com)- जुलाई 1976 में जारी किया गया Zilog Z80 व्यक्तिगत और हॉबी कंप्यूटरों से लेकर embedded और industrial उपकरणों तक व्यापक रूप से इस्तेमाल हुआ और 8-bit microprocessor युग का प्रतिनिधि बन गया
- Intel 8080 binary compatibility बनाए रखते हुए इसने registers, addressing, instructions और interrupt features का विस्तार किया, और electrical connections को अधिक सरल बनाया
- 8008 की सीमित stack और 14-bit address space को 8080 में memory stack और 16-bit address space के रूप में सुधारा गया था, और Z80 ने इसमें index registers, alternate register bank और block instructions जोड़े
- single 5V power supply, single clock, MREQ·IORQ·RD·WR control signals, और built-in DRAM refresh की वजह से कम peripheral chips के साथ कंप्यूटर बनाया जा सकता था
- Z80 परिवार से Game Boy का Sharp LR35902 और eZ80 जैसे कई derivative products निकले, और मूल Z80 ने लंबा industrial lifecycle पूरा करने के बाद जून 2024 में discontinuation देखा
Datapoint 2200 से Intel 8008 तक
- Computer Terminal Corporation(CTC) ने discrete TTL chips से बने 8-bit processor वाले Datapoint 2200 programmable terminal का विकास किया
- TTL circuitry के कुछ हिस्सों को custom IC से बदलने की योजना आगे बढ़कर पूरे CPU को एक single chip में डालने तक पहुंची, और Texas Instruments तथा Intel ने अलग-अलग इसका design लिया
- दोनों कंपनियां समय सीमा के भीतर design पूरा नहीं कर सकीं, और जब Intel की chip तैयार हुई तब तक CTC पहले ही TTL-based terminal बेच रही थी
- CTC के engineers chip के performance से भी संतुष्ट नहीं थे, और वे अगली पीढ़ी के terminal की architecture भी बदल चुके थे
- TI ने design रोक दिया, लेकिन Intel ने मूल 1201 उत्पाद को marketing नाम 8008 देकर commercialize किया
8008 की संरचना और सीमाएं
- 8008 में A·B·C·D·E·H·L कुल 7 registers थे
- A accumulator था, और H तथा L मिलकर memory pointer HL बनाते थे
- pseudo-register M, HL द्वारा इंगित memory byte को दर्शाता था
- ALU state को Carry, Parity, Zero और Sign flags में रखा जाता था, और इन्हें conditional jump, call और return में इस्तेमाल किया जाता था
- program counter को सीधे संभालना कठिन था, और function call के लिए processor के भीतर मौजूद 8-level return address stack का उपयोग होता था
- यह design इस सोच पर आधारित था कि Datapoint 2200 serial memory का उपयोग करेगा, इसलिए memory-based call stack bottleneck बन सकता था
- memory address 14-bit का था और अलग address space में 32 I/O ports दिए गए थे
- interrupt होने पर peripheral device data bus पर RST instruction रखता था और CPU उसे execute करता था
- RST address space की शुरुआती 8 slots में से एक को call करता था
- general-purpose memory stack न होने और हर memory access के लिए HL की जरूरत पड़ने के कारण, interrupt handling के दौरान registers सहेजने के लिए I/O bus के external latch को temporary register की तरह इस्तेमाल करना पड़ता था
- इसमें लगभग 3,500 transistors और DIP18 package का उपयोग हुआ, तथा address और data bus multiplexed थे
- external circuitry को bus latch करना और CPU के internal state signals को interpret करना पड़ता था
- इसके लिए 500kHz के दो अलग phase clocks और +5V·-9V power की जरूरत थी
8008 से 8080 तक
- 8008 के development के खत्म होने से पहले ही उसकी सीमाओं को सुधारने पर चर्चा शुरू हो गई थी, लेकिन Intel management पहले market response देखना चाहता था
- Federico Faggin ने improved version के development को आगे बढ़ाया, लेकिन competitor के 8-bit product announcement का इंतजार करने के कारण Intel ने 9 महीने की lead खो दी
- Faggin ने project approval से पहले ही Busicom के Masatoshi Shima को लाकर 8080 design में लगाया
- संभावित ग्राहकों से 8008 demo के दौरान मिली आलोचनाएं और feedback भी शामिल किए गए, और शुरुआत से ही 8008 के साथ binary compatibility छोड़ने का फैसला किया गया
8080 architecture
- 8080 ने 8008 जैसी register organization बनाए रखी, लेकिन internal return address stack हटा दिया और SP द्वारा इंगित memory stack अपनाया
- BC·DE·HL·AF register pairs को stack में push या pop किया जा सकता था
- Intel assembly में AF को program status word PSW कहा जाता था
- address space बढ़कर 16-bit 64KB हुआ और I/O ports 256 हो गए
- BC और DE के माध्यम से सीमित indirect access संभव हुआ
- accumulator और HL को immediate रूप से दिए गए address पर read या store किया जा सकता था
- register pair increment/decrement जैसे 16-bit operations जोड़े गए, जिससे pointer calculation और 16-bit counters संभालना संभव हुआ
- यह operation block ALU flags को प्रभावित नहीं करता था, इसलिए BC को decrement करने के बाद अलग से जांचना पड़ता था कि दोनों bytes 0 हैं या नहीं
- interrupt में RST-आधारित तरीका बना रहा, लेकिन अब इसे software से enable या disable किया जा सकता था
- explicit memory stack की वजह से register saving के लिए I/O hardware की जरूरत नहीं रही
- Intel 8080 assembly में mnemonic और opcode लगभग 1:1 correspondence में थे, इसलिए assembler implementation आसान था, लेकिन इंसानों के लिए पढ़ना असुविधाजनक हो सकता था
- register pair instructions में केवल एक तरफ के register name का उपयोग होता था, और INX में X का उपयोग single-byte INC से अलग दिखाने के लिए किया गया था
8080 का electrical interface
- अधिक speed के लिए NMOS logic अपनाने पर -5V·+5V·+12V की तीन power supplies और दो अलग phase clocks की जरूरत हुई
- 40-pin package की वजह से address lines और data lines अलग हो गईं, लेकिन कुछ control state अब भी data bus पर multiplexed थीं, इसलिए external latch और decoder की जरूरत बनी रही
- Intel ने state decoding और clock generation के लिए support chips बेचे, और system के अनुसार interrupt controller, timer, और DMA controller भी चाहिए होते थे
- programmable timer का उपयोग कम से कम DRAM refresh चलाने के लिए किया जा सकता था
- बाद का 8085 single 5V power supply और single 5V clock पर गया और कुछ control signals जोड़े, लेकिन फिर भी special support chips की जरूरत रही
Zilog की स्थापना और Z80 का विकास
- 8080 project approval में देरी और Intel management के साथ टकराव से असंतुष्ट Faggin ने microprocessor division के प्रमुख Ralph Ungermann के साथ Intel छोड़कर नई कंपनी बनाई
- शुरुआत में microcontroller पर विचार हुआ, लेकिन fabless semiconductor startup के लिए margins बहुत कम माने गए
- बाद में 8080 के improved version Super 80 को design करने का फैसला किया गया, और यही आगे चलकर Zilog Z80 बना
- Exxon से funding मिली और Shima को भी Intel से लाया गया
- layout, software simulation आदि देखने वाली team बढ़कर कुल 11 लोगों की हो गई
- लक्ष्य था 8080 binary compatibility बनाए रखते हुए registers, addressing modes और instructions जोड़ना, साथ ही 6800 जैसे समकालीन processors की विशेषताएं शामिल करना
- 8080 से अधिक speed और अधिक सरल electrical interfacing भी लक्ष्य थे
- पहले काम करने वाले prototype तक पहुंचने में लगभग 400,000 डॉलर लगे, जो Exxon से मिले 500,000 डॉलर budget से कम था और schedule भी पूरा रहा
- production शुरू में Synertek के साथ contract पर निर्भर थी, लेकिन टकराव के बाद Mostek पर निर्भर होना पड़ा
- बाद में Exxon के अतिरिक्त निवेश से अपनी fab बनाई गई, लेकिन Z80 की multiple sourcing जारी रही
Z80 architecture का विस्तार
- Z80 8080 instruction set के साथ पूरी तरह binary compatible था
- 6800 से प्रेरित 16-bit index registers IX और IY जोड़े गए
- opcode prefixes का उपयोग करके इन्हें HL की जगह इस्तेमाल किया जा सकता था, और immediate offset भी समर्थित था
- AF·BC·DE·HL register pairs के alternate banks थे, जिससे interrupt handling के समय तेज switch संभव हुआ
- interrupt के लिए तीन modes दिए गए
- mode 0, 8080-compatible तरीका था
- mode 1 हमेशा एक fixed address को call करता था
- mode 2 bus के value को index बनाकर call table में branch करता था, और एक अलग register table के base memory address को निर्दिष्ट करता था
- bit rotate, test, set, BCD arithmetic, BC को counter की तरह उपयोग करने वाले repeat instructions, और block transfer, compare, string operations जोड़े गए
- पूरे byte-copy loop को self-repeating instruction LDIR से बदला जा सकता था
- Intel ने assembly mnemonics पर copyright का दावा किया था, इसलिए Z80 ने अपनी syntax अपनाई
- operands को अधिक स्पष्ट रूप से लिखा गया और basic mnemonics को overload करके इसे 8080 syntax की तुलना में अधिक readable बनाया गया
सरल हुआ bus design
- Z80 को single 5V power supply और single clock ही चाहिए था
- 8080 में external circuitry द्वारा latch और interpret की जाने वाली state को यह dedicated signals के रूप में सीधे देता था
- MREQ और IORQ memory और I/O access को अलग करते थे
- RD और WR read और write को दिखाते थे
- M1 बताता था कि वर्तमान memory access instruction fetch है
- address lines और data lines को सीधे जोड़कर, और सिर्फ 74xx138 से EEPROM, RAM, UART चुनने जैसी circuitry के साथ एक basic computer बनाया जा सकता था
- internal refresh counter instruction decode cycle के दौरान address bus पर value आउटपुट करता था और control lines सक्रिय करके DRAM refresh संभालता था
- interrupt mode 1 का उपयोग करने पर external interrupt controller के बिना एक single device को interrupt pin से जोड़ा जा सकता था
- कई devices को 74xx148 priority encoder और latch जैसी सरल circuitry से संभाला जा सकता था
Z80 के बाद की प्रगति
- जुलाई 1976 में Z80 के launch से पहले ही 16-bit Z8000 का प्रारंभिक design शुरू हो गया था, और यह product Intel 8086 के बाद तथा Motorola 68000 से पहले 1979 में जारी हुआ
- Z8000 ने 8086 की तरह segmented memory का उपयोग किया, लेकिन segment number को bus पर आउटपुट किया जाता था और external MMU linear address translation तथा range और permission checks संभालता था
- 8086 instruction set में 8080 की विरासत के साथ Z80 के self-repeating block, string और loop instructions की विशेषताएं भी दिखती हैं
- Z8000 MMU design ने 286 के descriptor table-based 16-bit protected mode को भी प्रभावित किया
Exxon, IBM PC और Zilog में बदलाव
- Zilog ने उस दौर से computer market को लक्ष्य बनाया था जब microprocessors को logic circuitry के विकल्प के रूप में देखा जाता था, लेकिन Exxon के साथ उसका संबंध IBM द्वारा PC में Zilog की जगह Intel 8088 चुनने के कारणों में से एक बना
- Exxon IBM का मुकाबला करने के लिए अपना computing business group बनाना चाहता था, और typewriter, word processor, printer बनाने वाली कंपनियों में रणनीतिक निवेश करता था
- इनमें से कुछ ने Zilog components पर आधारित products डिजाइन किए और IBM products की market share को काटा
- Exxon के साथ करीबी संबंध ने Faggin और Ungermann के बीच भी तनाव पैदा किया, और Ungermann ने 1980 में Zilog के Exxon की पूर्ण subsidiary बनने से पहले कंपनी छोड़ दी
- Zilog 1989 में फिर Exxon से अलग हुआ और 1991 में listed हुआ
- इसके बाद private equity firms और electronics companies के बीच कई बार ownership बदली, और अब यह Littelfuse के स्वामित्व में है
- Z80 लंबे समय तक embedded processor के रूप में इस्तेमाल होने के बाद जून 2024 में discontinued हो गया
व्यक्तिगत Z80 अनुभव और दीर्घकालिक प्रभाव
- Z80 और उसके binary-compatible 8080·8085 ने 8-bit microcomputers के लिए de facto hardware standard बनाने में योगदान दिया, और CP/M तथा Microsoft BASIC के de facto software standards बनने की नींव रखी
- Z80 का उपयोग शुरुआती personal computers, home और hobby computers, तथा विभिन्न embedded और industrial systems में हुआ
- मूल Game Boy के Sharp LR35902 सहित clones और derivative architectures भी सामने आए
- Zilog ने 16·32-bit derivative families छोड़ने के बाद pipeline और high clock वाले eZ80 जैसे Z80-based microcontrollers पर फिर ध्यान दिया
- किशोरावस्था के अंत में electronics parts catalogue में अब भी बिकता Z80 देखने के बाद छोटे कंप्यूटर डिजाइन किए, और रात में स्कूल के photo lab का उपयोग करके PCB etching की
- शिक्षकों से पुराने home computers और consoles, तथा Tupperware box के अंदर wire-wrapping से बने ऐसे कंप्यूटरों के अनुभव सुने जो CP/M और WordStar चलाते थे
- MCS-85 parts और Z80·8085·6502·6522 chips भी मिले, जिन्हें self-made projects में इस्तेमाल किया
- इस प्रक्रिया में यह सीखा कि stable power-on reset बनाना अपेक्षा से अधिक कठिन है, linker को implement करना assembler की तुलना में कहीं ज्यादा मुश्किल है, और कोई व्यक्ति स्वयं वास्तव में compiler भी बना सकता है
1 टिप्पणियां
Hacker News की टिप्पणियां
1978 में मैंने assembly language से programming शुरू की थी, और मैं सिर्फ software ही नहीं, hardware कैसे काम करता है यह भी समझना चाहता था
Z80 kit assemble करने के बाद logic probe और oscilloscope से digital electronics सीखी, और manuals में गहराई से जाकर instruction set सीखा। अब मेरी उम्र लगभग 70 है, लेकिन वह सब कल की बात जैसा ताज़ा लगता है, और Z80 सचमुच एक शानदार CPU था
किसी class या book के बिना ROM disassemble करके और Motorola summary card देखकर खुद सीखा, लेकिन बाद में कई startups शुरू करते हुए सफल career बनाया। computer को सबसे निचली layer के first principles से सीखने की अब भी कोई जगह नहीं ले सकता
यह एक digital logic simulation game है जिसमें NAND gates से basic circuits बनाकर, functional units और instruction decoder को जोड़कर Turing-complete architecture बनाते हैं, फिर खुद define की गई assembly language में programming करते हैं। अगर नया opcode चाहिए तो खुद implement कर सकते हैं; मुश्किल है लेकिन बहुत rewarding है, official release के करीब पहुंच गया है और trailer भी जारी हुआ है
FORK86-64जैसी कोई चीज़ लाते देखना चाहूंगा12 साल की उम्र में TV program ‘Klein Microcomputer Sebstgebaut und Programmiert’ के kit से Z80 computer assemble किया था
Märklin transformer को power supply के रूप में और Telefunken tape recorder को data storage device के रूप में इस्तेमाल किया, और lunar lander game को Z80 machine code में enter करने के बाद program खो देने के डर से 2 हफ्ते तक power बंद नहीं की
ZX Spectrum के 1980s में लौट आने जैसा एहसास है; तब 128KB RAM afford करना मुश्किल luxury थी। आज से भी थोड़ा मिलता-जुलता है
https://spectrumcomputing.co.uk/entry/2000237/Book/Mastering...
http://www.primrosebank.net/computers/zxspectrum/docs/Comple...
ZX-81 user manual के अंत में Z80 instruction reference table देखते हुए कुछ भी समझ न आने की याद है। BASIC जैसी high-level abstraction के उलट, CPU असल में program कैसे execute करता है यह समझने में काफी समय लगा
JPGOTO,CALLGOSUB,CPIF,JP ZTHEN GOTO, औरLDLETके बराबर लगते थे“Z80, 8080 instruction set के साथ पूरी तरह binary compatible है” यह बात flag register तक सोचें तो सही नहीं है। कुछ operations में parity flag का behavior अलग था
साथ ही, 8080 के undefined opcodes का इस्तेमाल करने वाले programs मनमाने तरीके से चल सकते थे, लेकिन Z80 ने उन opcodes को नए instructions के लिए reuse किया
इससे parity flag को overflow flag के रूप में reuse करना संभव हुआ, और यह बहुत उपयोगी extension था। Datapoint 2200, Intel 8008, Intel 8080 और RISC-V ऐसे दुर्लभ instruction sets हैं जिनमें hardware overflow detect नहीं करता; शुरुआती simple और cheap designs के उलट RISC-V के पास कोई बहाना नहीं है, और मैं इसे इसकी सबसे बड़ी गलती मानता हूं
1983 की शुरुआत में TRS-80 Model I पर Z80 assembly language से programming में प्रवेश किया। Bill Barden की किताबों और 80 Micro magazine में Hardin Brothers की ‘The Next Step’ series ने रास्ता दिखाया, और उस अनुभव को इस लेख मेंまとめ किया था
वह इतनी साफ थी कि एक बच्चा भी समझ सके; शुरू से अंत तक पढ़ी, और असली Z80 छुआ भी नहीं था फिर भी 6502 और 8051·PIC जैसे शुरुआती microcontrollers को समझने की नींव बन गई। आज भी लगता है कि modern microprocessors को Z80 से तुलना करके समझता हूं, और आम व्यक्ति को पूरी चीज़ समझ में आ सके इतना सरल 8-bit microprocessor learning recommend करता हूं
high-level language compilers महंगे थे और shareware भी आज के open source जितना आसानी से नहीं मिलता था, उस दौर में मैंने Z80 से शुरुआत की। machine से क्या करवाया जा रहा है यह समझने के लिए हर किसी को थोड़ी assembly language सीखनी चाहिए, और Z80 reasoning के लिए पर्याप्त simple था
35 साल पहले programs को हाथ से assemble करके hexadecimal machine code board में enter करना पड़ता था। इसे आसान बनाने के लिए मैंने खुद assembler लिखा, और वही experience development tools field से होते हुए प्रमुख C++ compiler पर काम करने तक पहुंचा
इसमें TI-84 calculator छूट गया है, जिसे आज भी अमेरिका के लाखों students इस्तेमाल करते हैं और जिस पर BASIC में programming की जा सकती है। black-and-white models Z80 इस्तेमाल करते हैं, और color-screen models eZ80
दोस्तों के साथ TI-BASIC में छोटे programs बनाकर दिखाने में काफी समय बिताया, लेकिन Z80 assembly language तक नहीं सीख पाया। TI-84 Plus के लिए Z80 assembly language manual पूरा print करके पढ़ना शुरू किया था, लेकिन अब तक एक line भी नहीं लिखी