
- •II. Pamięci
- •Pojedyncza I sieć jednostek pamięci (o wielu wejściach) zbudowanych na bramkach or
- •Komórka pamięci o pojemności 1 bit, po lewej sram, po prawej dram
- •Porównanie parametrów urządzeń pamięci
- •Struktura logiczna 1-bitowej komórki pamięci
- •Schemat (I symbol) fizycznej jednostki pamięci I jej łączy z zewnętrzem
- •Tablica wartości modułu sterującego pamięci
- •Dekodowanie I demultipleksowanie adresów na kości dram 64k
- •Schemat logiczny pamięci rom
- •Struktura logiczna pamięci rom 25×8
- •Tabela wartości dekodera
- •Komórka pamięci rom – (Metal Oxide Semiconductor)
- •Typowa organizacja pamięci podręcznej
- •Przykład odwzorowania bloków pamięci ram na linie pamięci podręcznej
Przykład odwzorowania bloków pamięci ram na linie pamięci podręcznej
Na jedną linię pamięci podręcznej może zostać odwzorowany jeden z ustalonej liczby bloków RAM (na rysunku jeden z bloków zaznaczonych tym samym kolorem). Ponieważ pamięć podręczna składa się z 8 linii więc na przykład do drugiej linii pamięci podręcznej może zostać przeniesiony 2-gi lub 9-ty lub 16-ty lub … blok pamięci RAM. Etykietę (tag) stanowi kilka najbardziej znaczących bitów adresu linii pamięci RAM, na rysunku powyżej są to 2 najbardziej znaczące bity. Trzy najmniej znaczące bity adresu charakteryzują blok pamięci. Szczegóły (algorytm i regułę)odwzorowania bezpośredniego omówimy na bardziej realistycznym przykładzie.
Przykład
Założenia :
- pamięć podręczna ma pojemność 64KB,
- przepływ informacji między pamięcią główną a podręczną odbywa się blokami o objętość 4 bajty.
- pamięć podręczna składa się z 16K = 214 linii o pojemności 4 bajty każda,co razem daje 64KB,
- pamięć główna ma pojemność 16MB, jest adresowalna bezpośrednio za pomocą 24 bitowych adresów i
składa się z 4M (4000) bloków o pojemności 4 bajty każdy,
Przyjmujemy najprostsze odwzorowanie bezpośrednie (direct mapping), to znaczy jeden blok pamięci głównej jest odwzorowany na jedną linię pamięci podręcznej. Oznaczamy rozmiary pamięci:
r = 14 bitów - na numer linii pamięci podręcznej,
t = 8 bitów - na etykietę (tag), najbardziej znacząca część adresu linii pamięci RAM,
s = r + t =22 bity - na identyfikator jednego z 2s bloków pamięci RAM,
2 – na 2 najmniej znaczące bity identyfikujące poszukiwane słowo lub bajt.
Wobec tego adres słowa pamięci głównej składa się z trzech pól o łącznej pojemności 24 bity:
Tag =etykieta (t) |
numer lini (r) |
słowo lub bajt |
8 bitów |
14 bitów |
2 bity |
Takie odwzorowanie gwarantuje, że nie ma dwóch bloków o identycznej etykiecie i numerze linii. Sprawdzanie zawartości pamięci podręcznej dokonuje się przez przeszukiwanie etykiet.
numer inii pamięci podręcznej |
przypisane do niej bloki pamięci głównej |
0 |
0,m,2m,…,2sm |
1 |
1,m+1, 2m+1,…,2sm+1 |
. |
. |
. |
. |
. |
. |
m-1 |
m-1,2m-1, 3m-1,…,2sm-1 |
Tablica odwzorowania bloków pamięci RAM na numery linii pamięci cache
Organizacja odwzorowania
Przykład odwzorowania
Ponieważ liczba linii pamięci cache jest znacznie mniejsza niż liczba bloków pamięci głównej to zdarzają się przypadki kiedy poszukiwanego przez procesor słowa nie ma w pamięci cache i trzeba to słowo pobrać z pamięci głównej wraz całym blokiem. Blok ten zostaje skopiowany do przypisanej mu linii pamięci podręcznej. Jeżeli linia już zawiera jakiś blok to zostaje on usunięty, a jej miejsce zajmuje blok, w którym znajduje się aktualnie poszukiwana informacja. Nie ma możliwości umieszczenia bloku np. w linii rzadko ostatnio odwiedzanej. Obniżałoby to sprawność pamięci podręcznej. Zaletami odwzorowania bezpośredniego są prostota i niska cena.
Bardziej elastyczne postępowanie dopuszczają inne odwzorowania, na przykład asocjacyjne, tzw. set associative. Jednak ceną jest konieczność zastosowania skomplikowanego algorytmu decydującego dokąd ma być skopiowany nowy blok.
Zazwyczaj komputery posiadają hierarchiczny zbiór kilku pamięci podręcznych różniących się fizyczną odległością od procesora, czasem dostępu i pojemnością.
Rejestry
Słowo rejestr jest używane w dwóch znaczeniach, jako fizyczna struktura półprzewodnikowa i jako słowo zapisane w tej strukturze. Rejestr w tym pierwszym znaczeniu oznacza zbiór pamięci RAM i o bardzo małej pojemności (zazwyczaj jednego słowa) i o krótkim czasie dotępu, ulokowanych na tej samej kości co procesor. Rejestr w drugim znaczeniu to zbiór n komórek (albo nawet ich zawartość, to znaczy informacja znajdująca się w fizycznym rejestrze), z których każda może zapamiętać 1 bit informacji. Z punktu widzenia obwodów elektronicznych jest to zbiór flip-flopów. Stan rejestru to zbiór n zer i jedynek (‘0’ i ‘1’), który w zależności od kontekstu może reprezentować liczbę, symbol, adres lub instrukcję. Na przykład 16-bitowy rejestr może znajdować się w jednym z 216 stanów, jednym z tych stanów może być,na przykład zbiór ‘1100001111001001’. Jeżeli stany tego rejestru mają reprezentować liczby całkowite, będzie to liczba 50 121, jeżeli rejestr ma zawierać symbole ASCII to pierwsze 8 bitów rejestru jest literą ‘C’ a drugie 8 literą ‘I’, itd. Wszystkie komórki rejestru pracują pod dyktando tego zamego zegara. Rejestr oprócz komórek pamięci (elementów flip-flop) może zawierać bramki kombinacyjne, to znaczy bramki przetwarzające dane zawarte w elementach flip-flop.
Do współpracy rejestrów z procesorem i między sobą potrzebna jest łączność w postaci ścieżek elektrycznych między nimi. Gdyby każdą parę rejestrów łączyła odrębna ścieżka to łącznie zajmowałyby zbyt dużą część fizycznej objętości procesora. Dlatego system połączeń ma strukturę o nazwie magistrali. Magistrala jest zbiorem tylu linii (ścieżek) ile bitów zawiera rejestr, w każdej chwili jedną linią przesyłany jest jeden bit informacji. Jednostka sterująca procesora wskazuje, którą ścieżkę w jednym cyklu zegara zajmuje każdy rejestr. Magistrala może być zbudowana z użyciem multiplekserów, które na podstawie sygnału sterującego otwierają odpowiedni rejestr, z którego informacja przepływa do odpowiedniej linii magistrali. Potrzebnych jest tyle multiplekserów ile bitów zawiera słowo, rozmiar każdego z nich (czyli liczba multipleksowanych sygnałów) wynosi tyle ile jest rejestrów.
Schemat logiczny fragmentu magistrali dla 4 rejestrów
S1 |
S0 |
Przypisany rejestr |
0 |
0 |
A |
0 |
1 |
B |
1 |
0 |
C |
1 |
1 |
D |
Tablica wartości powyższego systemu magistrali
System magistrali może również być zbudowany z trójstanowych buforów. Bufor jest układem elektronicznym, który może znajdować się w jednym z trzech stanów. Dwa z nich reprezentują logiczne 0 i 1, a trzeci nie ma żadnej wartości logicznej, odpowiada otwartemu obwodowi (o nieskończenie dużym oporze elektrycznym).
Symbol bufora tablica jego wartości
Dwa obwody o różnej wartości wejścia kontrolnego 'e' (enable), równoważne powyższemu
Schemat logiczny systemu magistrali dla bitu o numerze 0
Wybrane rejestry
Jedną z grup rejestrów tworzą rejestry przechowujące instrukcje, wywoływane przez procesor do wykonania jedna po drugiej w zadanej kolejności. W jednym cyklu zegara jednostka sterująca odczytuje instrukcję i wykonuje nią. Sekwencyjność tego procesu wymaga istnienia licznika odczytującego w tym czasie adres następnej instrukcji (rejestr PC). Inne rejestry przechowują adresy instrukcji, kod instrukcji po pobraniu jej z pamięci. Grupy rejestrów mogą mieć zróżnicowane pojemności zależne od rozmiaru przechowywanych wielkości.
Przykład
Lista rodzajów rejestrów w zbiorze instrukcji w modelu architektury o nazwie Basic Computer
symbol i nazwa ang. |
liczba bitów |
nazwa |
funkcja |
DR(MDR) - data register |
16 |
rejestr danych |
zawiera operandy |
AR(MAR) - address register |
12 |
rejestr adresów |
zawiera adresy |
AC - accumulator |
16 |
akumulator |
rejestr procesora |
IR - instruction register |
16 |
rejestr instrukcji |
zawiera kody instrukcji |
PC - program counter |
12 |
licznik programów |
adresy kolejnych instrukcji |
TR - temporary register |
16 |
rejestr tymczasowy |
zawiera dane tymczasowe |
INPR - input register |
8 |
rejestr wejść |
zawiera znaki wchodzące |
OUTR - output register |
8 |
rejestr wyjść |
zawiera znaki wychodzące |
Rejestr adresów ma długość12 bitów ponieważ tyle znaków ma adres komórki w pamięci RAM. Taką samą długość ma licznik programów ponieważ on także zawiera w pamięci adres instrukcji następnej po aktualnie wykonywanej. Rejestr wejścia zawiera 8-mio bitowe znaki przychodzące z wejścia, podobnie rejestr wyjścia zawiera tego typu znaki skierowane do wyjścia.
Synchronizacja czynności procesora (timing)
Każdy komputer posiada wewnętrzny zegar sterujący szybkością wykonywania instrukcji oraz synchronizujący pracę wszystkich składników komputera. Zegar sterowany przez kryształ kwarcu (albo rezonator ceramiczny) generuje periodyczny, prostokątny sygnał elektryczny (oznaczany zwykle słowem 'clock ' lub skrótem 'clk'), który jest rozprowadzany w całym komputerze.
Sygnał generowany przez zegar, czas płynie z lewa na prawo
Narastanie lub opadanie napięcia sygnału sygnalizuje zazwyczaj chwilę rozpoczęcie pewnych działań.
Narastające (po lewej) i opadające(po prawej) fazy sygnału zegara
Dokładniej mówiąc sygnał zegara wyznacza chwilę kiedy w urządzeniu ma zajść jakiś proces, natomiast inne sygnały (z zewnątrz) decydują jaki to ma być proces. Na przykład jeżeli obwód ma dodać dwie liczby znajdujące się w rejestrach to wykonuje dodawanie i umieszcza wynik w rejestrze w chwili pojawienia się impulsu.
Okres sygnału (cykl - przedział czasu między sąsiednimi, identycznymi stanami sygnału) nie może być krótszy niż najdłuższy czas potrzebny na przejście dowolnego sygnału elektrycznego między dwoma składnikami CPU. Również wykonanie jakiejkolwiek operacji przez układ elektroniczny zabiera trochę czasu. Większość składników CPU to złożone logiczne urządzenia sekwencyjne. Oznacza to, że mogą przystąpić do wykonania następnej czynności dopiero po ukończeniu poprzedniej. Częstotliwość zegara (odwrotność okresu) musi być dostosowana do najwolniejszego urządzenia. Wykonanie jednej instrukcji zajmuje zazwyczaj kilka cykli (okresów) zegara.
Obwody kombinacyjne i sekwencyjne
Według jednego z kryteriów, dotychczas omawiane obwody dzielą się na dwie grupy kombinacyjne i sekwencyjne. Tym kryterium jest zależność stanu obwodu (zawartej w nim informacji) od czasu. Stan obwodu kombinacyjnego zależy wyłącznie od aktualnych sygnałów na wejściu, nie zależy od jego stanów w przeszłości.
Przykład obwodu kombinacyjnego zbudowanego z dwóch bramek XOR
Innym bardziej złożonym obwodem kombinacyjnym jest dekoder.
Jeżeli do obwodu kombinacyjnego zostanie dołączony element pamięci, na przykład dwustanowy flip-flop to otrzymamy obwód sekwencyjny.
Przykład obwodu sekwencyjnego
Inny przykład obwodu sekwencyjnego zbudowanego z jednej bramki OR
Jeżeli w chwili początkowej A i Q mają wartość 0 to na wyjściu Q będzie zawsze 0. Jeżeli jednak A zmieni wartość na 1 to wyjście Q również zmieni wartość na 1 i pozostanie w tym stanie niezależnie od późniejszych zmian wejścia A. Taki obwód jest pamięcią o pojemności 1 bita jednokrotnie programowalną.
W ogólności obwód sekwencyjny różni się od kombinacyjnego tym, że jego stan zależy nie tylko od sygnału na wejściu ale również od czasu. Ściśle mówiąc stan synchronicznego obwodu sekwencyjnego zależy od dyskretnej sekwencji stanów na wejściu i wyjściu w chwilach poprzednich. Stan każdego obwodu może się zmieniać tylko w dyskretnych odstępach czasu generowanych przez zegar.