Central Processing Unit in a Single Chip

    Moja historia z mikroprocesorami zaczęła się banalnie w barze uczelnianym podczas posiłku na który składał się makaron z sadzonymi jajkami, dania mięsne w 1972 roku były rzadkością. Do stolika przysiadł się kolega, który skończył swój makaron i zakomunikował, że Amerykanie wyprodukowali pierwszy mikroprocesor. Zajęty swoim obiadem znacząco pokiwałem głową  aby  pokazać, że wiem o co chodzi, ale  brak komentarz dobitnie świadczył, że nie jestem w kursie dzieła.   Minęło kilka lat pracy zawodowej w której obsługiwałem sprzęt lampowy więc na mikroprocesory nie było czasu.  Pierwsza informacja o procesorach cyfrowych związana była z cyfrowymi maszynami typu ODRA, które stanowiły chlubę polskiego przemysłu elektronicznego. Dopiero wtedy dotarło do mnie, że mikroprocesor to nic innego jak procesor maszyny cyfrowej, wykonanej z cyfrowych układów  dyskretnych TTL, ale zawarty wewnątrz pojedynczego układu scalonego.

Według definicji Mikroprocesor https://pl.wikipedia.org/wiki/Mikroprocesor to układ cyfrowy wykonany jako pojedynczy układ scalony o wielkim stopniu integracji (ULSI) zdolny do wykonywania operacji cyfrowych według dostarczonego ciągu instrukcji. Mikroprocesor realizuje  funkcje dotychczasowego  procesora  (centralnej jednostki obliczeniowej CPU- central  processing unit ), który pobiera dane z pamięci operacyjnej, interpretuje je i wykonuje jako rozkazy. Procesory jako sekwencyjne urządzenie cyfrowe wykonane w technice cyfrowej TTL, wchodzące w skład maszyn cyfrowych ODRA, realizowały  ciągi prostych operacji matematyczno-logicznych ze zbioru operacji podstawowych, określonych zazwyczaj przez producenta procesora jako lista rozkazów procesora.  Przykładowe parametry  jednostki procesora Odra1305 produkowanej w zakładach ELWRO we Wrocławiu w latach 70-tych przedstawia ulotka informacyjna Jednostka-centralna-Odra1305.

     W ramach wstępu do techniki komputerowej należy przedstawić uproszczony schemat procesora (CPU), który pozwoli na dalszą analizę opisów patentowych z tej dziedziny. Podstawowym elementem każdego procesora CPU jest układ sterowania CU ( Control Unit), który jest odpowiedzialny za sterowanie poszczególnymi elementami CPU oraz jednostka arytmetyczno-logiczna – ALU (Arytmetical Logic Unit), która jest odpowiedzialna za wykonywanie przez CPU operacji arytmetycznych  i  logicznych na liczbach naturalnych lub zmienno przecinkowych.  Podstawowe elementy CPU to rejestry do których należą:
– Rejestr rozkazów IR (Instruction Register) –  który przechowuje obecnie przetwarzaną instrukcję;
– Licznik rozkazów PC (Program Counter) – zawiera adres rozkazu, który ma być wykonany w następnym kroku programu;
– Akumulator A – przechowuje wynik wykonywanej operacji;
– Wskaźnik stosu SP (Stack Pointer) –  służy do adresowania pamięci;
– Rejestr flagowy F – przechowuje informacje dotyczące realizacji wykonywanej operacji;

Schematblokowy mikroprocesora

     Pamięć programu to element systemu komputerowego, w którym przechowywane są rozkazy wykonywane przez procesor  i dane stałe. Najczęściej są to pamięci typu RAM lub  nieulotne typu ROM.  Pamięć danych to element systemu komputerowego, w którym przechowywane są dane i wyniki w trakcie działania procesora. Najczęściej są to pamięci RAM lub DRAM . Do adresowania kolejnych komórek pamięci służy magistrala adresowa mikroprocesora, do przesyłania danych, magistrala danych, do zapisu i odczytu pamięci- magistrala sterująca. Procesor CPU bezpośrednio współpracuje z pamięcią operacyjną. Ponieważ każda komórka pamięci ma swój adres, wymiana danych odbywa się  za  pomocą magistrali danych,  a  adresowanie przy użyciu magistrali adresowej. Uproszczony algorytm działania procesora polega na sekwencyjnym wykonywaniu kolejnych rozkazów zapisanych w pamięci programu.

