Cache (pamięć podręczna) to mechanizm, w którym ostatnio pobierane dane dostępne ze źródła o wysokiej latencji i niższej przepustowości są przechowywane w pamięci o lepszych parametrach.
Cache jest elementem właściwie wszystkich systemów - współczesny procesor ma 2 albo 3 poziomy pamięci cache oddzielającej go od pamięci RAM. Dostęp do dysku jest buforowany w pamięci RAM, a dokumenty HTTP są buforowane przez pośredniki HTTP oraz przez przeglądarkę.
Systemy te są tak wydajne dzięki lokalności odwołań - jeśli nastąpiło odwołanie do pewnych danych, jest duża szansa, że w najbliższej przyszłości będą one potrzebne ponownie. Niektóre systemy cache próbują przewidywać, które dane będą potrzebne i pobierają je wyprzedzając żądania. Np. cache procesora pobiera dane w pakietach po kilkadziesiąt czy też więcej bajtów, cache dysku zaś nawet do kolejnych kilkuset kilobajtów czytanego właśnie pliku.
Niektóre systemy pamięci cache umożliwiają informowanie systemu na temat charakteru danych by umożliwiać bardziej efektywne buforowanie. Służy temu np. wywołanie systemowe madvise.
Zasady projektowania cache
Część systemu komputerowego zajmująca się buforowaniem danych powinna charakteryzować się następującymi właściwościami:
powinna być jak najbardziej automatyczna
jej działanie nie powinno wpływać na semantykę pozostałych części systemu
powinna w jak największym stopniu poprawiać wydajność systemu w warunkach rzeczywistej pracy
Projektując cache rozpatruje się pewne typowe warunki, w jakich będzie on wykorzystywany. Program korzystający z cache ma więcej informacji na temat użycia pamięci w najbliższym czasie, i wydajność systemu można polepszyć jeśli zrezygnuje się z pełnej automatyzacji a pozwoli na dawanie cache'owi sugestii co do właściwego zachowania w danej sytuacji. W ten sposób działa m.in. wywołanie systemowe madvise, specjalne instrukcje asemblera na niektórych procesorach, nagłówki kontroli cache'owania w HTTP; wiele DBMS pozwala też na przekazywanie kontrolerowi pamięci sugestii.
Zadanie cache można wyrazić w następujący sposób: mamy duży zbiór obiektów w powolnej pamięci, i niewielką ilość szybkiej pamięci, w której na pewno nie pomieszczą się wszystkie obiekty. Ciągle napływają żądania dostępu do obiektów, a cache musi je wszystkie spełnić w jak najmniejszym stopniu korzystając z pamięci powolnej.
Temperatura danych
Przy rozpatrywaniu systemu cache przydatne jest pojęcie "temperatury" - czyli prawdopodobieństwa, że w najbliższym czasie wpłynie żądanie dostępu do tego obiektu (jeśli obiekt jest duży, temperatura poszczególnych części może się różnić). Jest oczywiste, że powinniśmy w szybkiej pamięci trzymać obiekty o możliwie wysokiej temperaturze. Jednak temperatura obiektu nie jest znana, i musimy jakoś ją oszacować. Typowe heurystyki to:
lokalność czasowa - jeśli obiekt był ostatnio żądany, to jest duże prawdopodobieństwo, że będzie żądany ponownie w najbliższym czasie
lokalność przestrzenna - jeśli obiekt był ostatnio żądany, to prawdopodobnie będą też żądane obiekty leżące blisko niego. Położenie w wypadku pamięci komputera oznacza zwykle adres maszynowy. W przypadku plików na stronie internetowej, pliki linkujące do siebie leżą blisko siebie.
o niektórych typach obiektów wiemy, że ich średnia temperatura jest wyższa niż innych typów - np. temperatura pliku (z grubsza proporcjonalna do liczby ściągnięć) html na stronie internetowej jest zazwyczaj wyższa niż temperatura pliku pdf.
Żeby zmaksymalizować średnią temperaturę cache chcielibyśmy operować na poziomie jak najmniejszych jednostek, np. kilku bajtów. Byłoby to jednak bardzo niepraktyczne, więc używa się większych jednostek - np. w DBMS kilkudziesięciokilobajtowych stron. Strona taka może zawierać wiele obiektów. W miarę możliwości powinno się tak projektować strony, aby obiekty na jednej stronie miały podobną i skorelowaną temperaturę.
Jeśli na każdej stronie znajdowałyby się zarówno obiekty gorące jak i chłodne, niemożliwe byłoby uzyskanie wysokiej temperatury cache. Jeśli natomiast niektóre strony będą znacznie cieplejsze od innych, cache może zawierać te pierwsze i osiągnąć wyższą temperaturę. Na przykład w typowym drzewie indeksowym obiekty są relatywnie chłodne, natomiast wskaźniki są znacznie gorętsze. Tak więc trzymanie danych tylko na liściach pozwala na znacznie lepszą separację niż gdyby trzymać je na każdym węźle.
W miarę możliwości powinno się trzymać na stronie obiekty o skorelowanej temperaturze, np. strony pamięci wirtualnej procesora zawierają leżące po kolei bajty, które ze względu na lokalność przestrzenną mają prawdopodobnie skorelowane temperatury. Z tego też powodu używa się osobnych linii cache dla danych i dla kodu.
Cache procesora
Pamięć cache przyspiesza dostęp do relatywnie wolnej pamięci RAM. Charakteryzuje się bardzo krótkim czasem dostępu. Jest używana do przechowywania danych, które będą w niedługim czasie przetwarzane. Na współczesnych procesorach są 2 lub 3 poziomy pamięci cache: L1 (zintegrowana z procesorem), a także L2 i L3 (umieszczone w jednym chipie razem z procesorem, lub na płycie głównej).
Cache dysku twardego
Pamięć cache dysku twardego przyspiesza dostęp do bardzo wolnej pamięci masowej (w porównaniu do pamięci RAM do której dane są pobierane). Cache o wielkości od 128 KB do 32 MB jest zazwyczaj podzielony na dwie części: obszar podsystemu odpowiedzialnego za odczyt z wyprzedzeniem i buforowanie odczytu oraz mniejszy obszar opóźnionego zapisu. Dysk z kontrolerem komunikuje się magistralą szybszą niż najszybsze budowane dyski twarde - daje to możliwość przechowania danych w buforze i wysłania do kontrolera bez wykonywania cyklu dostępu do nośnika oraz wpływa pozytywnie na szybkość całego systemu.
RAM (ang. Random Access Memory) - jest to podstawowy rodzaj pamięci cyfrowej zwany też pamięcią użytkownika lub pamięcią o dostępie swobodnym. Choć nazwa sugeruje, że oznacza to każdą pamięć o bezpośrednim dostępie do dowolnej komórki pamięci (w przeciwieństwie do pamięci o dostępie sekwencyjnym, np. rejestrów przesuwnych), to nazwa ta ze względów historycznych oznacza tylko te rodzaje pamięci o bezpośrednim dostępie, które mogą być też zapisywane przez procesor, a wyklucza pamięci ROM (tylko do odczytu), pomimo iż w ich przypadku również występuje swobodny dostęp do zawartości.
W pamięci RAM przechowywane są aktualnie wykonywane programy i dane dla tych programów, oraz wyniki ich pracy. Zawartość większości pamięci RAM jest tracona w momencie zaniku napięcia zasilania, dlatego wyniki pracy programów muszą być zapisane na jakimś nośniku danych.
Pamięć RAM jest stosowana głównie jako pamięć operacyjna komputera, jako pamięć niektórych komponentów (procesorów specjalizowanych) komputera (np. kart graficznych, dźwiękowych, itp.), jako pamięć danych sterowników mikroprocesorowych.
INNA NAPOTKANA DEFINICJA RAM (I ROM):
Rodzaje pamięci
1. Pamięć ROM
W pamięciach nieulotnych typu ROM umieszczone są informacje stałe. ROM jest najbardziej niezawodnym nośnikiem informacji o dużej gęstości zapisu. Zapis informacji dokonuje się w procesie produkcji lub podczas ich programowania. W pamięci ROM zapisuje się ustawienia BIOSu.
Pamięci typu ROM przeznaczone są głównie do umieszczania w nich startowej sekwencji instrukcji, kompletnych programów obsługi sterowników i urządzeń mikroprocesorowych, także ustalonych i rzadko zmienianych danych stałych. Ze względu na sposób umieszczania danych pamięci ROM dzieli się na:
1) Pamięć ROM programowana maską (mask ROM) - Jej zawartość ustala się na podstawie wzorca dostarczanego przez użytkownika w trakcie procesu technologicznego. Pamięć ta jest przeznaczona tylko do odczytu, co w wielu wypadkach uniemożliwia jej zastosowanie.
2) Pamięć PROM (Programmable ROM). - Jest dostarczana przez producenta w stanie niezaprogramowanym z możliwością jednokrotnego ustalania dowolnej zawartości bezpośrednio przez użytkownika. Właściwą treść pamięci ustala się jednorazowo przez elektryczne przepalenie odpowiednich połączeń wewnętrznych. Każda pomyłka w czasie programowania eliminuje programowany układ.
3) Pamięć EPROM (Erasable Programmable ROM). - Najpopularniejszy rodzaj pamięci kasowalnej i programowalnej o nieulotnej zawartości informacji. Kasowanie zawartości dokonuje się przez intensywne naświetlenie promieniem ultrafioletowym. Nie jest możliwe kasowanie pojedynczych bajtów pamięci, natomiast proces przeprogramowania zawartości pamięci może być powtarzany wielokrotnie. Przewidywany czas trwałości danych umieszczanych w pamięci EPROM wynosi co najmniej 10 lat.
4) Pamięci EEPROM (Electrically Erasable Programmable ROM). - Każdy bajt można kasować elektrycznie i zapisać nową zawartością bezpośrednio w urządzeniu, w którym normalnie funkcjonuje pamięć, a do zaprogramowania dowolnego bajtu wystarcza jeden cykl zapisu. Wykorzystanie tej możliwości sprawia, że pamięć ta jest idealnym rozwiązaniem przy uruchamianiu nowego oprogramowania, bądź modyfikacji zawartości istniejącej pamięci. Przyjmuje się, że pamięć EEPROM powinna wytrzymać 100 tys. przeprogramowań.Do PC pamięci EEPROM trafiły natychmiast, gdy tylko ich cena zaczęła na to pozwalać - możliwość przedłużenia "moralnego życia" płyty głównej przez wymianę BIOS-u była bardzo atrakcyjna dla producentów komputerów. Tym bardziej, że dostępność takich pamięci zbiegła się w
czasie z początkiem dywersyfikacji standardu PC - stosowane w nich procesory przestały być wiernymi kopiami Intelowskich.
5) Pamięć Flash EEPROM. W tym typie pamięci zwykle nie można kasować
6) ani programować pojedynczych bajtów. Możliwe jest kasowanie i programowanie blokami pamięci lub w całości. Pamięci Flash wytrzymują od 100 do 10 tys. cykli kasowania i programowania.
Pamięci ROM są stosowane w praktyce do zapamiętywania podstawowych funkcji konfiguracyjnych oraz obsługi systemu operacyjnego komputera. Na ogół służą
do zapamiętania informacji o rodzajach portów, stosowanej pamięci RAM, dyskach itp.
2. Pamięć RAM (Random Access Memory)
Podstawowy rodzaj pamięci o dostępie swobodnym, nieodzowny w każdym komputerze, przechowujący całość lub część bieżąco wykonywanego programu. Pamięć operacyjna pozostaje w stałym kontakcie z procesorem, dla którego logicznie przedstawia uporządkowany ciąg komórek zaadresowanych od 0 do 2n, przy czym n oznacza liczbę bitów rejestru adresowego procesora. Pamięć operacyjna może być zrealizowana jako pamięć stała lub pamięć zapisywalna.
Rozmiar (pojemność) pamięci operacyjnej, oprócz szybkości procesora, charakteryzuje możliwości komputera. Współczesne komputery PC z reguły dysponują dziesiątkami megabajtów pamięci operacyjnej. Takich ilości pamięci wymagają programy stosujące interfejsy graficzne.
2.1. Podział pamięci RAM ze względu na budowę.
SRAM - (Static RAM), pamięć statyczna. Cechuje ją bardzo krótki czas dostępu do poszczególnej komórki i nieulotność. Niestety, pamięci SRAM są drogie, dlatego też wykorzystuje się je głównie jako pamięci cache.
DRAM - (Dynamic RAM) pamięć dynamiczna. Pamięć ta jest wolniejsza niż pamięć SRAM a w dodatku jest ona ulotna. Aby pamięć ta nie utraciła danych trzeba ją odświeżać z częstotliwością co najmniej kilkaset Hz. Odświeżanie polega na zwykłym odczycie zawartości komórki.
SDRAM - (Synchronous Dynamic RAM) pamięć dynamiczna, synchroniczna. Pamięć ta jest podobna do pamięci DRAM, z tym że dostęp do komórek pamięci jest zsynchronizowany z zewnętrznym zegarem taktującym procesor.
2.2. Podział ze względu na dostęp
FPM RAM - (Fast Page Mode RAM), pamięć ta zorganizowana jest w strony, przy czym najszybciej realizowany jest dostęp do kolejnych komórek w obrębie strony.
EDO RAM - (Extended Data Output RAM), jest to pamięć w przypadku której w czasie odczytu danej komórki, może zostać pobrany adres następnej.
BEDO RAM - (Burst EDO RAM), w przypadku tej pamięci zamiast jednego adresu pobierane są cztery, przy czym na magistralę wystawiany jest tylko pierwszy co znacznie zwiększa szybkość dostępu.
2.3. Moduły pamięci.
Pamięć fizycznie występuje w postaci kości (układów scalonych), które mogą być całkowicie od siebie różne. Dlatego też powstały standardy konstrukcyjne, wymuszające łączenie kości w funkcjonalne moduły, które są zwyczajnymi płytkami drukowanymi z wlutowanymi chipami pamięci. Wraz z rozwojem komputerów i poszerzaniem szyny adresowej powstały różne typy modułów.
SIMM - (Single Inline Memory Module), moduł 32-stykowy, w którym szerokość szyny adresowej wynosi 8 bitów. Moduły te obecnie wykorzystywane są jedynie w niektórych kartach rozszerzających, gdyż płyty główne już dawno przestały je obsługiwać.
PS/2 - moduł 72-stykowy z 32-bitową szyną adresową. Jego nazwa powstała od rodziny komputerów PS/2, w których pierwotnie zainstalowano te moduły.
DIMM - (Dual Inline Memory Module) moduł 128-stykowy w którym szyna adresowa ma 64 bity. Jest to najnowszy standard konstrukcyjny wykorzystywanych w płytach z procesorem Pentium.
2.4. Układ DMA.
Układ DMA (Direct Memory Access) służy do bezpośredniej komunikacji z pamięcią bez użycia procesora. Najczęściej wymiana danych przebiega na linii pamięć - urządzenia zewnętrzne, lecz możliwa jest też wymana pamięć - pamięć.
DLA DOCIEKLIWYCH (TAKŻE O PAMIĘCIACH):
Zasada działania
Układy pamięci RAM zbudowane są z elektronicznych elementów, które mogą zapamiętać swój stan. Dla każdego bitu informacji potrzebny jest jeden taki układ. W zależności od tego czy pamięć RAM jest tak zwaną statyczną pamięcią (SRAM-Static RAM), czy dynamiczną (DRAM-Dynamic RAM) zbudowana jest z innych komponentów i soje działanie opiera na innych zasadach. Pamięć SRAM jako element pamiętający wykorzystuje przerzutnik, natomiast DRAM bazuje najczęściej na tzw. pojemnościach pasożytniczych (kondensator). DRAM charakteryzuje się niskim poborem mocy, jednak związana z tym skłonność do samorzutnego rozładowania się komórek sprawia, że konieczne staje się odświeżanie zawartości impulsami pojawiającymi się w określonych odstępach czasu. W przypadku SRAM, nie występuje konieczność odświeżania komórek lecz okupione jest to ogólnym zwiększeniem poboru mocy. Pamięci SRAM, ze względu na krótki czas dostępu są często stosowane jako pamięć podręczna. Wykonane w technologii CMOS pamięci SRAM mają mniejszy pobór mocy, są jednak stosunkowo drogie w produkcji.
Budowa
Aby zorganizować komórki pamięci w sprawnie funkcjonujący układ, należy je odpowiednio zaadresować. Najprostszym sposobem jest zorganizowanie pamięci liniowo - jest to tak zwane adresowanie 2D. Do każdej komórki podłączone jest wejście, sygnał wybierania pochodzący z dekodera oraz wyjście. Nieco innym sposobem jest adresowanie przy użyciu tzw. matrycy 3D.Pamięć organizuje się tutaj dzieląc dostępne elementy na wiersze i kolumny. Dostęp do pojedynczego elementu pamiętającego można uzyskać po zaadresowaniu odpowiedniego wiersza i kolumny. Dlatego też komórka RAM obok wejścia i wyjścia musi dysponować jeszcze dwoma sygnałami wybierania, odpowiednio z dekodera kolumn i wierszy.Zaletą pamięci adresowanej liniowo jest prosty i szybszy dostęp do poszczególnych bitów niż w przypadku pamięci stronicowanej (3D), lecz niestety, przy takiej organizacji budowanie większych modułów RAM jest kłopotliwe. Dlatego też w przemyśle stosuje się zazwyczaj układy pamięci zorganizowanej w matrycę 3D, pozwala to na nieskomplikowane tworzenie większych modułów o jednolitym sposobie adresowania.
W komputerach PC procesor uzyskuje dostęp do danych zawartych w pamięci DRAM w pakietach o długości 4-bitów (z pojedynczego rzędu), które przesyłane są sekwencyjnie lub naprzemiennie (tzw. przeplot - interleave). Optymalną wydajność można osiągnąć wtedy, gdy procesor otrzymuje dane równocześnie z taktem systemowego zegara. Jednak przy obecnie stosowanej częstotliwości taktowania magistrali wymaganiom tym nie jest w stanie sprostać nawet bardzo szybka pamięć cache drugiego poziomu. Pomimo tego, że ostatnie trzy bity dostarczane są wraz z taktem zegara, to konieczność odpowiedniego przygotowania transmisji sprawia, że przed pierwszym bitem "wstawiony" zostaje jeden cykl oczekiwania. Taki sposób transferu danych można oznaczyć jako cykl 2-1-1-1.
Rodzaje pamięci RAM
Fast Page Mode (FPM RAM)
Czas dostępu wynosi zazwyczaj 70 lub 60 ns. Układy te charakteryzują się niską - jak na dzisiejsze czasy - wydajnością, dane przesyłane są jako seria 5-3-3-3 w cyklach pracy procesora. Sposób dostępu do komórek, zorganizowanych jako matryca 3D, jest zdeterminowany przez sygnały RAS i CAS. Sygnał RAS (Row Access Signal) odpowiada za wybranie bieżącego wiersza (strony), a CAS (Column Access Signal) wyznacza odpowiednią kolumnę. Proces odczytu z pamięci FPM rozpoczyna się od wybrania odpowiedniego wiersz sygnałem RAS, po czym w celu zaadresowania kolumny następuje uaktywnienie sygnału CAS.
Każdy cykl sygnału CAS zawiera wybranie adresu kolumny, oczekiwanie na dane, przekazanie danych do systemu i przygotowanie następnego cyklu. W czasie cyklu CAS, gdy sygnał CAS przyjmuje wysoki poziom, wyjścia danych są zablokowane. Jest to istotne z tego względu, że zmiana sygnału na wysoki może nastąpić tylko po zakończeniu przesyłania danych. Mówiąc prościej, przed wyznaczeniem następnej komórki czyli zaadresowania jej w danej kolumnie, musi zakończyć się operacja na danych. Ponieważ często jest tak, że przesyłamy w jeden region pamięci dane w większych porcjach, Fast Page Mode RAM potrafi nieco skrócić czas potrzebny na dostęp do informacji, gdy jej poszczególne bity znajdują się na tej samej stronie pamięci.
Extented Data Output (EDO RAM)
Obecnym standardem w świecie PC stały się pamięci EDO. Czas dostępu wynosi tutaj 70 i 60 ns. Coraz częściej spotyka się także układy pracujące z szybkością 50 ns, są one szczególnie popularne w nowszych kartach graficznych. Stosowanie tego rodzaju pamięci wymaga odpowiedniej płyty głównej; obecnie praktycznie wszystkie takie urządzenia bazują na chipsecie Intel Triton, który posiada wsparcie dla modułów EDO. Najważniejszą zaletą pamięci typu EDO jest zmniejszenie liczby cykli oczekiwania podczas operacji sekwencyjnego odczytu. W przypadku modułów bazujących na FPM, cykl dostępu do pamięci wynosił 5-3-3-3, natomiast EDO może pracować przesyłając dane w serii 5-2-2-2. Termin Extended Data Out określa sposób, w jaki dane są przesyłane z pamięci.
W przypadku FPM przed wybraniem następnej komórki w kolumnie, musiała zakończyć się operacja na danych. Natomiast EDO umożliwia rozpoczęcie wyznaczania następnego adresu w czasie, gdy dane są jeszcze odczytywane z poprzedniego miejsca. Tak naprawdę jedyna modyfikacja, jaka była konieczna, żeby osiągnąć ten efekt to zmiana zachowania się pamięci na sygnał CAS. Gdy sygnał CAS przyjmuje stan wysoki, wyjścia nie są blokowane, a przesyłanie danych jest kontynuowane dopóki CAS nie przyjmie ponownie wartości niskiej.
Burst Extended Data Output (BEDO RAM)
Rozwinięciem pamięci EDO jest BEDO RAM. Zasadniczą zmianą w przypadku BEDO jest sposób, w jaki dane przesyłane są po wyznaczeniu adresu. Otóż dzięki temu, że BEDO posiada wewnętrzny licznik adresów, kontroler pamięci odwołuje się tylko do pierwszej komórki pamięci, a pozostałe bity przesyła samoczynnie układ logiki. Jest to tak zwane przesyłanie w trybie burst, co pozwala na cykl pracy 5-1-1-1. Moduły BEDO posiadają także inne modyfikacje wpływające na ich wydajność, np. skrócenie odstępu pomiędzy zboczami sygnału CAS oraz opóźnienia pomiędzy sygnałem RAS i CAS.
Nie zrezygnowano także z rozwiązania stosowanego w pamięciach EDO. W czasie przesyłania ostatniego bitu w pakiecie (burst) danych, wysterowywany jest już kolejny adres. Obecnie znaczenie opisywanych układów pamięci znacznie zmalało, gdyż można je stosować tylko w przypadku płyt głównych z chipsetem VIA 580VP, 590VP, 680VP, które nie należą, przynajmniej u nas, do najczęściej spotykanych. Nie wydaje się także, aby ten rodzaj RAM-u stał się popularny w przyszłości, ponieważ po zwiększeniu częstotliwości magistrali powyżej 66MHz, BEDO nie może dostarczać danych w sekwencji 5-1-1-1.
Synchroniczna DRAM (SDRAM)
Nowsze płyty główne zbudowane na układach Intel Triton VX i TX oraz VIA 580VP i 590VP potrafią współpracować także z pamięciami SDRAM (Synchronous Dynamic RAM, nie mylić ze SRAM). Najważniejszą cechą tego nowego rodzaju pamięci jest możliwość pracy zgodnie z taktem zegara systemowego. Podobnie do układów BEDO, SDRAM-y mogą pracować w cyklu 5-1-1-1. Istotną różnicą jest natomiast możliwość bezpiecznej współpracy z magistralą systemową przy prędkości nawet 100 MHz (10 ns).
Technologia synchronicznej pamięci DRAM bazuje na rozwiązaniach stosowanych w pamięciach dynamicznych, zastosowano tu jednak synchroniczne przesyłanie danych równocześnie z taktem zegara. Funkcjonalnie SDRAM przypomina typową DRAM, zawartość pamięci musi być odświeżana. Jednak znaczne udoskonalenia, takie jak wewnętrzny pipelining czy przeplot (interleaving) sprawiają, że ten rodzaj pamięci oferuje bardzo wysoką wydajność. Warto także wspomnieć o istnieniu programowalnego trybu burst, gdzie możliwa jest kontrola prędkości transferu danych oraz eliminacja cykli oczekiwania (wait states).
SIMM-y kontra DIMM-y
Opisywane wyżej różne rodzaje pamięci są produkowane jako układy scalone. Jednak konieczność rozbudowy współczesnych komputerów sprawia, że nie jest opłacalne wlutowywanie na stałe układów scalonych. Dlatego też już od dawna, pamięci są montowane w tak zwanych modułach. Najpopularniejsze jak dotąd moduły SIMM (Single In Line Memory Module) oznaczają sposób zorganizowania kości pamięci, a nie ich rodzaj.
Standard DIMM, nowy w świecie PC, lecz bardzo dobrze przez użytkowników Macintoshy, oznacza Dual In Line Memory Module. Szerokość danych modułów SIMM wynosi 32-bity, a DIMM 64-bity, dlatego też w przypadku 64-bitowej magistrali konieczne jest łączenie SIMM-ów w pary dla odsadzenia pojedynczego banku. Fakt iż pamięci SDRAM spotykane są w modułach DIMM nie oznacza, że te dwa standardy są ze sobą tożsame. Równie dobrze w 64-bitowym gnieździe DIMM można umieścić pamięć EDO lub FPM.
Pamięć cache
Wydajność systemu wyposażonego nawet w szybszą pamięć SDRAM, wzrośnie jeśli tylko na płycie głównej zostanie umieszczona pamięć podręczna. Cache drugiego poziomu jest tak zwaną pamięcią statyczną SRAM. Ten rodzaj RAM jest szybszy od pamięci dynamicznych, jednak bardziej kosztowny. Już w komputerach 386 na płytach głównych montowano 64 KB tej pamięci. Początkowo stosowany był asynchroniczny SRAM, którego główną zaletą była duża szybkość (zazwyczaj 15 ns). Dosyć często występowała konieczność wstawienia cyklu oczekiwania z powodu braku synchronizacji pomiędzy buforem a procesorem. Dlatego też pojawił się synchroniczny SRAM, którego parametry pracy poprawiły się właśnie dzięki eliminacji wait states. O ile pierwsze pamięci asynchroniczne mogły w najlepszym razie osiągnąć cykl 3-2-2-2 przy magistrali 66 MHz, to w przypadku synchronicznego bufora możliwe było stosowanie cyklu pracy 2-1-1-1. Obecnie jedynym rodzajem cache'u stosowanego na płytach głównych jest tzw. Piplined Burst SRAM.
PB-cache pracuje synchronicznie oraz dodatkowo zawiera specjalne rejestry wejścia/wyjścia umożliwiające pipelining. Ponieważ przeładowanie rejestru zajmuje trochę czasu, konieczna jest praca w cyklu 3-1-1-1. Dlaczego więc stosuje się cache PB zamiast synchronicznego? Otóż synchroniczny SRAM doskonale pracuje do częstotliwości 66 MHz, jednak powyżej tej granicy występuje wyraźny spadek wydajności (3-2-2-2). Natomiast Piplined Burst cache, mimo że wymaga jednego cyklu oczekiwania więcej, może bezproblemowo pracować z magistralą nawet 100 MHz w sekwencji 3-1-1-1.
PRZETWARZANIE POTOKOWE:
Przetwarzanie potokowe jest jednym ze sposobów równoległego przetwarzania danych informatycznych.
Sposób działania: cykl przetwarzania dzieli się na odrębne bloki przetwarzania, z których każdy oprócz pierwszego i ostatniego jest połączony z następnym. Dane po przejściu przez jeden blok trafiają do następnego, aż osiągną ostatni blok.
Dzięki temu, że przetwarzanie odbywa się w rozdzielnych blokach system może przetwarzać jednocześnie tyle danych ile zdefiniowano bloków.
Przykład przetwarzania potokowego
UWAGA: SUPER EXTRA LINK NA TEMAT PRZETWARANIA POTOKOWEGO, HAZARDÓW, FORWARDINGU ITP. PO POLSKU.: http://neo.dmcs.p.lodz.pl/archkomp/pipelining/pipelining.pdf
DLA LENIWYCH:
Przetwarzanie sekwencyjne - wykonywanie instrukcji programów kolejno jedna za drugą.
Przetwarzanie współbieżne - wykonywanie instrukcji programów
równocześnie na tym samym procesorze (z podziałem czasu procesora).
Przetwarzanie równoległe - wykonywanie instrukcji programów
równocześnie na różnych procesorach.
ISA:
Model programowy procesora (ang. ISA - Instruction Set Architecture), czasem także nieściśle architektura procesora — ogólne określenie dotyczące organizacji, funkcjonalności i zasad działania procesora, widoczne z punktu widzenia programisty jako dostępne mechanizmy programowania. Na model programowy procesora składają się m.in.:
lista instrukcji procesora
typy danych
dostępne tryby adresowania
zestaw rejestrów dostępnych dla programisty
zasady obsługi wyjątków i przerwań
Procesory posiadające ten sam model programowy są ze sobą kompatybilne, co oznacza, że mogą wykonywać te same programy w taki sam sposób (funkcjonalny). W początkowej historii procesorów model programowy procesora zależał od fizycznej implementacji procesora i niejednokrotnie całkowicie z niej wynikał. Obecnie tendencja jest odwrotna i stosuje się bardzo różne implementacje fizyczne (mikroarchitektury) pochodzące od różnych producentów, natomiast realizujące tą samą ISA.
CYKL ROZKAZOWY PROCESORA:
FAJNA PREZENTACJA: