Mostek 5065

Mostek 5065
Informacje ogólne
Wystrzelony luty 1974
Wspólni producenci
Wydajność
Maks. Częstotliwość taktowania procesora 3 µsek
Szerokość danych 8 bitów
Szerokość adresu 15 bitów
Specyfikacje fizyczne
pakiet(y)

Mostek MK5065 był 8-bitowym mikroprocesorem wprowadzonym przez firmę Mostek na początku 1974 roku. Projekt został pierwotnie opracowany przez firmę Motorola do użytku w elektronicznym kalkulatorze Olivetti i uzyskał licencję dla firmy Mostek do użytku w rolach innych niż kalkulatory. Zawierał trzy zestawy rejestrów procesora, co pozwalało mu przełączać się na przerwań w jednym cyklu, oraz tryb oczekiwania na dane, który wspomagał bezpośredni dostęp do pamięci .

Pomimo stosunkowo niskiego kosztu (jak na tamte czasy) wynoszącego 58 USD w ilościach po 100 sztuk, wydaje się, że model 5065 był mało używany. Fairchild F8 został wprowadzony mniej więcej w tym samym czasie, skierowany na te same rynki. F8 miał wiele zalet w stosunku do 5065 ze względu na bardziej nowoczesny design. W czerwcu 1975 roku Mostek udzielił licencji na F8 w ramach drugiego źródła . Model 5065 zniknął z katalogu Mostek z 1975 r., w którym wymieniono tylko ich F8, MK3850.

Historia

5065 rozpoczął się jako niestandardowy projekt procesora PMOS firmy Motorola dla kalkulatora biurkowego budowanego przez firmę Olivetti . Prace projektowe były prowadzone przez Roda Orgilla i Billa Menscha , którzy wyprodukowali model 5065. Wkrótce potem obaj utworzyli trzon zespołu programistów Motoroli 6800 . Motorola udzieliła licencji na projekt firmie Mostek pod warunkiem, że nie będą one sprzedawane na rynku kalkulatorów. Mostek wypuścił swoją wersję w lutym 1974 roku. Na początku 1975 roku był w produkcji seryjnej i sprzedawany za 58 USD w partiach od 100 do 499.

We wrześniu 1974 roku firma Fairchild Semiconductor wprowadziła na rynek Fairchild F8 z próbnymi wysyłkami rozpoczynającymi się w kwietniu przyszłego roku i pełną produkcją jeszcze w tym samym roku. F8 był prawie identyczny z przeznaczeniem 5065, pierwotnie zaprojektowany jako procesor kalkulatora dla Olympia-Werke , niemieckiego konkurenta Olivetti. F8 miał wiele cech konstrukcyjnych, które bardzo ułatwiały jego wdrożenie, przy czym typowe projekty wymagały tylko dwóch układów scalonych, aby zapewnić całą potrzebną pamięć ROM, RAM, zegar i wejścia / wyjścia. Poprawił się również w stosunku do 5056, ponieważ był to NMOS oparty na chipie, co pozwoliło na wytworzenie go przy mniejszym rozmiarze funkcji, co obniżyło jego koszt i pozwoliło działać znacznie szybciej.

W czerwcu 1975 roku Mostek uzyskał licencję na projekt F8 od Fairchild i wprowadził go do swojej nowej linii NMOS . Wzmianki o 5065 znikają, zanim ich katalog z 1975 roku wspomina tylko o ich wersji F8, MK3850. Mostek agresywnie obniżył cenę swojego F8 w ciągu następnego roku, osiągając 10 dolarów w plastikowych opakowaniach do 1976 roku.

Opis

Podstawowy wygląd

We wczesnych latach siedemdziesiątych pomysł wykorzystania mikroprocesora jako podstawy samodzielnego komputera nadal nie był powszechny, a projekty z tamtej epoki na ogół zawierały funkcje mające na celu ułatwienie ich użycia w tym, co dziś byłoby znane jako obszar mikrokontrolerów , procesory które służą do sterowania urządzeniem takim jak kasa fiskalna czy pompa gazowa . Systemy te muszą szybko reagować na różne sygnały wejściowe, co zwykle odbywa się za pomocą przerwań . Ponieważ jest to powszechna operacja w tych ustawieniach, wiele projektów skupiało się na sposobach poprawy wydajności lub implementacji przerwań.