Cyklepracymikroprocesora

    Historia powstania pierwszego mikroprocesora Intel 4004 rozpoczyna się w  roku 1969, kiedy  japoński producent kalkulatorów, Nippon Calculating Machine Corporation (później Busicom), zwrócił się do Intela z ofertą opracowania zestawu 12 (wg innego źródła 8) układów scalonych, które miałyby stanowić serce najnowszego programowalnego kalkulatora biurkowego Busicom 141 PFB.  Istniejąca od roku firma Intel założona przez byłych pracowników  Fairchild Semiconductors specjalizowała się w pamięciach półprzewodnikowych. Intel pracował gorączkowo nad pamięciami dynamicznymi RAM (DRAM).  Prace zakończyły się sukcesem w roku 1970 – powstał układ 1103, 1 kbit DRAM (128 bajtów), pierwsza pamięć półprzewodnikowa o wysokiej gęstości zapisu (w roku 1972  była to najlepiej się sprzedająca pamięć półprzewodnikowa na rynku). W 1971 roku Intel skonstruował pierwszą pamięć typu EPROM oznaczoną symbolem 1702. W trosce o nowe zamówienia Intel podpisał umową z Busicom w lutym 1970 roku wyznaczając  na odpowiedzialnego  za realizacje projektu Ted Hoff, który  po analizie projektu z zmienił w sierpniu  koncepcję konstrukcji układu, tzn.: zrezygnował z modelu operującego na liczbach dziesiętnych (dostosowanego do urządzeń typu kalkulator) na rzecz arytmetyki binarnej. Hoff uważał, że wykonanie układów wg. planów Japończyków będzie zbyt kosztowne i skomplikowane (niektóre z planowanych układów miały mieć nawet ponad 5 000 tranzystorów).  Wg nowej koncepcji programowalna, uniwersalna jednostka przetwarzająca (CPU) powinna pracować posługując się zestawem kilkudziesięciu 4-bitowych instrukcji i być wspomagana przez co najwyżej 3 inne układy. Koncepcja ta wywodziła się z komputerów klasy mainframe i minikomputerów i musiała zostać okrojona tak, aby zmieścić się w szesnastonóżkowym chipie. Był to największy wówczas możliwy do wykonania typ układu. Szyna adresowa i szyna danych miały posiadać szerokość 4-bitów.

