CSG65CE02

CSG65CE02
Informacje ogólne
Wystrzelony 1988
Przerwane 1988
Wspólni producenci
Wydajność
Maks. Częstotliwość taktowania procesora 2 MHz do 10 MHz
Architektura i klasyfikacja
Zestaw instrukcji 6502
Specyfikacje fizyczne
pakiet(y)

CSG 65CE02 to 8/16-bitowy mikroprocesor opracowany przez Commodore Semiconductor Group w 1988 roku. Jest członkiem rodziny MOS Technology 6502 , opracowanej na podstawie CMOS WDC 65C02 wydanego przez Western Design Center w 1983 roku.

Podobnie jak 65C02, 65CE02 został zbudowany w oparciu o proces 2 µm CMOS zamiast oryginalnej technologii 8 µm NMOS 6502 , dzięki czemu chip jest mniejszy (a tym samym tańszy), a także zużywa znacznie mniej energii. Oprócz zmian wprowadzonych w 65C02, 65CE02 zawierał również ulepszenia potoku procesora , aby umożliwić wykonanie jednobajtowych instrukcji w 1 cyklu, zamiast 6502 (i większości wariantów) co najmniej 2 cykli. Usunięto również opóźnienia o 1 cykl podczas przekraczania strony . Zmiany te poprawiły wydajność aż o 25% przy tej samej szybkości zegara.

Inne zmiany obejmowały dodanie trzeciego rejestru indeksowego , Z, wraz z dodaniem i modyfikacją szeregu instrukcji korzystania z tego rejestru. Strona zerowa, pierwsze 256 bajtów pamięci, które były używane jako pseudorejestry, można było teraz przenieść na dowolną stronę w pamięci głównej za pomocą rejestru B (strona ase). Rejestr stosu został poszerzony z 8 do 16 bitów przy użyciu podobnego rejestru stron, SPH (wysoki wskaźnik stosu), umożliwiając przeniesienie stosu ze strony pierwszej i rozrost do większych rozmiarów.

65CE02 był podstawą systemu na chipie CSG 4510 , który został opracowany dla niewydanego Commodore 65 . 65CE02 był później używany jako portu szeregowego A2232 do komputera Amiga . Wygląda na to, że nie widział innego zastosowania.

Opis

Rejestry CSG 65CE02
1 5 1 4 1 3 1 2 1 1 10 09 08 07 06 05 04 03 02 01 00 (pozycja bitu)
Rejestry główne
  A Akumulator _
Rejestry indeksowe
  X Indeks X
  Y Indeks Y
  Z Indeks Z
SPH SPL Wskaźnik stosu _ _
B   Strona podstawowa
Licznik programu
komputer Licznik programów _ _
Rejestr stanu
  N V mi B D I Z C Flagi procesora
Wyprowadzenie CSG 65CE02

Tło

Pod koniec lat 70. pierwotny zespół MOS Technology , który zaprojektował 6502, rozpadł się. Bill Mensch przeprowadził się do Arizony i założył Western Design Center (WDC), aby świadczyć usługi projektowe oparte na 6502. Około 1981 roku główni licencjobiorcy projektu 6502, firmy Rockwell Semiconductor , GTE i Signetics , rozpoczęli wraz z firmą Mensch prace nad przeprojektowaniem, które doprowadziły do ​​powstania WDC 65C02 . Była to głównie CMOS oryginalnego NMOS 6502, która zużywała od 10 do 20 razy mniej energii, ale zawierała również szereg nowych instrukcji pomagających poprawić gęstość kodu w niektórych aplikacjach. Nowe instrukcje obejmowały INA/DEA do zwiększania i zmniejszania wartości akumulatora , STZ do zapisywania zera w komórce pamięci oraz BRA , który był skokiem z 1-bajtowym adresem względnym w stylu rozgałęzienia . 65C02 naprawił również szereg drobnych błędów w oryginalnym projekcie 6502.