W przypadku 5065 osiągnięto to poprzez zapewnienie trzech oddzielnych zestawów rejestrów dla akumulatora , licznika programu i rejestru wewnętrznego łącza głównego, wraz z flagą przeniesienia . Po otrzymaniu przerwania procesor wykonywał bieżącą instrukcję, a następnie wskazywał wybrany zestaw tych rejestrów lub, jak je nazywali, „poziomów”. Umożliwiło to systemowi śledzenie trzech oddzielnych sekcji kodu, odpowiadających normalnej pracy i dwóm poziomom przerwań. Urządzenia zewnętrzne mogą zgłosić przerwanie na dwóch pinach, INT 1 i INT 2 , które można włączać i wyłączać programowo. Na przykład, jeśli INT 2 zostało włączone i wyzwolone, procesor odpowiedział, kończąc bieżącą instrukcję, przełączając się do rejestrów poziomu 2 i kontynuując. Normalna operacja była na poziomie 3, do którego powracała po wywołaniu instrukcji powrotu z przerwania. To sprawia, że ​​obsługa przerwań jest bardzo szybka, ponieważ informacje o stanie są zapisywane automatycznie w jednym cyklu, podczas gdy wiele projektów wymaga przechowywania tych informacji przy użyciu kodu napisanego przez użytkownika, którego ukończenie może zająć wiele cykli.

Ten sam system mógłby być również używany do szybkich wywołań podprogramów zamiast konieczności przechowywania zawartości rejestru. Ponieważ stan procesora był zapisywany oddzielnie, tylko adres zwrotny musiał być jawnie zapisany w kodzie. W tym przypadku pierwsze 256 miejsc w pamięci, strona zerowa , zostało użyte jako stos wywołań . Aby to zadziałało, ten obszar pamięci musiał zostać zaimplementowany w jakiejś formie zapisywalnej pamięci. w innych projektach byłoby znane jako wskaźnik stosu .

Aby wspomóc implementacje bezpośredniego dostępu do pamięci (DMA), system zawierał pin WAIT , który został wywołany przez urządzenie zewnętrzne, które chciało uzyskać dostęp do pamięci. Po odebraniu tego sygnału procesor kontynuowałby bieżącą instrukcję, w tym wszelkie wymagane odczyty i zapisy z pamięci. Po zakończeniu instrukcji podnosił DMA , aby wskazać, że jest gotowy, a następnie przechodził w stan wstrzymania. Urządzenie zewnętrzne wykonałoby następnie operacje DMA, a następnie przerwałoby WAIT po zakończeniu. Procesor upuściłby wtedy DMA przypnij, wznów i kontynuuj w miejscu, w którym zostało przerwane.

Instrukcje i adresowanie

Było w sumie 51 instrukcji i 81 kodów operacyjnych. Instrukcje są dostępne w wielu formatach, ale większość z nich to dwubajtowe pary opcode - operand . Niewielka liczba instrukcji jednobajtowych została użyta do rzeczy takich jak return-from-subroutine lub shift-left , które nie wymagają żadnych dodatkowych informacji.

Te instrukcje, które korzystały z pamięci (w przeciwieństwie do rejestrów), używały formatu dwubajtowego z kodem operacji w górnych 6 bitach pierwszego bajtu. Dolne 2 bity kontrolowały typ dostępu do pamięci. Pierwszy (bit 1) wskazywał, czy następujący 8-bitowy operand był adresem bezpośrednim, czy pośrednim. Drugi (bit 0) kontrolował, czy wartość 8-bitowa była przesunięta względem bieżącej strony pamięci zdefiniowany przez licznik programu lub na stronie zerowej. Następujący bajt operandu zawiera 8-bitowy adres. Oznacza to, że przy adresowaniu bezpośrednim dane muszą znajdować się w obrębie 256 bajtów bieżącej instrukcji lub w obrębie pierwszych 256 bajtów pamięci. Jeśli potrzebny jest dostęp do większej pamięci głównej , należy zastosować adresowanie pośrednie.

Adresy pośrednie wykorzystywały dwuetapowy wzorzec dostępu. Najpierw procesor odczytuje dolne 8 bitów instrukcji i patrzy na bit 0, aby zobaczyć, jakiego przesunięcia użyć. Następnie odczytuje bajt w tej lokalizacji i następny bajt, tworząc 16-bitową wartość przechowywaną w specjalnym buforze. Następnie odczyta lub zapisze dane w tej 16-bitowej lokalizacji. Ten wzorzec był powszechnie spotykany na minikomputerach tamtej epoki, ponieważ ułatwiał implementację pewnych form zapętlania danych.