Oprócz Hoff’a nad projektem pracowali także Stan Mazor odpowiedzialny za sprawy oprogramowania oraz Federico Faggin (od kwietnia 1970 w Intelu, poprzednio w Fairchild Semiconductor).  Opracowanie całego zestawu zajęło ok. 18 miesięcy. Zestaw nazwano „rodzina 4000”, a następnie MCS-4, czyli Microcomputer Set 4-bit. Składał się on z czterech 16-nóżkowych układów (16-pin DIP):

  • 4001 był to 2 kbit (czyli 256 bajtów) ROM z 4-bitowym portem wejścia/wyjścia (4-bit mask-programmable I/O port),
  • 4002 to 320 bit RAM z 4-bitowym portem we/wy,
  • 4003 to 10-bitowy rejestr przesuwny – układ rozszerzający możliwości wejścia/wyjścia (10-bit serial-in, parallel-out shift register),
  • W lutym 1971 pierwszy zestaw był gotowy do zbudowania prototypu kalkulatora. W skład każdego kalkulatora wchodziły cztery 4001 (czyli łącznie 1KB), dwa 4002, dwa 4003 i jeden 4004. W połowie marca 1971 Busicom otrzymał pierwszą partię chipów. 15 listopada 1971 zestaw 4000 pod nazwą MCS-4 (Microcomputer System 4-bit), został oficjalnie wprowadzony i przedstawiony w prasie fachowej jako „a new era of integrated electronics” oraz „computer on a chip„. Cena wynosiła początkowo $200 za sztukę. W roku 1974 procesor 4004 został opatentowany (U.S. Patent No. 3,821,715) jako: Memory System for a Multi-Chip Digital Computer. Specyfikacja aplikacyjna zestawu Intel MSC-4 MCS4_Data_Sheet_Nov71-2MCS4_ datowana na listopad 1971 przestawia opis poszczególnych układów z ilustracja ich części składowych oraz zespolonego schemat połączeń w układzie pierwszego mikroprocesora wyposażonego w opracowane układy pamięci RAM, ROM  i dodatkowy 10-bitowy rejestr przesuwny. Niewątpliwy sukces konstrukcyjno-technologiczny znalazł swoje odbicie w szeregu patentów z tego zakresu ale ze względów praktycznych omówieniu zostanie tylko jeden patent, którego autorami są w/w twórcy.

        Patent  US3821715  Memory System for Multi-chip Digital Computer, Intel Corporation, Hoff  Jr. et al., Data patent: 28.06.1974. przedstawia układ komputera cyfrowego ogólnego zastosowania,  który zawiera jednostkę centralną (CPU), pamięć RAM (Random-Access-Memories), pamięć  ROM (Read Only Memory) wykonane w technologii półprzewodnikowej  MOS (Metal Oxide-Semiconductor).  Pamięć z dostępem swobodnym RAM  i pamięć tylko do odczytu  ROM używana jako część komputera sprzężone  są ze zwykłymi dwukierunkowymi magistralami danych z jednostką centralną (CPU),  przy czym  każda pamięć zawieraj  obwód dekodujący w celu określenia adresu komórek pamięci odczytywanych lub zapisywanych przez procesor CPU, który wykonuje cyklicznie realizowany program  cyfrowy. Układ  procesora  oraz  pamięci  zamontowane są w 16-nóżkowych obudowach scalonych DIP,  co zapewnia możliwość rozszerzenia ilości zastosowanych układów pamięci w omawianym układzie mikrokomputera.

    Fig.1Przechodząc do rysunków  zawartych w patencie: Fig.1 jest ogólnym schematem blokowym ujawnionego komputera, który przedstawia centralną jednostkę przetwarzania (CPU), pojedynczą pamięć RAM i pojedynczą pamięć ROM; Fig.2 jest wykresem przedstawiającym pojedynczy cykl instrukcji komputera który jest używany głównie do opisania sposobu, w jaki procesor CPU komunikuje się z wybrana pamięcią ROM lub RAM w trakcie pojedynczego cyklu realizowanej instrukcji maszynowej; Fig.3 przedstawia schemat blokowy ilustrujący połączenia między centralną jednostką przetwarzającą (CPU) i wieloma układami pamięci, w tym ROM i RAM; Fig.4 – to szczegółowy schemat blokowy ilustrujący pojedynczy  układ pamięci ROM,  zilustrowany na Fig.3; Fig.5 – to szczegółowy schemat blokowy pojedynczej pamięci RAM, zilustrowanej na Fig.3.  Zgodnie  z schematem blokowym przedstawionym na rysunku  Fig.1,  komputer według wynalazku zawiera  centralny procesor 10, pamięć o dostępie losowym (RAM), 35 i pamięć tylko do odczytu (ROM),30.  Cztery dwukierunkowe linie magistrali danych 20, 21, 22 i 23 są wykorzystywane do przekazywania informacji z procesora 10 do pamięci oraz do przekazywania informacji z pamięci do procesora. Informacje mogą być odczytywane z komputera na liniach 56a, 56b, 56c i 56d, oraz  mogą być odczytywane do lub z komputera na liniach wejściowych/wyjściowych 57a, 57b, 57c i 57d.  Procesor 10, ROM 30 i RAM 35, posiadają postać oddzielnych układów scalonych  typu MOS, które są  wzajemnie połączone przez różne przedstawione linie, w tym wspólne szyny danych magistrali 20, 21, 22 i 23 oraz szynę sygnałów sterujących, 63, 64, 65, 33 i 51, wykonane w technice obwodów drukowanych. Zewnętrzne sygnały taktowania Φ1, Φ2 procesora 10 występują na ścieżkach  62,63  obwodu  drukowanego,  a  sygnały synchronizacji  i  resetu  na  liniach  64,65.

    Sygnał synchronizacji 68,  zilustrowany na Fig.2,  generowany jest co 8 okresów sygnałów taktowania Φ1, Φ2.  Procesor  10 generuje również sygnał sterujący ROM, wysyłany  ścieżką 33 i sygnał sterujący RAM, wysyłany ścieżką  51. W przykładzie wykonania procesor 10, który jest wytwarzany na pojedynczym układzie MOS, zawiera jednostkę sterującą 12, czterobitową jednostkę arytmetyczną 13, rejestr indeksowy 14 i rejestr adresowy 15. Czterobitowa jednostka arytmetyczna, rejestr indeksów i stos adresów wszystkie komunikują się ze jednostka sterująca 12, jak to zwykle ma miejsce w znanych procesorach. Rejestr adresowy 15 obejmuje licznik programu, stos adresów i  obwód logiczny  przyrostu adresu. Rejestr adresowy jest dynamiczną macierzą komórek pamięci RAM złożoną z 4 wierszy 12 bitowych. Jeden poziom tego rejestru jest wykorzystywany do przechowywania efektywnego adresu, a pozostałe trzy poziomy są używane jako stos dla wywołań podprogramów.  Rejestr indeksowy 14 zawiera dynamiczny układ komórek pamięci RAM  złożony z 16 wierszy 4 bitowych  i ma dwa tryby działania. W jednym trybie działania rejestr indeksowy 14 zapewnia 16 bezpośrednio adresowalnych lokalizacji pamięci  dla pośredniego obliczania i sterowania. W drugim trybie rejestr indeksów udostępnia osiem par adresowalnych lokalizacji pamięci do adresowania pamięci RAM i ROM,  a  także do przechowywania danych pobranych z pamięci ROM. Czterobitowa jednostka arytmetyczna 13 w  preferowanym przykładzie wykonania jest czterobitowym sumatorem z przeniesieniem szeregowym. Jednostka sterująca 12 procesora 10 zawiera obwody do wykonywania normalnych funkcji sterujących związanych z centralną jednostką przetwarzającą, a także zawiera bufory wejściowe i wyjściowe, które umożliwiają komunikację z liniami 20, 21, 22 i 23, oraz  obwód do generowania sygnału synchronizacji zilustrowany na Fig. 2, jako sygnał 68.  Procesor 10, który również generuje sygnał sterujący ROM i sygnał sterujący RAM, zawiera resetowany przerzutnik flip-flop. Należy zauważyć, że podczas resetowania wszystkie pamięci RAM oraz przerzutniki flip-flop znajdujące się w całym komputerze są kasowane sygnałem resetowania na odprowadzeniu 65. Jednym z unikalnych aspektów procesora 10 wykorzystywanego w  przykładzie wykonania jest to, że procesor generuje zakodowane sygnały, które są przesyłane do wszystkich pamięci RAM i ROM na  wspólnej magistrali  danych 20, 21, 22 i 23.

    Repertuar instrukcji procesora obejmuje 16 instrukcji języka maszynowego, z których 5 ma podwójną długość, 14 zgromadzonych instrukcji grupowych, 15 instrukcji wejścia/wyjścia i obsługi pamięci RAM. Nawiązując ponownie do Fig.1, ROM-y w według przykładu wykonania obejmują macierz pamięci 72, jednostkę sterującą 71 oraz porty wejścia/wyjścia 70, które zawierają bufory wymagane dla tych portów. Porty 70,  obwód sterowania 71  i  układ ROM 72 są zawarte w pojedynczym układzie scalonym. Pamięć RAM 35 zawiera macierz RAM 87, jednostkę sterującą RAM 88  i port wyjściowy 89, który zawiera niezbędne bufory. Budowa i działanie zarówno pamięci ROM, jak i pamięci RAM może być zilustrowana  bardziej szczegółowo w połączeniu  z  Fig.4 i 5, odpowiednio.

    ROM z Fig.4 mogą być zbudowane z wykorzystaniem konwencjonalnego układów ROM z dodatkiem zespołu obwodów elektrycznych do rozpoznawania z góry określonego kodu. Sterowanie i taktowanie pamięci ROM nie zostało zilustrowane w celu uproszczenia schematu blokowego, ale tak jak w przypadku innych ROM-ów, odpowiedni czas taktowania ROM jest generowany  przez sygnały czasowe,  Φ1, Φ2, (doprowadzenia 62 i 63), oraz z sygnał synchronizacji  (na doprowadzeniu 64).  Dodatkowo, sygnał resetowania  (wyprowadzenie 65), potencjał ujemny VDD (przewód 60)  i przewód uziemiający (przewód 61) również są podłączone do pamięci ROM. Sygnał  taktowania pamięci ROM jest generowany przez obwód  75, chociaż wymagane są również  inne sygnały sterujące połączone z innymi elementami w  pamięci ROM. Dwukierunkowa magistrala magistrali danych 20 do 23 jest sprzężona z buforami wejściowymi 73 i 94. Wyjście bufora wejściowego 73 jest dołączone do  dekodera 74  i  do dekodera 76. Nawiązując  do Fig.2,  w  czasie A1 i A2,  osiem bitów (wysłanych w dwóch grupach po cztery bity) wymaganych do uzyskania dostępu do lokalizacji w pamięci ROM, jest wysyłanych do wszystkich ROM połączonych z dwukierunkowymi  liniami szyny danych  20  do 23. Te osiem bitów,  po częściowym dekodowaniu przez dekoder 74, jest następnie multipleksowanych w celu utworzenia pojedynczego ośmiobitowego słowa w multiplekserze 90  przed przesłaniem do rejestru adresowego 86. Osiem bitów jest wykorzystywanych przez X dekodery 84 i 85 oraz przez dekodery Y 79 i 81 dla uzyskania dostępu do określonej lokalizacji w ramach macierzy pamięci 16×64  ROM 78 i 82. Dane przechowywane w wybranej części macierzy ROM są odczytywane z multipleksera 80 do multipleksera 91. Podobnie jak w większości ROM-ów  MOS, informacja jest odczytywana z linii kolumn  po wstępnym ich  załadowaniu, funkcja ta jest zilustrowana jako elementy wstępnego ładowania i odczytu danych 77 i 83. Multiplekser 80, po otrzymaniu zapamiętanego ośmiobitowego słowa z tablicy, komunikuje dwa czterobitowe słowa z multiplekserem 91, co oznacza, że  podczas cyklu  A1 i A2, Fig.2  wszystkie ROM-y na liniach od 20 do 23 odczytują zapisane dane do multipleksera 90. Po tym, jak CPU przekaże adres wszystkim ROM w czasie A1 i A2, CPU w cyklu  A3 dokonuje wyboru chipa, który jest czterobitowym zakodowanym sygnałem, który służy do aktywowania tylko jednego z ROM-ów znajdującego się wzdłuż wspólnych linii magistrali danych od 20 do 23. Podczas cyklu  A3  4-bitowy kod wyboru chipa jest przesyłany do dekodera 76, Fig.4.  Dekoder 76 w każdym z ROM-ów jest inny i jest wytwarzany tak, aby identyfikować tylko jeden kod. Jeżeli ten kod sygnałowy zostanie zidentyfikowany przez dekoder 76, który  następnie przekaże sygnał do flip-flop 92 danych i do flip-flop 93 danych  wejścia/wyjścia. Dowolny stan logiczny może być wykorzystywany w dekoderze 76 jako środek do identyfikowania z góry określonego czterobitowego sygnału. W obecnym przykładzie wykonania w dekoderze 76 wykorzystywanych jest wiele bramek AND. Jeżeli dekoder 76 wykrył kod wskazujący, że jego mikroukład został wybrany przez procesor 10  i  jeśli dodatkowo pojawi się sygnał na odprowadzeniu 33, również zapewnionym przez procesor 10, zostanie ustawione flip-flop  danych 92. Gdy przerzutnik danych 92 jest ustawiony na tryb blokady, to znaczy, że 96 nie wysyła sygnału do bufora wyjściowego 94, to informacja odczytana z macierzy ROM może przepływać z multipleksera 91 na linie magistrali danych 20 do 23. Należy zauważyć, że jeżeli chip nie został wybrany,  a flip-flop 92 danych nie został ustawiony, to blokada logiki uniemożliwiłaby przepływ informacji z niezaznaczonych ROM.  Znaczące jest to, że adres używany do lokalizowania określonego słowa w pamięci ROM jest przekazywany do pamięci ROM przed momentem, w którym kod wyboru chipa jest przesyłany do pamięci ROM. Odbywa się to w ten sposób, że wszystkie ROM będą dekodować adres, podczas gdy dekoder 76 każdej pamięci ROM określa,  który układ został wybrany, czyli, która pamięć ROM będzie mogła odczytać dwa czterobitowe słowa na liniach magistrali danych 20 przez 23 w cyklach M1 i M2. Ta technika uzyskiwania dostępu do wszystkich ROM jednocześnie przed wyborem pojedynczej pamięci ROM oszczędza czas, ponieważ dłuższy czas jest wymagany do odczytu danych z macierzy ROM, niż do odkodowania 4-bitowego sygnału wyboru układu. ROM zilustrowany na Fig.4  umożliwia również procesorowi 10 komunikację z zewnętrznym zespołem obwodów pokazanym jako linie wejściowe/wyjściowe  od  57a  do  57d.  Te linie sprzężone z portem wejściowym 70a  i  portem wyjściowym 70b, umożliwiają selektywnie łączone ze zwykłymi liniami magistrali danych 20 do 23 za pośrednictwem multipleksera 91 i buforami wyjściowymi 94 po odebraniu odpowiednich sygnałów elementów sterujących wejścia/wyjścia 95. Logika sterująca wejściem/wyjściem jest aktywowana przez przerzutnik wejścia/wyjścia 93. Ten flip-flop  jest ustawiony, jeżeli dekoder 76 wykrywa określony kod chipu w cyklu  X2  i  jeśli sygnał jest obecny na odprowadzeniu 33 w X2. Gdy te warunki są spełnione, linie wejściowe/wyjściowe od 57a do 57d  są następnie sprzężone z centralną jednostką przetwarzającą lub procesorem 10.

    Układy  ROM 30, 31 i 32, Fig.3  są  połączone ze zwykłymi liniami magistrali danych 20, 21, 22 i 23. W  przykładzie wykonania można wykorzystać aż 16 ROM-ów, ponieważ czterobitowy kod wyboru chipa jest w stanie aktywować dowolny z 16 ROM-ów.  Można zauważyć, że liczba ta może zostać zwiększona, jeśli użyte zostaną dodatkowe linie poleceń z procesora, takie jak przewód sterowania ROM 33. Ponadto każda z ROM może zawierać linie wejściowe/wyjściowe, umożliwiając liczne zewnętrzne połączenia z komputerem.  Każdy z ROM-ów jest oczywiście sprzężony z linią 33 i liniami 60, 61, 62, 63, 64 i  65.  Z kolei pamięć RAM  Fig.5 wykorzystywana w komputerze, taka jak pamięć RAM 35, 36, 37 i 38, pokazana na Fig.3, wykonują dwie funkcje. Najpierw przechowują 320 bitów rozmieszczonych w czterech rejestrach po dwadzieścia cztery bity znaków (16 głównych znaków pamięci i cztery znaki statusu), a ponadto zapewniają połączenie  do komunikacji z urządzeniami peryferyjnymi przez wyjścia  99a, 99b, 99c i 99d.  Pamięć RAM może być wykonana z dobrze znanych układów znanych ze stanu techniki wykorzystywanych w takich pamięciach. W  przykładzie wykonania wspólne magistrale magistrali danych 20 do 23 są połączone z buforami wejścia/wyjścia magistrali danych 98. Sygnał wyjściowy z tych buforów jest sprzężony z wyjściowymi przerzutnikami 99,  multiplekserem wejścia/wyjścia 50 macierzy pamięci, z rejestrem adresu X 43 i rejestrem Y 97. Pamięć  zastosowana   jest pamięcią dynamiczną, a zatem wymaga odświeżania, więc   licznik odświeżania 44 określa czas, w którym operacja odświeżania ma nastąpić, co zapewnia, że  we właściwym czasie za pomocą odświeżających wzmacniaczy 49, wszystkie dane przechowywane w pamięci głównej i pamięci statusu są odświeżane. Rejestr adresów X 43 jest połączony z dekoderem 46 stanu statusu i głównym dekoderem pamięci 47 za pośrednictwem multipleksera 45 adresu.  Dekodery te są łączone za pomocą sterowników pamięci z pamięcią główną i komórkami pamięci znaków. Główna pamięć 48 jest sprzężona z multiplekserem wejścia/wyjścia 50, umożliwiając odczyt/zapis  informacji do/z pamięci za pośrednictwem multipleksera 50. Cykle  pamięci są wyznaczane przez  sygnały Φ1, Φ2, z  doprowadzeń 62 i 63,  oraz sygnał synchronizacyjny generowany przez procesor 10 i przykładany do układu pomiaru czasu 53 przez przewód 64. Układ  zegarowy 53  jest  sprzężone z pamięcią RAM  i obwodem sterującym 58 oraz z obwodem  synchronizacji pamięci 54.  Główny obwód  taktowania pamięci 54 generują odpowiednie sygnały czasowe wymagane do obsługi,  tego typu pamięci. Pamięć RAM  i obwód 58  wysyła sygnały do buforów 98, aby umożliwić buforom odbieranie lub przesyłanie sygnałów, a także rejestrowi Y, 97  i  wyjściowym przerzutnikom 99.   Pamięć RAM  i obwód 58  są  również wykorzystywane do sterowania multiplekserem wejścia/wyjścia 50, rejestrami X i Y oraz dekoderem stanu, 46. Pamięć RAM otrzymuje sygnał resetu poprzez wejście 65, masę przez przewód 61 i zasilanie VDD przez przewód 60. Sygnał sterujący RAM jest sprzężony z każdą z pamięci RAM  za  pośrednictwem przewodu 51. Ten sygnał jest generowany przez procesor 10,  przy czym na doprowadzeniu 52,  podawany jest z góry ustalony potencjał masy lub zasilania VDD.

    Podobnie jak w przypadku ROM-u, wszystkie pamięci RAM, takie jak pamięci RAM 35, 36, 37 i 38, są połączone ze wspólnymi dwukierunkowymi magistralami danych 20, 21, 22 i 23. Zatem każda z pamięci RAM zawiera zespół dekodujący do określania, która pamięć RAM została wybrana przez procesor 10.  Pamięci RAM są wytwarzane z dwoma różnymi układami do wyboru lub dekodowania układów. Ten obwód jest zawarty w obwodzie sterowaniu 58  i  jest zilustrowany na Fig.3 jako  RAM typu 1  i  RAM typu 2. Każda z pamięci ma stały układ  logiczny, który rozpoznaje przykładowo jedynkę logiczną lub zero logiczne co zapewnia wykorzystanie dwóch pamięci RAM, jednej typu 1 i jednej typu 2 na wspólnych liniach danych od 20 do 23. Obwód wyboru lub dekodowania każdej z pamięci RAM jest również sprzężony z terminalem Po ( Hard wired chip selected input). Sygnał zastosowany do odprowadzenia Po, który jest albo uziemiony, albo podłączony do VDD jest wykorzystywany przez zespół obwodów elektrycznych  jako część kodu rozpoznawanego przez obwód.  Dlatego też, łącząc Po pamięci RAM typu 1 z uziemieniem i łącząc  Po  z  pamięci RAM typu 1 z VDD  i podobnie przez sprzężenie zacisków Po dwóch RAM 2 typu 2 z masą i VDD, jak pokazano na Fig.3, cztery pamięci RAM mogą być połączone ze zwykłymi liniami magistrali danych od 20 do 23,  a procesor 10 będzie mógł wybrać jedną z czterech pamięci RAM. Tak jak w przypadku ROM-ów, obwód wyboru lub dekodowania chipów może być wytwarzany z dobrze znanych elementów logicznych, takich jak bramki AND.        W obecnie preferowanym przykładzie wykonania, ponieważ tylko cztery pamięci RAM są połączone ze zwykłymi liniami magistrali danych, tylko dwa bity są wymagane w celu wybrania  jednej z czterech pamięci RAM. Te dwa bity są przesyłane do pamięci RAM w czasie X2. Pozostała część bitów transmitowanych podczas  cyklu X2  i cztery bity transmitowane podczas X3 są wykorzystywane w połączeniu z sygnałem rozkazu dostarczonym na odprowadzeniu 51 w celu dostarczenia informacji RAM, co do konkretnej lokalizacji w pamięć RAM,  która  być używana do późniejszej operacji odczytu, zapisu lub wejścia/wyjścia.   Pamięć RAM  z  Fig.5  jako pamięci dynamiczne  wymagają  odświeżania. To odświeżanie jest wykonywane podczas części cyklu instrukcji przedstawionego na Fig.2, w którym pamięć RAM nie przekazuje informacji do lub ze wspólnej linii magistrali lub linii od 99a do 99d.  Na przykład, odświeżanie może nastąpić w czasie A1, A2 lub A3 i ten czas może być łatwo określony przez  odcinki czasu, które są wykorzystywane do sterowania odświeżaniem licznika 44. Odświeżając pamięć RAM w czasie, gdy pamięci RAM nie komunikują się aktywnie z procesorem 10 lub obwodami zewnętrznymi powoduje że,  proces odświeżania nie zakłóca pozostałej części systemu.

    WNIOSKI

    Opracowany układ Intela 4004, wykonany w technologii 10 µm PMOS, składał się z zaledwie 2250-2300 tranzystorów. Pracował z częstotliwością 108 kHz, potrafił wykonać ok. 60 000 instrukcji na sekundę (0.06 MIPS). Jego zestaw instrukcji składał się z 46 pozycji. Zasilany był napięciem stałym 15V i wymagał indywidualnego zewnętrznego sygnału zegara (peculiar clock source).  Pobierał moc 1 W.  Każdy chip 4004 o wymiarach płytki krzemowej 4×3 mm (czyli 12 mm2) posiadał moc obliczeniową podobną do zbudowanego w 1946 roku pierwszego elektronicznego komputera ENIAC, ważącego 30 ton, zajmującego tyle miejsca co dwa garaże samochodowe (60×25 stóp) i składającego się z 18 000 lamp elektronowych. Według Intela  sukces opracowania zestawu MCS-4, czyli Microcomputer Set 4-bit należy zawdzięczać postępowi w technologii produkcji układów scalonych  LSI ( large-scale integration).

    Po pierwsze zastosowanie techniki Bootstrap w obwodach bramek logicznych, która umożliwiła ich budowę z napięciem wyjściowym równym pełnemu napięciu zasilania w porównaniu do znanego obciążenia rezystancyjnego stopnia tranzystorowego, w którym napięcie wyjściowe osiąga około 60% napięcia zasilania. Faggin wynalazł sposób realizacji  Bootstrapu w cyfrowych układach scalonych poprzez opracowanie technologii dodatkowych kondensatorów ładujących wkomponowanych w istniejącą  strukturę bramki cyfrowej  wewnątrz chipu. Po drugie Faggin wynalazł uproszczony sposób połączeń miedzy bramkowych tzw. Buried Contact, który polegał na zastosowaniu polikrzemowych  połączeń  pomiędzy bramkami, które do tej pory wymagały połączeń metalowych znacząco ograniczających gęstość rozmieszczenia bramek wewnątrz układu scalonego.  Dzięki tej metodzie – wymagającej dodatkowej warstwy maskującej – możliwe było wykorzystanie polikrzemu jako dodatkowej warstwy wzajemnego połączenia, znacznie poprawiając gęstość obwodu, szczególnie w cyfrowych układach logicznych . Obie metody technologii wytwarzanie układów scalonych opisane są  szczegółowo w literaturze np. CMOS Digital Integrated Circuits – Analysis i Design, Sung-Mo Kang, (second-edition)  dostępnej  w przestrzeni internetowej.   Podsumowując, w opracowaniu i sukcesie 4004 uczestniczyli:

    Federic Faggin: opracował technologię wytwarzania w krzemie bramek logicznych (silicon gate MOS technology) i w dużej mierze kierował pracami zespołu 4004; jego dziełem był  maski (layout) wszystkich układów serii 4000 (jak również później 8008 i 8080); Faggin opóścił Intela pod koniec 1974 r., stał się współzałożycielem firmy Zilog  i   współtwórcą procesora Z80 (wraz z Masatoshi Shima).

    Masatoshi Shima: opracował szczegółową konstrukcję układów logicznych i ich wzajemne rozmieszczenie; w 1974 wraz z Faggin’em założył firmę Zilog i opracował doskonały procesor Z80.

    Stan Mazor: współtworzył wraz z Hoffem architekturę układu, odpowiadał za oprogramowanie, stworzył programy testujące poprawność funkcjonowania całego układu; koordynował współpracę wewnątrz zespołu oraz z innymi departamentami.

    Ted Hoff: zainicjował koncepcję pojedynczego CPU zamiast kilkunastu układów specjalizowanych, zaproponował stworzenie urządzenia programowalnego o szerokich możliwościach zastosowania w zależności od zadanego programu. Opracował podstawową architekturę układu (CPU, RAM, ROM i I/O) oraz układów logicznych.

    Bob Noyce, członek zarządu Intela, wynegocjował z Busicom’em umowę o zrzeczeniu się praw wyłączności do układu 4004 za kwotę $60 000. Intel uzyskał możliwość zastosowania układu do budowy różnych urządzeń. Otworzyło to drogę dla nowej gałęzi przemysłu i okazało się jednym z większych błędów gospodarczych Japończyków.

    Na zakończenie należy dodać, że o pierwszeństwo w wynalezieniu mikroprocesora  ubiegają się jeszcze dwie firmy oczywiście w USA:

    Garrett AiResearch’s (Central Air Data Computer), MP944;

    Texas Instruments (TMS 1000).

    Układy scalone serii  MP944  realizują specjalizowany procesor cyfrowy sterujący obsługa samolotu Grumman F-14 Tomcat, których struktura i działanie objęte jest tajemnicą pomimo upływu 48 lat.

    Z kolei  TI  zbudowało 4-bitowy mikroprocesor TMS 1000 oraz wyposażyło go w odpowiedni kod źródłowy. W ten sposób 17 września 1971 r. powstał układ TMS1802NC, który posłużył jako scalony rdzeń kalkulatora TI-35. Pod względem pełnionej funkcji był to zatem odpowiednik intelowskiego 4004.

    Historia systemu „MSC-4 Micro computer set” dostepna jest również w zasobach Youtube The MCS-4 Story  4004 to 4-bitowy CPU (4-bit parallel central processing unit). The MCS-4 Story  https://www.youtube.com/watch?v=gPKZSuXAVMU