Oryginalny 6502 został zaprojektowany w erze przed pojawieniem się mikrokomputerów , kiedy mikroprocesory były używane jako podstawa prostszych systemów, takich jak inteligentne terminale , kalkulatory biurkowe i wiele różnych przemysłowych systemów sterowania. Była to również epoka, w której urządzenia pamięci były na ogół oparte na statycznej pamięci RAM , która była bardzo droga i miała małą gęstość pamięci . Z obu tych powodów zdolność do obsługi „dużych” ilości pamięci nie była wymagana, a wiele procesorów miało tryby operacyjne, które działały z małymi porcjami większej przestrzeni adresowej, aby zapewnić wyższą wydajność. Tak było w przypadku 6502, który wykorzystywał pierwszą stronę pamięci lub „stronę zerową”, aby zapewnić szybszy dostęp, a drugą stronę, „stronę pierwszą”, do przechowywania 256-bajtowego stosu .

W latach 80. te założenia nie były już aktualne, wiele maszyn opartych na tych procesorach było teraz dostarczanych z maksymalnymi 64 kB, które mógł adresować 6502, przy użyciu znacznie tańszej i gęstszej dynamicznej pamięci RAM . Zalety szybkości trybu adresowania strony zerowej pozostały, ale teraz istniały w znacznie większej przestrzeni pamięci. Podobnie, jednostronicowy stos wywołań był teraz marnym groszem w całej pamięci, a języki wysokiego poziomu , które niesamowicie wykorzystywały przestrzeń stosu, nie mogły łatwo działać na 6502.

Nowe funkcje

65CE02 to kolejna ulepszona wersja 65C02, która rozszerza model pamięci, aby był bardziej odpowiedni dla systemu z dużą ilością pamięci głównej. W tym celu dodaje następujące nowe funkcje:

  • 65CE02 dodaje 8-bitowy rejestr B dla strony bazowej, który przesuwa stronę zerową do dowolnego miejsca w pamięci. B jest ustawiany na zero przy włączaniu lub resetowaniu, więc 65CE02 początkowo działa dokładnie tak, jak 6502. Jeśli wartość zostanie umieszczona w rejestrze B za pomocą TAB (Transfer A to B), strona zerowa zostanie przeniesiona do nowej lokalizacji. Znaczącym zastosowaniem tej funkcji jest umożliwienie małym procedurom, które mogą zmieścić się w 256 bajtach strony, używanie adresowania strony zerowej (obecnie znanego jako adresowanie strony podstawowej), co zmniejsza kod, ponieważ adresy nie mają już drugiego bajtu, co sprawia również, że kod działa szybciej, ponieważ drugi bajt nie musi być pobierany z pamięci.
  • 65CE02 rozszerza również stos z oryginalnych 256 bajtów pierwszej strony do, teoretycznie, całej przestrzeni adresowej. Robi to, dodając kolejny 8-bitowy rejestr, SPH, dla Stack Pointer High. Zwykle działa to jak B, przesuwając adres bazowy stosu ze strony pierwszej na dowolną wybraną stronę. Poza tym nadal działa jak poprzednio, mając maksymalny rozmiar jednej strony, 256 bajtów. Podobnie jak B, podczas uruchamiania lub resetowania SPH jest ustawiany na 01, dzięki czemu działa dokładnie tak, jak 65C02.