Najbardziej znaczący bit każdego adresu przechowywanego w pamięci był używany do określenia, czy był to adres bezpośredni, czy pośredni, co pozostawiło 15 bitów na rzeczywisty adres, co pozwala na zajęcie do 32 kB pamięci. Ponieważ adres wskazywany przez adres pośredni może również mieć ustawiony wysoki bit, adresy pośrednie mogą tworzyć łańcuchy. Ten styl połączonego dostępu był również widoczny w systemach minikomputerów, takich jak IBM 1620 , HP 2100 i Data General Nova , ale był rzadkością w przypadku mikroprocesorów.

W przypadku rozgałęzień, wywołań podprogramów i skoków zastosowano drugi format, w którym kod operacyjny wykorzystywał górne 4 bity, a dolne 4 bity wraz z 8-bitowym operandem tworzą 12-bitowy adres. Oznaczało to, że kod mógł wywoływać inny kod tylko w „bloku” 4 kB. Było wiele innych formatów instrukcji do celów specjalnych.

Wejście/wyjście było obsługiwane za pomocą specjalnych instrukcji i nie było mapowane w pamięci . Górne 4 bity kodu operacji zawierały instrukcję we / wy (wejście, wyjście, status itp.), Podczas gdy dolne 4 bity były „wolnym polem”. Program mógłby umieścić dowolną wartość w tych 4 bitach i użyć jej jako pola danych ad-hoc do wysłania instrukcji do urządzenia. Wyzwolenie instrukcji skutkowało czterocyklowym procesem. W pierwszym cyklu na szynę H trafiło 6 młodszych bitów instrukcji, w tym 4 bity wolnego pola, a na szynie L wartość akumulatora. Urządzenie mogłoby wtedy odczytać oba, aby zdekodować swoją instrukcję. W drugim cyklu, jeśli CPU miał wysłać dane do urządzenia w celu wyjścia, 8-bitowa wartość była umieszczana na szynie. Trzeciego dnia wszelkie dane wysyłane do procesora były zwracane na magistrali. Czwarty oznaczał koniec cyklu I/O.

Inne szczegóły

Główna magistrala została zmultipleksowana, a łącznie 16 pinów było używanych zarówno do adresowania, jak i danych. Magistrala została podzielona na strony „wysoka” (H) i „niska” (L), obie 8-bitowe. Podczas dostępu do pamięci 15-bitowy adres byłby umieszczany po stronie wysokiego i niskiego poziomu, a następnie dane w tej lokalizacji były odczytywane lub zapisywane tylko przy użyciu magistrali L. Oznaczało to, że dostęp do pamięci wymagał dwóch cykli, co czyniło go wolniejszym niż projekty z oddzielnymi (niemultipleksowanymi) szynami adresowymi i danymi.

Zbudowany w oparciu o proces PMOS , który był powszechny we wczesnych latach 70., układ 5065 wymagał trzech poziomów zasilania: -12 V (V GG ), +5 V (V SS ), -5 V (V DD ) i uziemienia. Został zapakowany w 40-pinowy DIP , co było typowe dla większości procesorów tamtej epoki. Użycie multipleksowanej magistrali zmniejszyło użycie pinów do tego stopnia, że ​​​​pięć pinów pozostało niepodłączonych. Podobnie jak w przypadku większości projektów PMOS, wymagany był zewnętrzny układ zegara , w tym przypadku MK5009. Były też plany wydania adaptera interfejsu peryferyjnego (PIA) pod koniec 1975 roku.

System został wydany z systemem oceny, dwupłytowym GEMS-8, skrótem od General Evaluation Microprocessor System. Obejmowało to sterownik zegara, 512 bajtów pamięci ROM, od 1 do 12 kB pamięci RAM oraz UART do użytku z terminalem komputerowym . ROM zawierał „Program Aid Routine”, małe narzędzie do tworzenia systemu i narzędzie do debugowania. Płyta procesora i PAR ROM kosztowały 597 USD, karta 12k RAM kolejne 597 USD lub obie razem 995 USD. asembler krzyżowy dla nieokreślonego „16-bitowego minikomputera”.

Prędkości zegara dla 5056 nie pojawiają się w żadnych zachowanych odniesieniach. Czasy instrukcji podane są w zakresie od 3 do 16 µs.

Notatki

Cytaty

Bibliografia