Układy ALU, czyli jednostki arytmetyczno-logiczne są dzisiaj częścią każdego procesora. Dawniej były one produkowane jako pojedyncze, fizyczne układy scalone lub zbiór wielu chipów logicznych. W dzisiejszym materiale opowiem wam o budowie, historii i działaniu jednego z pierwszych układów ALU.
Główną rolę w dzisiejsze historii zagra układ o oznaczeniu 74181. Jest to zamknięty w 24-pinowej obudowie chip TTL, zaprezentowany światu po raz pierwszy na początku 1970 roku przez Texas Instruments. Układ ten to zamknięta w pojedynczej obudowie pełnoprawna jednostka arytmetyczno-logiczna. Potrafi ona dodawać, odejmować oraz wykonywać każdy rodzaj operacji logicznych.
74181 składa się z 75 bramek logicznych, co czyni go układem o średniej skali integracji – MSI. Do pracy nie potrzebuje sygnału zegarowego, ponieważ zbudowano go jako układ kombinacyjny, w którym dwa 4-bitowe operandy przetwarzane są zgodnie z 4-bitowym rozkazem. Chip nie posiada pamięci, dlatego we większych konstrukcjach zawsze musiał występować w parze z dodatkowymi rejestrami, nazywanymi „akumulatorami”.
Co ciekawe 74181 produkowany był też w Polsce przez Warszawskie zakłady CEMI. Nosił on wówczas nazwę UCY74181. ALU „Polskiej produkcji” możecie zobaczyć na fotografii powyżej.
Czy 74181 był pierwszym ALU?
Procesor komputera Nova 1200 – prawdopodobnie pierwszy sprzęt wykorzystujący 74181 (https://apollo181.wixsite.com/apollo181/about)
Czy 74818 był pierwszym układem ALU? Można odpowiedzieć, że tak, ale, jak to często w elektronice bywa, taka odpowiedź nie wyczerpuje tematu w stu procentach i wiele zależy od tego, co tak naprawdę rozumiemy przez określenie ALU. Historia jednostek arytmetyczno-logicznych zaczyna się tak naprawdę dwa lata przed wprowadzeniem 74181 w 1968 roku i aby dobrze zrozumieć temat musimy zapoznać się z kilkoma różnymi układami.
- Wrzesień 1968 – 4771 – Przypadkowe ALU od Fairchild, które nie weszło nigdy do produkcji.
- Listopad 1969 – N8260 – Pierwsze bardzo proste ALU wydane przez Signetics.
- Marzec 1970 – SN74181 – 4-bitowe ALU z obsługą 32 operacji (Texas Instruments).
- Marzec 1970 – 9341 – układ zgodny z 74181 (Fairchild).
- Sierpień 1970 – F9340 – prostsza wersja 9341/74181 (Fairchild).
Stacja robocza PERQ, wprowadzona na rynek w 1980 roku, była prawdopodobnie ostatnią komercyjną maszyną opartą na układzie 74181 (https://apollo181.wixsite.com/apollo181/about)
Końcówka lat 60′ to nieustanny technologiczny wyścig między ówczesnymi gigantami z branży półprzewodnikowej. W tamtym czasie firmy takie jak Fairchild i Texas Instruments dysponowały technologiami pozwalającymi na „szybkie” projektowanie i wdrażanie do produkcji nowych typów układów. W Fairchild proces ten nazywano Micromatrix, natomiast w TI – Discretionary Routed Arrays. Oczywiście słowo szybkie musimy traktować z przymrużeniem oka, proces projektowania trwał miesiącami, ale był szybszy w porównaniu do klasycznych technologii. Obaj producenci bazowali na gotowych tablicach logicznych, w których można było tworzyć dowolne połączenia między umieszczonymi na niej bramkami. Tego typu tablica dysponowała standardowo 48-96 elementami logicznymi, co jest stosunkowo niewielką liczbą, zwłaszcza w porównaniu z dzisiejszymi układami scalonymi, ale w swoim czasie na takiej tablicy można było zaprojektować w pełni funkcjonalny chip.
Pierwszy układ, który możemy określić mianem jednostki arytmetyczno-logicznej powstał we wrześniu 1968 roku. Wyprodukowany w zakładach Fairchild chip o oznaczeniu 4771, nie był tak naprawdę odpowiedzią na potrzeby rynku, a jedynie pokazem możliwości. Inżynierowie chcieli udowodnić, że technologia Micromatrix pozwala stworzyć bardziej niestandardowy i jednocześnie zaawansowany układ. Tym sposobem powstało proste 4-bitowe ALU, które nie osiągnęło nigdy sukcesu przede wszystkim przez problemy z wydajnością wykonywanych operacji.
Układ Signetics 8260 (https://apollo181.wixsite.com/apollo181/about)
Pierwszym układem, który wprowadzono na rynek, i który możemy, naciągając definicję, określić jako ALU jest N8260 zaprojektowany w listopadzie 1969 r. przez Signetics. Chip ten mógł wykonywać tylko trzy operacje – dodawanie, logiczny AND oraz logiczny XNOR, także określanie go mianem jednostki arytmetyczno-logicznej jest lekko naciągane. N8260 podobnie jak wcześniejszy wynalazek ze stajni Fairchild nie osiągną większego sukcesu, podejrzewam, że mogło być to spowodowane między innymi przez nietuzinkową fizyczną formę układu, którą możecie zobaczyć na powyższym zdjęciu. Trzeba jednak wspomnieć, że konstrukcja zaprojektowana przez Signetics jest jedynym układem, wspominanym przez Texas Instruments w dokumentach dotyczących 74181.
W marcu 1970 roku do gry wkracza Texas Instruments pokazując światu ALU z prawdziwego zdarzenia, czyli układ 74181. Mimo że został on wydany na początku 1970 roku, to pierwsze wzmianki o nim pojawiają się już w sierpniu 1969 r. w katalogu „TTL Integrated Circuits Catalog from Texas Instruments”, czyli trzy miesiące przed wprowadzeniem na rynek N8260. Konstrukcja TI okazała się sukcesem, mimo początkowych problemów z wydajnością, rozwiązanych w 1971 roku, po przejściu na tzw. technologię „Schottky TTL”.
Pierwsza wersja układu 9341 (https://apollo181.wixsite.com/apollo181/about)
Na odpowiedź innych firm technologicznych nie trzeba było długo czekać. Jeszcze w tym samym miesiącu Fairchild wypuszcza odpowiednik 74181 pod nazwą – 9341. Kilka miesięcy później, bo w sierpniu 1970 firma próbuje zawojować rynek prostszą wersją układu od TI. Ale F9340, bo pod taką nazwą został on wydany, nie osiąga większego sukcesu.
Jak działa 74181?
Przed wprowadzeniem na rynek układu 74181, każda jednostka arytmetyczno-logiczna realizowana była przez zbiór mniej lub bardziej zaawansowanych układów, tworzących razem większe bloki funkcyjne, taki jak na przykład sumatory. Jednak gdy spojrzymy na wewnętrzny schemat dzisiejszego bohatera dostępny w nocie katalogowej, możemy stwierdzić, że coś tu jest nie tak. Biorąc pod uwagę obsługiwane operacje, spodziewalibyśmy się raczej konkretnych bloków realizujących poszczególne funkcje, a jednak widzimy dość prosty układ, z nieco chaotycznie rozmieszczonymi bramkami.
Wewnętrzna budowa 74181 (https://www.ti.com/lit/ds/symlink/sn54ls181.pdf?ts=1655469418863&ref_url=https%253A%252F%252Fwww.google.pl%252F)
Jednym z najprostszych sposobów na wykonanie dodawania jest użycie jednobitowych sumatorów dla każdego bitu. Taka operacja bazuje na przeniesieniach i w rzeczywistości jest bardzo powolna. Przykładowo dodając 9999 + 1, sumatory muszą przesłać jedynkę przez każdy sumator, po kolei. Efektem tego jest fakt, że nasze dodawanie jest operacją szeregową, nierównoległą co ma negatywny wpływ na wydajność ALU. Aby rozwiązać ten problem projektanci 74181 postanowili najpierw wyznaczyć bit przeniesienia, a dopiero później wykonać dodawanie. Takie rozwiązanie może wydawać się dość dziwne, bo jak można wygenerować bit przeniesienia przed wykonaniem dodawania? Okazuje się jednak, że jest to możliwe.
Obwód generujący sygnały 'G’ i 'P’ (https://www.righto.com/2017/03/inside-vintage-74181-alu-chip-how-it.html)
Przeniesienie w 74181 bazuj tak naprawdę na dwóch wewnętrznych sygnałach 'G’ i 'P’ (Generuj i Propaguj). Tworzone są one na podstawie danych wejściowych, bez brania pod uwagę wyniku operacji i określają czy przeniesienie powinno zostać potencjalnie wygenerowane. Przykładowo, jeśli dodajemy 0+0+C (gdzie C jest wejściem przeniesienia) nie mam możliwości uzyskania pozytywnego przeniesienia na wyjściu. Analogicznie wykonując operację 1+1+C przeniesienie zawsze będzie mieć wartość '1′. Wreszcie, dla 1+0+C lub 0+1+C, dodatnie przeniesienie na wyjściu zależne jest w pełni od wejściowego bitu przeniesienia, przyjmując jego wartość. Podsumowując, chip ustawia wartość 'G’ jeśli oba bity mają wartość '1′ oraz sygnał 'P’ jeśli dowolny sygnał wejściowy przyjmie wartość '0′.
Funkcje obsługiwane przez 74181 (https://www.ti.com/lit/ds/symlink/sn54ls181.pdf?ts=1655469418863&ref_url=https%253A%252F%252Fwww.google.pl%252F)
74181 obsługuje 16 funkcji logicznych i 16 funkcji arytmetycznych zależnych dodatkowo od wejścia przeniesienia. Przyglądając się bliżej operacją logicznym, nie zobaczymy nic dziwnego, ot standardowe operacje, inaczej jest w przypadku funkcji arytmetycznych. Niektóre z nich są dość dziwne, można by powiedzieć przekombinowane, przykładowo A PLUS AB PLUS 1. Tutaj jednak również za wszystkim kryje się pewien system i przemyślane działanie twórców układu.
Funkcje arytmetyczne bazują tak naprawdę na logicznych, czyli do 16 poleceń logicznych dodano zmienną 'A’ wraz z przeniesieniem. Weźmy na warsztat wspomniane wcześniej A PLUS AB PLUS 1, jeśli rozłożymy tą operację na części pierwsze, otrzymujemy tak naprawdę A PLUS (logiczne F=AB) PLUS C.
Co kryje wnętrze?
Krzemowy rdzeń układu 74181 (https://www.righto.com/2017/01/die-photos-and-reverse-engineering.html)
Żaden mój materiał nie może obyć się bez zajrzenia do wnętrza urządzenia, czy układu. Na zdjęciu powyżej możecie zobaczyć rdzeń układu 74181. Bazuje on na podłożu wykonanym z krzemu, ledwie widoczne niewyraźne linie pozwalają oddzielić obszary mniej lub bardziej domieszkowane tworzące tranzystory i rezystory. Na krzemie umieszczono biało/złote paski, wykonane z aluminium łączące pojedyncze elementy układu. Przy krawędziach znaleźć możemy również białe kwadraty – pady, do których przymocowano niewielkie druciki łączące krzem z wyprowadzeniami chipa.
74181 wykonany został w technologii TTL, czyli bazuje przede wszystkim na tranzystorach bipolarnych. Obecnie układy opierają się przeważnie na elementach typu MOS. Budowy tranzystorów bipolarny, raczej nikomu nie trzeba przedstawiać. W teorii mamy strukturę zbudowaną z odpowiednio domieszkowanego półprzewodnika, ułożoną w kanapkę typu NPN lub PNP. W rzeczywistości bipolarne NPNy tworzone są z kilku warstw półprzewodnika typu P, N oraz N+. Główną różnicą między obszarami N i N+ jest ilość domieszki, N+ jest bogatszym, bardziej domieszkowanym półprzewodnikiem. Cała struktura umieszczana jest na podłożu typu P i ma niewiele wspólnego z książkowym NPN, choć patrząc na pionowy wycinek pod emiterem, możemy się takiej budowy dopatrzyć. Pod emiterem umieszczony został półprzewodnik typu N+, łączy się on bezpośrednio z obszarem P, czyli obszarem połączonym z bazą. Ostatnim elementem jest kolektor, łączy się on z pozostałą strukturą pośrednio, czyli dwa obszary N+ rozdzielone są półprzewodnikiem typu N.
Budowa bramki NOT (https://www.righto.com/2017/01/die-photos-and-reverse-engineering.html)
Jednym z podstawowych komponentów logicznych jest bramka NOT, jaj zadanie jest proste odwrócić sygnał wejściowy. Powyżej możecie zobaczyć budowę takiej bramki w układzie 74181. Poszczególne tranzystory zaznaczone zostały kolorowymi prostokątami, natomiast linie zasilające biegną pionowo, przy lewej krawędzi krzemowego wycinka.
Wejście bramki połączone jest z tranzystorem Q1. Element ten używany jest w dość nietypowy sposób, działa jako tranzystor „sterujący prądem”. Jeśli wejście podamy stan niski, prąd przepływający przez R1 kierowany jest przez emiter (Q1) do wejścia, pozostawiając Q2 wyłączonym. Jeśli wejście przyjmie wartość logicznego '1′, prąd R1 płynie „do tyłu” z kolektora Q1 do bazy Q2, włączając Q2. Tranzystor Q2 można uznać za „tranzystor rozdzielający fazę”, który zapewnia aktywację dokładnie jednego z tranzystorów wyjściowych (Q3 lub Q4). Oznacza to, że włączają się w one przeciwnych fazach. Jeśli Q2 jest wyłączony, R2 dostarcza prąd do włączenia Q3, co powoduje pojawienie się stanu wysokiego na wyjściu. Tymczasem R3 wyłącza Q4. Z drugiej strony, jeśli Q2 włącza się, dostarcza wystarczająco dużo prądu, aby włączyć Q4, dzięki czemu na wyjściu mamy stan niski.
Bramka XOR (https://www.righto.com/2017/01/die-photos-and-reverse-engineering.html)
Trzeba przyznać, że w porównaniu do bramki NOT, budowa XOR jest niezwykle uboga. Ale jak mawiał Leonardo da Vinci, a później Steve Jobs – „Prostota jest szczytem wyrafinowania”. Bramka oparta została na dwóch tranzystorach połączonych w dość nietypowy sposób, kolektory są wspólne, a bazy połączono z emiterami. Warto też zauważyć, że w układzie nie ma masy.
Działa to tak, że jeśli na pierwsze wejście podamy '1′, a drugie '0′ to pierwszy tranzystor zostanie uruchomiony przez prąd baza-emiter. Dzięki temu napięcie na wyjściu zniknie, a drugi wejście zadziała jak masa. Analogicznie, jeśli pierwsze wejście spolaryzujemy ujemnie, a drugie dodatnio to drugi tranzystor włącza się i obniży napięcie na wyjściu. W przypadku gdy na wejścia podamy identyczne napięcie prądu baza-emiter się nie pojawi, a oba tranzystory pozostaną wyłączone, wówczas wyjście zostaje podciągnięte do logicznej jedynki przez rezystor.
Konstrukcja „NOT-AND” (https://www.righto.com/2017/01/die-photos-and-reverse-engineering.html)
74181 oparto w dużej mierze na bramkach AND, ale cztery z nich, których na zwyczajnym schemacie nie sposób odróżnić, zbudowane są w nieco inny sposób. Wyjątkowe bramki są tzw. konstrukcjami „NOT-AND” w których jedno z wejść jest negowane.
Na pierwszy rzut oka konstrukcja wygląda zwyczajnie, tranzystor Q1 podłączono normalnie z rezystorem R1 na bazie, ale Q2 ma swój rezystor połączony z kolektorem, a nie bazą. Standardowo R2 podciągnie sygnał wyjściowy do jedynki, ale jeśli na wejście X podamy '1′, a na Y – '0′, to prąd R1 przepłynie przez kolektor Q1 i emiter Q2. Efektem tego będzie włączenie Q2 i obniżenie napięcia na wyjściu. Zatem na wyjściu naszej bramki AND pojawi się logiczne jeden, tylko jeśli X będzie w stanie '1′, a Y – '0′.
Schemat 74181 wraz z zaznaczonymi obszarami (https://www.righto.com/2017/01/die-photos-and-reverse-engineering.html)
Dość ciekawie prezentuje się też schemat układu 74181 wraz z zaznaczonymi obszarami poszczególnych bloków logicznych. Analogiczny schemat tylko naniesiony na krzemowy rdzeń chipa możecie zobaczyć poniżej.
Krzemowy rdzeń z oznaczonymi obszarami bramek (https://www.righto.com/2017/01/die-photos-and-reverse-engineering.html)
Każdy, kto zaczyna zabawę z elektroniką wcześniej czy później spotyka na swojej drodze układ oznaczony numerem 555. Według wielu timer ten jest jednym z chipów, który zmienił świat. Ciężko się z tym nie zgodzić zwłaszcza biorąc pod uwagę skalę produkcji i mnogość zastosowań, o których powstawały nawet osobne książki. W tym materiale opowiem wam co nieco o tym wyjątkowym chipie.
Jakiś czas temu na mojej stronie pojawił się pierwszy materiał o tranzystorach bipolarnych. Opowiedziałem wam w nim trochę o ich historii, budowie, uruchomiliśmy wspólnie pierwszy układ, a także zajrzeliśmy do wnętrza tego niezwykłego elementu. Dzisiaj po raz kolejny bierzemy na warsztat ten element, ale przyjrzymy się bliżej jego działaniu. Opowiem wam o podstawowym układzie pracy tranzystora, sprawdzimy jego działanie, a na koniec go podpalimy.
Źródła:
- https://apollo181.wixsite.com/apollo181/about
- https://www.ti.com/lit/ds/symlink/sn54ls181.pdf?ts=1655469418863&ref_url=https%253A%252F%252Fwww.google.pl%252F
- http://www.righto.com/2017/03/inside-vintage-74181-alu-chip-how-it.html
- http://www.righto.com/2017/01/die-photos-and-reverse-engineering.html
1 thought on “Pierwszy na świecie układ ALU”
Super opis 👍