Po ustawieniu nowego bitu „rozszerzenia stosu” w rejestrze stanu , przy użyciu nowych instrukcji CLE/SEE , wskaźnik stosu staje się rzeczywistą wartością 16-bitową. Wartość w SPH jest dodawana do wartości w oryginalnym SP, obecnie znanym jako SPL dla Stack Pointer Low, w celu utworzenia 16-bitowego wskaźnika na dół stosu. Dzięki temu stos może urosnąć znacznie większy niż oryginalne 256 bajtów, które były zbyt małe dla języków wysokiego poziomu.
Oznacza to, że istnieją dwa rodzaje stosów, 256-bajtowy, który może znajdować się w dowolnym miejscu, lub 16-bitowy obejmujący pamięć. Chociaż ta ostatnia jest bardziej elastyczna, oznacza to, że dostęp do stosu musi konstruować 16-bitowy adres z dwóch rejestrów, zajmując dodatkowy cykl, a tym samym spowalniając ogólną wydajność. Używanie mniejszego stosu tam, gdzie to możliwe, zapewnia lepszą wydajność.
  • 65CE02 dodaje również nowy rejestr indeksowy , Z. Jest on ustawiany na zero podczas uruchamiania lub resetowania, co oznacza, że ​​jego instrukcja przechowywania Z w pamięci, STZ , działa tak samo jak w 65C02, gdzie ta sama instrukcja oznacza przechowywanie od zera do pamięci. Pozwala to na uruchomienie niezmodyfikowanego kodu 65C02 na 65CE02. Dodano lub zmodyfikowano szereg innych instrukcji, aby umożliwić dostęp do rejestru Z. Wśród nich są LDZ do ładowania wartości z pamięci, TZA/TAZ do przesyłania wartości do lub z akumulatora, PHZ/PLZ do pchania i ściągania Z na stos, INZ/DEZ do zwiększania i zmniejszania oraz CPZ do porównywania wartość w Z na wartość w pamięci.
  • 65C02 dodał BRA , Branch Always, który był zasadniczo JMP , który używał 8-bitowego adresu względnego w stylu rozgałęzienia zamiast bezwzględnego adresu 16-bitowego. Z nieznanych przyczyn 65CE02 zmienił mnemonik na BRU . Dodali także BSR , Branch to SubRoutine, która wykorzystuje ten sam względny tryb adresowania co JSR , Jump to SubRoutine.
  • Ponadto CE dodał adresowanie 16-bitowe lub „względne słowo” do wszystkich istniejących instrukcji rozgałęzień. Wcześniej gałęzie mogły przesuwać się tylko o 128 miejsc do tyłu lub do przodu o 127, w oparciu o podpisaną 8-bitową wartość, „adres względny”. W 65CE02 mogą to być lokalizacje -32768 lub +32767, podążając za gałęzią z wartością 16-bitową. Wcześniej, aby wykonać „długie rozgałęzienie”, zwykle trzeba było użyć JMP do 16-bitowego celu, a następnie rozgałęzić się na te trzy bajty, gdy nie chciałeś tego robić. Na przykład, jeśli ktoś chciałby rozgałęzić adres 1234 $, jeśli akumulator wynosi zero, zrobiłby CMP #$00/BNE +3/JMP $1234 , co oznacza, że ​​chcesz pominąć 3-bajtowy adres JMP , jeśli akumulator nie jest równy zeru . W 65CE02 można to zredukować do czegoś w rodzaju CMP #$00/BEQ $0123 , czyniąc w ten sposób kod bardziej oczywistym, usuwając dwa bajty instrukcji i eliminując potrzebę pobierania utraconych cykli i uruchamiania gałęzi. Ponieważ jednak nadal wykorzystuje adresowanie względne, adres względny musi zostać obliczony na podstawie etykiety przez programistę lub asemblera podczas konwersji na kod maszynowy.
  • Kolejnym dodatkiem do systemu było szereg instrukcji „word”, które wykonywały operacje na danych 16-bitowych. Obejmowało to INW/DEW do zwiększania i zmniejszania wartości w pamięci oraz ASW/ROW do wykonywania arytmetycznego przesunięcia (lewego) słowa lub obrócenia (lewego) słowa.
  • Bardziej pomniejsze zmiany obejmują dodanie ASR w celu wykonania arytmetycznego (ze znakiem) przesunięcia w prawo (6502 miał tylko logiczne lub bez znaku przesunięcie w prawo), instrukcję NEG A , która wykonuje negację dopełnienia do dwóch na akumulatorze, oraz RTN , wariacja na RTS (ReTurn from Subroutine), który powraca do adresu przesuniętego do stosu zamiast na górze, unikając potrzeby jawnego wyłączania wszystkiego, co procedura dodała podczas działania. System dodał również nowy tryb adresowania, który wykorzystywał adres bazowy na stosie jako podstawę adresowania pośredniego.
  • dodano nową czterobajtową instrukcję AUG do przyszłej rozbudowy. Chociaż arkusz danych nie jest jasny co do jego ostatecznego celu, wydaje się, że jest to element zastępczy, który ma umożliwić przekazywanie instrukcji do jednostek koprocesora, takich jak jednostka zarządzania pamięcią .

Ulepszenia potoku

Główną osobliwością oryginalnego 6502 było to, że instrukcje jednobajtowe, takie jak INX , nadal wymagały dwóch cykli. Pozwoliło to na uproszczenia w rurociągów ; następny bajt z pamięci był pobierany podczas dekodowania operacji, co oznaczało, że następny bajt był pobierany bez względu na wszystko. W przypadku większości instrukcji ten bajt byłby częścią (lub całością) operandu, który można by następnie natychmiast wprowadzić do zdekodowanej instrukcji.

Jeśli instrukcja wymagała tylko jednego bajtu, procesor nadal odczytywał następny bajt podczas dekodowania pierwszego. W tym przypadku następny bajt był następującą instrukcją, ale nie miał możliwości wprowadzenia go z powrotem do pierwszego etapu potoku w celu jego zdekodowania. Zamiast tego pobrana instrukcja została odrzucona i ponownie odczytana w celu wprowadzenia jej do dekodera. To marnuje cykl. Chociaż doprowadziło to do tego, że wiele instrukcji było wolniejszych niż mogłoby być, ta „cecha” została zachowana w 65C02, chociaż w dostępnych źródłach nie wyjaśniono, czy miało to na celu zachowanie prostoty potoku, czy też synchronizację cyklu.

Zachowanie kompatybilności cykli nie było wymogiem dla 65CE02, a nowe procesy produkcyjne sprawiły, że dodatkowe obwody w potoku nie stanowiły problemu, więc potok został ponownie ustawiony, aby poprawnie obsługiwał jednobajtowe instrukcje w jednym cyklu. Dzięki tym ulepszeniom model 65CE02 może wykonywać kod nawet o 25% szybciej niż poprzednie modele 65xx.

Dalsze ulepszenie dotyczy problemu związanego z instrukcjami adresowania, które dodają wartości w celu uzyskania końcowego adresu. Przykłady obejmują „indeksowane pośrednie”, w których wartość w jednym z rejestrów indeksowych jest dodawana do adresu bazowego, a następnie stosuje instrukcję do wynikowego adresu. W oryginalnym 6502, jeśli dodanie dwóch wartości przekraczało granicę strony, co 256 miejsc, potrzebny był dodatkowy cykl, aby uzyskać ostateczną wartość adresu. 65CE02 usunął to ograniczenie, poprawiając w ten sposób wydajność tych powszechnie używanych trybów.

Szczegóły fizyczne

Jest wytwarzany przy użyciu technologii CMOS 2 µm , co pozwala na pracę z mniejszym poborem mocy w porównaniu z poprzednimi wersjami NMOS i HMOS rodziny 65xx. Jest umieszczony w 40-pinowym DIP-ie , który jest kompatybilny pinowo z 6502.

CSG4510

CSG4510

Model 4510 to wariant systemu w pakiecie (SiP) modelu 65CE02, który zawiera dwa kontrolery portów we/wy 6526 CIA i niestandardową jednostkę MMU w celu rozszerzenia przestrzeni adresowej do 20 bitów (1 megabajt). Jest umieszczony w 84-pinowym sterowniku PLCC .

Model 4510 był używany w niewydanym komputerze domowym Commodore 65 i niewydanej obniżonej cenie wersji Commodore CDTV .

Aplikacje

65CE02 był używany w karcie portu szeregowego Commodore A2232 dla komputera Amiga .

Zobacz też

Dalsza lektura

Linki zewnętrzne