niedziela, 22 maja 2011

Pamięci RAM - pamięci DRAM

Pamięci RAM - pamięci DRAM

Autorem artykułu jest RatujPC



Informacje przechowywane są w pamięci DRAM, pod postacią ładunku zgromadzonego przez kondensator Cs. Na skutek rozładowania kondensatora, ustala na nim napięcie odpowiadające logicznemu zeru, natomiast poprzez proces ładowania, ustalone napięcie odpowiada jedynce logicznej.

Charakterystyka pamięci DRAM

Organizując adres jak na rysunku, komórka posiada wejście adresowe W dla wierszy, oraz pojedynczą linię danych wspólną dla komórek o adresie określanym przez kolumnę B. Wspólny dla kolumny adresowej B jest wzmacniacz odczytu. Po wybraniu komórki, na wejściach adresowych B oraz W ustala się stan wysoki, a pojemność Cs jest dołączana do linii danych. Podczas zapisu doprowadzane jest do niej napięcie ze wzmacniacza zapisu, które odpowiada logicznej jedynce lub zeru. Po fazie odczytu ładunek znajdujący się w pojemności Cs stopniowo ładuje dużo większą pojemność Cb, na którą składa się dodatkowo pojemność drenu, dlatego napięcie odczytu powinno być dużo wyższe od napięcia na kondensatorze Cs. Odczyt powinien być wzmacniany dobrym układem uzupełnionym o elementy odświeżające pamięć, które będą odświeżały poszczególne kolumny niezależnie od wykonywanego cyklu. Innym rozwiązaniem jest zastosowanie wielotranzystorowych komórek pamięciowych z dużo prostszym układem odświeżania oraz prostym wzmacniaczem odczytu/zapisu.

Typowa struktura pamięci dynamicznej, posiadającej pojemność 64 kilobitów, przedstawia się jako matryca zbudowana z 256 wierszy oraz 256 kolumn. Aby zmniejszyć liczbę wyprowadzeń pamięci dynamicznej oraz ułatwić jej odświeżanie, należy multipleksować wejścia adresowe. Adresowanie pamięci polega na podaniu ośmiu ważniejszych bitów adresu, co stanowi adres wiersza, następnie podawane są wartości ośmiu młodszych bitów, stanowiących adres kolumny. Adres wiersza wpisywany jest do rejestru wiersza przy opadającym zboczu sygnału ~RAS. Następnie dekoder adresu, którym jest zwykły multiplekser wybiera odpowiadający żądanemu adresowi wiersz. Podobnie adres kolumny wpisywany jest z wejść do rejestru kolumny po stwierdzeniu opadającego zbocza sygnału CAS. Demultiplekser wybiera odpowiednią kolumnę o żądanym adresie. Wybranie wiersza oraz kolumny w matrycy pamięciowej odpowiada wskazaniu jednej konkretnej komórki pamięci, przy zaoszczędzeniu połowy wyprowadzeń. Jeżeli podczas operacji wskazania adresu, na pinie WE był stan logicznego 0, to zawartość komórki przesyłana jest na wyjście układu, ma wtedy miejsce operacja odczytu. Gdy WE = 1 następuje zapis wejściowej informacji do komórki o podanym adresie.

---

Suknie Ślubne Katowice


Artykuł pochodzi z serwisu www.Artelis.pl

Pamięci RAM - budowa i informacje ogólne cz.2

Pamięci RAM - budowa i informacje ogólne cz.2

Autorem artykułu jest RatujPC



W dzisiejszych czasach pamięć RAM realizowana jest sprzętowo, w postaci układów scalonych, które występują w różnych technologiach, także jako fragmenty znacznie bardziej złożonych układów scalonych, na przykład pamięć podręczna procesora.

Pamięci RAM z jakimi mamy najczęściej do czynienia znajdują swe największe zastosowanie w komputerach osobistych.

Pamięć RAM jest wykorzystywana do operacji ciągłego zapisu danych w postaci bajtu lub słowa, do tymczasowego zapamiętywania oraz odczytu informacji. Znając podstawy teorii automatów wiadomo, że każda czynność zapamiętywania pociąga za sobą stosowanie odpowiednich układów sekwencyjnych, w których informacje tego typu mogą być zapisywane, bądź odczytywane zgodnie z określoną kolejnością. Dostęp do danej komórki pamięci zależy od miejsca w którym się ona znajduje oraz czasu, który mija przed rozpoczęciem operacji zapisu lub odczytu.

Podział pamięci RAM

Rozróżniamy dwa podstawowe rodzaje pamięci RAM:

Pamięci statyczne - SRAM. Elementem pamiętającym w tego typu pamięci jest bistabilny przerzutnik asynchroniczny typu RS. Komórki wykonywane były dawniej w technologii bipolarnej, obecnie stosuje się specjalne układy MOS. Informacja w tych pamięciach jest utrzymywana dopóty, dopóki nie zostanie zastąpiona inną lub napięcie zasilające nie zostanie odłączone.Pamięci dynamiczne - DRAM. Elementem pamiętającym w tego typu pamięciach są pojemności wejściowe tranzystorów typu MOS, które gromadzą ładunek, lub go odprowadzają. Istnieje konieczność odświeżania tego typu pamięci w celu uzupełniania ładunku, który dosyć szybko zanika. Do poprawnej pracy tej pamięci nie wystarczy więc tylko podłączenie go do zasilania, w przypadku braku częstych cykli zapisu lub odczytu, zawartość komórki zostałaby stracona.

Pamięci DRAM możemy dodatkowo podzielić na kilka podtypów, w zależności od implementacji na:

EDO DRAM - Extended Data Out DRAMFPM DRAM - Fast Page Mode DRAMSDRAM - Synchroneus DRAMDDRGDDR

W pamięciach RAM poszczególne komórki są ułożone w wybierane liniami adresu wejściowego słowa. Dla łatwiejszego wyobrażenia sobie struktury pamięci, przedstawmy ją jako dwuwymiarową matrycę, która składa się z n słów zawierających m bitów, dodatkowo podzieloną na obszary robocze zwane strefami.

Dekodery wejścia oraz wyjścia kooperują z równoległymi rejestrami pamiętającymi przychodzące dane, ponieważ operacja odczytu i zapisu do pamięci trwa zwykle przez sporą ilość cykli zegarowych. Zawartości linii adresowej i danych mogą się w tym momencie zmienić, dzięki użyciu rejestrów o odpowiednich długościach, żadna z informacji nie jest tracona. Serwis komputerowy ma odpowiednie narzędzia ktore wykryją różnice i problemy w działaniu pamięci.

Zależnie od stanu logicznego na wejściu R/W komórki pamięciowe przyjmują informację z rejestru danych, następuje wtedy cykl zapisu pamięci, albo wyprowadzają na rejestr danych zawartość komórki pamięci, w cyklu odczytu. Rejestr przekazuje dalej informację lub ją odbiera z szyny danych, stanowi on zatem bufor dwukierunkowy.

---

Naprawa Komputera


Artykuł pochodzi z serwisu www.Artelis.pl

Pamięci RAM - budowa i informacje ogólne cz.1

Pamięci RAM - budowa i informacje ogólne cz.1

Autorem artykułu jest RatujPC



Pamięci są układami logicznymi wykorzystywanymi do przechowywania, wydawania i przyjmowania zakodowanych danych informacyjnych. Podstawowym typem pamięci, powszechnie dzisiaj wykorzystywanym jest pamięć półprzewodnikowa.

Przekazywana informacja jest zapisywana w postaci binarnej, jest to więc ciąg zer i jedynek. Każdy z podstawowych elementów danej nazywany jest bitem, gdy połączymy ze sobą 8 bitów dostaniemy jeden bajt, natomiast 16 bitowy element nazywany jest słowem. Podstawowymi parametrami opisującymi każdy typ pamięci są:

Szybkość Pojemność Pobór mocy Koszt

Pojemność każdej pamięci, to ilość informacji którą dana pamięć jest w stanie przechować. Mierzy się ją zazwyczaj w bitach, bajtach i słowach. Wyrażana jest w kilobitach - kb, megabitach - Mb, gigabitach - GB, oraz analogicznie w kilobajtach - kB, megabajtach MB i w gigabajtach GB. Obecnie ilość pamięci mierzy się już tylko korzystając z miar megabajtów oraz gigabajtów. Pojemność pamięci jest zatem określana liczbą słów i długością słowa. Liczbę słów podaje się za pomocą odpowiednich przedrostków, którym odpowiadają określone mnożniki.

Zależności pomiędzy jednostkami pojemności:

1 KB pojemności odpowiada liczbie 1024 bajtów1 MB pojemności odpowiada liczbie 1024 * 1024 bajtów1 GB pojemności odpowiada liczbie 1024 * 1024 * 1024 bajtów

Szybkość jest parametrem określającym jak często procesor, lub inne urządzenie wykorzystujące pamięć mogą z niej korzystać. Szybkość pamięci jest określana kilkoma precyzyjnymi parametrami:

Czasem dostępu - access time. Jest to czas upływający od momentu w którym wysyłane jest żądanie dostępu do pamięci do czasu w którym informacja zwrotna ukaże się na jej wyjściu. Czas dostępu szybkich pamięci operacyjnych waha się w granicach od 20 do 200 ns.Czasem cyklu - cycle time. Jest to czas najkrótszy, który upływa między dwoma kolejnymi żądaniami dostępu do pamięci. Czas ten jest zawsze dłuższy od czasu dostępu, co wynika z fizycznej budowy pamięci, chodzi tu głównie o opóźnienia wnoszone przez wszystkie elementy elektroniczne.Szybkością transmisji - transfer speed. Szybkość transmisji mierzymy liczbą bitów, bądź bajtów, którą jesteśmy w stanie przesłać pomiędzy urządzeniem, a pamięcią. Ten parametr jest bardzo ważny w pamięciach, adresowanych ilością bitów większą od słowa, na przykład pamięci na dyskach magnetycznych. Ze względu na konieczność odczytu i zapisu bloku słów, mniej istotny staje się czas dostępu, natomiast ważniejszy jest czas w którym porcja danych może zostać przesłana. Szybkość transmisji mierzymy w bajtach lub bitach na sekundę.

Każda nowo wprowadzana technologia pozwala zmniejszyć koszt produkcji pamięci oraz ulepszyć zarazem jej parametry. Dlatego nowe pamięci dosyć szybko się starzeją, naturalnie pod względem technologicznym. Bardzo często czas użytkowania danego typu pamięci na przykład w komputerach klasy PC wynosi zaledwie kilka lat, później należy zaopatrzyć się w nowsze rozwiązania. Los taki spotkał popularne w latach sześćdziesiątych ubiegłego wieku ferrytowe pamięci rdzeniowe, które obecnie można spotkać już chyba tylko w muzeum. Na dzień dzisiejszy najniższym kosztem, a także dobrymi parametrami charakteryzują się pamięci półprzewodnikowe. Istnieje ich ogromne zróżnicowanie ze względu na pojemność, szybkość działania oraz oczywiście cenę. Tanie pamięci półprzewodnikowe oparte na układach scalonych cechują się niewielką szybkością działania. Szybkie pamięci mają zazwyczaj mniejsze pojemności przy dosyć dużej cenie. Z tych powodów szuka się ciągle nowych rozwiązań architektury komputerów, które pozwoliłyby na optymalną ich współpracę z posiadanymi na pokładzie pamięciami. Pewnym rozwiązaniem pamięci operacyjnych jest stosowanie dwóch rodzajów pamięci półprzewodnikowych, pamięci bardzo szybkich o małych pojemnościach, oraz pamięci wolniejszych o dużych pojemnościach, które nie są zbyt często czytane przez procesor. Dzięki temu będziemy posiadali pamięć operacyjną o dużej pojemności, a także o szybkim działaniu w przypadku procesów krytycznych do poprawnego działania systemu operacyjnego. Bardzo szybka pamięć o małej pojemności, która współpracuje z pamięcią operacyjną jest nazywana pamięcią typu Cache.

Również pobór mocy stanowi bardzo ważny parametr, który staje się problemem przy budowaniu urządzeń zasilanych bateryjnie, jak komputery kieszonkowe, laptopy. Również urządzenia wyposażone w pamięci operacyjne o bardzo dużych pojemnościach. Istnieje wtedy problem z połączeniem wielkiej liczby układów scalonych oraz z odpowiednim odprowadzeniem wydzielanego ciepła.

Pamięć zbudowana jest z rejestrów komórek pamięci, w których zapamiętane są słowa jednobitowe, czterobitowe lub bajtowe. W każdej komórce odpowiada jej adres, czyli numer zapisany w postaci dwójkowej, który oznacza położenie tej informacji w pamięci. Chcąc dokonać operacji odczytu lub zapisu na pamięci należy podać na wejścia adresowe tej pamięci odpowiedni numer komórki którą chcemy modyfikować lub odczytać, a na wejścia sterujące odpowiednią daną, w przypadku zapisu. Chcąc zaadresować 2n komórek pamięci należy użyć n wejść adresowych. Przykładowo do zaadresowania pamięci o pojemności 64KB, czyli 65536 bajtów, należy użyć 16 wejść adresowych. Jak wiadomo informacje są zapisywane w pamięci w postaci binarnej, dlatego najwygodniej jest używać liczb zapisanych w postaci szesnastkowej, zwanej też heksadecymalną. Każdy serwis komputerowy powinien posiadać pamięci w każdej specyfikacji.

Pamięci posiadają następujące piny wejścia/wyjścia:

Wejścia adresowe oznaczane A0….An, gdzie n - liczba wyprowadzeń potrzebna do zaadresowania 2n komórek pamięci.Wejścia/wyjścia informacji - danych D0.…Dm, gdzie m jest długością słowa zapisywanego pod jedną komórką pamięci.Wejścia sterujące, które służą do wyboru funkcji jaką pamięć ma wykonać. Są to wejścia WE - Write Enable, CS - Chip Selekt, CE - Clock Enable oraz OE - Output Enable.Wejścia strobu adresu: ALE - Adress Latch Enable, RAS - Row Adress Select, CAS - Column Adress Select.

Więcej informacji w kolejnej odsłonie.

---

Pomoc Drogowa Katowice


Artykuł pochodzi z serwisu www.Artelis.pl

Pamięci RAM- pamięć wirtualna

Pamięci RAM- pamięć wirtualna

Autorem artykułu jest RatujPC



to mechanizm komputerowy zapewniający procesowi wrażenie pracy w jednym dużym, ciągłym obszarze pamięci operacyjnej podczas gdy fizycznie może być ona pofragmentowana, nieciągła i częściowo przechowywana na urządzeniach pamięci masowej.

Systemy korzystające z tej techniki ułatwiają tworzenie rozbudowanych aplikacji oraz poprawiają wykorzystanie fizycznej pamięci RAM. Często popełnianym błędem jest utożsamianie pamięci wirtualnej z wykorzystaniem pamięci masowej do rozszerzenia dostępnej pamięci operacyjnej. Rozszerzenie pamięci na dyski twarde w rzeczywistości jest tylko naturalną konsekwencją zastosowania techniki pamięci wirtualnej, lecz może być osiągnięte także na inne sposoby, np. nakładki lub całkowite przenoszenie pamięci procesów na dysk, gdy znajdują się w stanie uśpienia. Pamięć wirtualna działa na zasadzie przedefiniowania adresów pamięci tak, aby "oszukać" procesy i dać im wrażenie pracy w ciągłej przestrzeni adresowej.

Obecnie wszystkie systemy operacyjne ogólnego przeznaczenia wykorzystują techniki pamięci wirtualnej dla procesów uruchamianych w ich obrębie. Wcześniejsze systemy takie, jak DOS, wydania Microsoft Windows[1] z lat 80. oraz oprogramowanie komputerów mainframe z lat 60. nie pozwalały pracować w środowisku z pamięcią wirtualną. Godnymi odnotowania wyjątkami były komputery Atlas, B5000 oraz Apple Lisa.

Pamięć wirtualna wymaga wykonania pewnych dodatkowych nakładów pracy przy próbie odczytu lub zapisu, dlatego systemy wbudowane lub szczególnego przeznaczenia, gdzie czas dostępu jest czynnikiem krytycznym i musi być przewidywalny, często z niej rezygnują za cenę zmniejszonego determinizmu.

Stronicowana pamięć wirtualna

Prawie wszystkie istniejące obecnie implementacje dzielą wirtualną przestrzeń adresową procesu na strony. Strona jest to obszar ciągłej pamięci o stałym rozmiarze, zazwyczaj 4 KB. Systemy, gdzie zapotrzebowanie na wielkość wirtualnej przestrzeni adresowej jest większe lub dysponujące większymi zasobami pamięci operacyjnej mogą używać stron o większym rozmiarze. Rzeczywista pamięć operacyjna podzielona jest na ramki, których rozmiar odpowiada wielkości stron. System operacyjny według uznania może przydzielać ramkom strony pamięci lub pozostawiać je puste.

---

Serwis Laptopów Katowice


Artykuł pochodzi z serwisu www.Artelis.pl

Budowa i organizacja pamięci podręcznej

Budowa i organizacja pamięci podręcznej

Autorem artykułu jest RatujPC



Pamięć cache jest zorganizowana w linijki (o rozmiarach 16 lub 32 bajty - 128 lub 256 bitów), w których są przechowywane informacje pobrane z RAM w postaci słów binarnych.

Jedna linijka jest najmniejszą porcją informacji - blokiem danych jaki układ cache wymienia z pamięcią operacyjną RAM. W różnych linijkach może być więc zapisana kopia zawartości odległych bloków z pamięci głównej.

Poniżej opisano budowę 32-bajtowej linijki pamięci podręcznej L1 w procesorze Pentium (rys. 3). W innych procesorach mogą być zastosowane trochę inne rozwiązania, jednak ogólna zasada organizacji cache w linijki pozostaje taka sama.

Procesor Pentium posiada oddzielną pamięć podręczną poziomu L1 dla kodu programu (8kB) i oddzielną dla danych (8kB). Każda z nich jest podzielona na 256 linijek (256 x 32 B = 8kB).

Aby zbiór takich linijek był dla procesora użyteczną strukturą, w której łatwo odszukać potrzebne dane, musi istnieć mechanizm zapisywania i kodowania dodatkowych informacji na temat każdej linijki. Przede wszystkim potrzebna jest informacja o tym, które fragmenty zawartości pamięci RAM są aktualnie skopiowane w poszczególnych linijkach. Jest to niezbędne, aby podczas żądania procesora odczytu z pamięci, kontroler cache mógł poprawnie określić czy dane są dostępne w linijkach, czy trzeba je sprowadzić z RAM. Wszystkie te informacje przechowuje się w katalogu cache (czasem określanym skrótem TAG-RAM). Jest on częścią pamięci podręcznej, która zawiera rekordy odpowiadające każdej linijce cache. Są w nich zakodowane informacje na temat danych aktualnie zapisanych w odpowiednich linijkach. Wartości poszczególnych pół tych rekordów mogą także wskazywać, że dana linijka jest wolna.

Podczas dostępu procesora do cache układy logiczne dzielą przekazywany przez niego adres na następujące części:

Znacznik (20 bitów) jest porównywany ze znacznikiem w katalogu cache. Na podstawie porównania znaczników określa się, czy potrzebne procesorowi dane są w linijce cache (określanie trafienia). Wiersz (7 bitów) określa, która pozycja (indeks) w katalogu 1 i katalogu 2 może odwzorowywać potrzebne dane.Słowo (3 bity) pozwala na określenie, które z ośmiu 32-bitowych słów przechowywanych w linijce zawiera dane potrzebne procesorowi.Bajt (2 bity) określa, który bajt w 32- bitowym słowie jest aktualnie potrzebny mikroprocesorowi.

W wypadku braku trafienia, tak zbudowany adres wskazuje blok w pamięci operacyjnej RAM, zawierający potrzebne dane. Zgodnie z zasadą działania cache, po odczytaniu zawartości bloku z RAM musi ona być zapisana do pamięci podręcznej. Na podstawie bitu LRU oraz części adresu (pola wiersz) jest wyznaczana linijka, do której można dokonać zapisu.

Skrót MESI używany do określania bitów w katalogu cache, został utworzony od pierwszych liter angielskich określeń czterech możliwych stanów linijki (Modified, Exclusive, Schared, Invalid). Na podstawie stanu bitów MESI można także określić, czy dane w poszczególnych linijkach są także zapisane w innych poziomach pamięci podręcznej. Stan bitów MESI zmienia się również podczas modyfikacji danych w pamięci. Dotychczas omawiane były jedynie zagadnienia związane ze skróceniem czas dostępu do danych i rozkazów podczas ich odczytu. Jednak procesor nie tylko odczytuje z pamięci RAM. W trakcie wykonywania programu musi też tam zapisywać wyniki swoich peracji, modyfikować pewne zmienne i dane. Niektóre z nich mogą być w tym czasie skopiowane także do pamięci podręcznej. Wiąże się z tym konieczność zadbania o aktualność obu kopii danych. Serwis komputerowy katowice poleca zwrócić uwagę jakie pamięci funkcnojują w naszym komputerze.

Do pamięci operacyjnej oprócz procesora mogą też mieć dostęp inne urządzenia. Mogą one zapisywać i odczytywać RAM bez udziału mikroprocesora. Jeśli dokonają zmiany słowa w RAM, którego kopia aktualnie jest przechowywana w cache, mogą spowodować, że procesor posiada w pamięci podręcznej nieaktualne dane. Również gdy procesor w trakcie programu dokona zmiany danych tylko w cache, inne urządzenia mogą odczytać bezpośrednio z RAM stare błędne wartości. Należy zaznaczyć, że taka niespójność może występować tylko dla pamięci podręcznej danych. W oddzielnej pamięci podręcznej kodu programu procesor nie zapisuje swoich wyników, gdyż przechowuje ona jedynie dla niego instrukcje - kolejne rozkazy. Są różne rozwiązania problemu spójności danych stosowane w różnych procesorach, jednakże generalnie można wyróżnić dwa sposoby:

Write Trougch (zapis jednoczesny)

W tym sposobie każdy zapis danych wykonywany jest jednocześnie zarówno do pamięci głównej jak i do cache. Każdy zapis wymaga więc dostępu procesora do pamięci RAM. Również każdy bezpośredni zapis do RAM wykonywany przez inne urządzenia musi być monitorowany przez procesor. W ten sposób może on w razie potrzeby uaktualnić zawartość cache. Jest to więc najbardziej naturalny sposób, jednak generuje znaczny przepływ danych między pamięciami co powoduje duże opóźnienia.

Wirte Back (zapis opóźniony)

W tym trybie przy zapisie procesor aktualizuje tylko pamięć podręczną. Jednocześnie dla zmodyfikowanych linijek układ cache ustawia odpowiednie statusy (na bitach MES). Zawartość pamięci głównej jest aktualizowana później na żądanie. Może ono być wyrażone przez instrukcję programową WBINVO (Write Back and Invalid Data Cache), lub specjalny sterujący sygnał sprzętowy.
Aktualizacja jest też wyzwalana w wyniku braku trafienia w fazie odczytu z pamięci głównej. Gdy trzeba dokonać wymiany linijki cache, zawartość linijki usuwanej mającej status zmodyfikowany (zakodowany na bitach MESI), musi być koniecznie zapisana do RAM.

Taka implementacja sposobu utrzymania spójności danych jest bardziej wydajna, minimalizuje ilość cyklów zapisu do pamięci głównej. Problemem jest jednak to, że bezpośredni dostęp zewnętrznych modułów wejścia-wyjścia do RAM także powoduje konieczność uaktualniania pamięci cache co może powodować pewne opóźnienia.

W trakcie wykonywania programu może też nastąpić konieczność zapisu danych w obszarach RAM, które nie są aktualnie skopiowane do pamięci podręcznej. Niektóre procesory w takim wypadku mogą po prostu dokonywać zapisu w RAM z pominięciem układu cache. W nowszych generacjach procesorów stosuje się mechanizm, w którym zapis danych pociąga za sobą skopiowanie odpowiedniego bloku RAM do linijki cache, gdzie jest on modyfikowany.

Dzięki temu ewentualny odczyt lub zapis tych samych danych w następnych rozkazach procesora może przebiegać już bez konieczności odwoływania się do RAM.

---

Pomoc Drogowa Katowice


Artykuł pochodzi z serwisu www.Artelis.pl

Pamięć podręczna CACHE- informacje

Pamięć podręczna CACHE- informacje

Autorem artykułu jest RatujPC



fektywność stosowania cache zależy w znacznej mierze od sposobu ułożenia kodu programów i danych pobieranych z pamięci przez mikroprocesory. Zwykle kod i dane nie są "porozrzucane" przypadkowo po całej dostępnej przestrzeni adresowej w pamięci RAM.

Większość odwołań do pamięci w trakcie wykonywania programu odbywa się przez pewien czas pracy mikroprocesora w wąskim obszarze. Zjawisko to jest określane mianem lokalności odniesień.

Lokalność odniesień można uzasadnić intuicyjnie w następujący sposób:

Z wyjątkiem rozkazów skoku i wywołania procedury, realizacja programów ma charakter sekwencyjny. Tak więc, w większości przypadków następny rozkaz przewidziany do pobrania z pamięci następuje bezpośrednio po ostatnio pobranym rozkazie. Rzadkością jest występowanie w programach długich, nieprzerwanych sekwencji wywołań procedury (procedura wywołuje procedurę itd.), a potem długiej sekwencji powrotów z procedur. Wymagałoby to ciągłego odwoływania się do oddalonych od siebie obszarów pamięci głównej, zawierających kody poszczególnych procedur. Większość pętli (konstrukcji bardzo często występujących w programach) składa się z małej liczby wielokrotnie powtarzanych rozkazów. Podczas iteracji następuje kolejne powtarzanie zwartej części programu. W wielu programach znaczna część obliczeń obejmuje przetwarzanie struktur danych, takich jak tablice lub szeregi rekordów ułożone kolejno w pamięci operacyjnej. Tak, więc procesor pobiera dane zapisane w sposób uporządkowany w małym jej fragmencie.

Oczywiście w długim czasie wykonywania programu procesor potrzebuje dane rozmieszczone w różnych odległych miejscach pamięci. Zwykle jednak, po wykonaniu skoku następne odniesienia odbywają się już lokalnie. Przepisanie bloku kolejnych komórek pamięci do szybkiego układu cache może, więc skutecznie przyspieszyć dostęp do pamięci.

W stosowanych obecnie rozwiązaniach można wyróżnić następujące poziomy pamięci podręcznej.

L1 - (level 1) zintegrowana z procesorem - umieszczona wewnątrz jego struktury. L2 - (level 2) umieszczona w jednej obudowie układu scalonego mikroprocesora lub na wspólnej płytce hybrydowej (Pentium II). L3 - (level 3) występuje w bezpośrednim sąsiedztwie procesora ITANIUM.

Pamięć podręczna najniższego poziomu (L1 – Level 1) jest stosunkowo mała, ale dane w niej zgromadzone są szybko dostępne dla procesora. W wypadku braku potrzebnych w danym momencie danych (braku trafienia), następuje odwołanie do pamięci kolejnych, wyższych poziomów. Po ich odczycie następuje przepisanie do niższych poziomów, tak by były szybciej dostępne w kolejnych odwołaniach. Jeśli dane nie są aktualnie buforowane w cache, następuje odczyt bloku pamięci głównej RAM, który je zawiera i wymiana zawartości cache. Pamięci niższych poziomów mogą mieć mniejszą pojemność i być bardziej efektywne. Procesor może szybko odczytywać mniejsze porcje danych w jednym cyklu zegara. Wyższe poziomy cache mają większe pojemności, dzięki czemu odwołania do RAM mogą odbywać się rzadziej. Można też w jednym odczycie przepisać większą porcję danych z RAM.

Ważnym zagadnieniem, jest podział pamięci podręcznej na oddzielny blok dla kodu programu i oddzielny blok dla danych. W taki sposób jest podzielona pamięć poziomu L1 procesora ITANIUM - Pamięć cache poziomów L2 i L3 jest już wspólna dla rozkazów i danych. W wielu (szczególnie starszych) procesorach wykorzystuje się również jednolitą pamięć podręczną poziomu L1. Takie rozwiązanie też posiada pewne zalety. Poniżej przedstawiono korzyści płynące z zastosowania pamięci oddzielnej i jednolitej.

Pamięć oddzielna kod i dane

Eliminowana jest rywalizacja o dostęp do pamięci między układem pobierania i dekodowania rozkazów w procesorze, a jednostką wykonującą w tym samym czasie inne, poprzednio pobrane rozkazy, które mogą wymagać odczytu pewnych zmiennych z cache. Ma to szczególne znaczenie w przypadku procesorów superskalarnych, w których kilka rozkazów jest wykonywanych równolegle. Dlatego we współczesnych procesorach poziom pamięci podręcznej L1 jest zawsze dzielony na blok danych i instrukcji.

Pamięć łączna dla kodu i danych

Poprawia się współczynnik trafień w tak zorganizowanej pamięci podręcznej, dzięki temu, że naturalnie równoważy się zapotrzebowanie na przechowywanie rozkazów i danych. Jeśli na przykład program wymaga ciągłego pobierania rozkazów i w małym stopniu korzysta z danych, dostępna pamięć podręczna zapełni się w większości rozkazami. Oddzielna cache dla danych w takiej sytuacji pozostałaby niewykorzystana. Drugą zaletą jest to, że upraszcza się układ procesora - łatwiej jest zrealizować w jego strukturze jeden bufor pamięci cache niż dwa.

---

Serwis Laptopów Katowice


Artykuł pochodzi z serwisu www.Artelis.pl

Pamięci RAM- przerwanie

Pamięci RAM- przerwanie

Autorem artykułu jest RatujPC



Przerwanie (ang. interrupt) lub żądanie przerwania (IRQ – Interrupt ReQuest) – sygnał powodujący zmianę przepływu sterowania, niezależnie od aktualnie wykonywanego programu.

Pojawienie się przerwania powoduje wstrzymanie aktualnie wykonywanego programu i wykonanie przez procesor kodu procedury obsługi przerwania (ang. interrupt handler).

Przerwania dzielą się na dwie grupy:

Sprzętowe: Zewnętrzne – sygnał przerwania pochodzi z zewnętrznego układu obsługującego przerwania sprzętowe; przerwania te służą do komunikacji z urządzeniami zewnętrznymi, np. z klawiaturą, napędami dysków itp.Wewnętrzne, nazywane wyjątkami (ang. exceptions) – zgłaszane przez procesor dla sygnalizowania sytuacji wyjątkowych (np. dzielenie przez zero); dzielą się na trzy grupy: faults (niepowodzenie) – sytuacje, w których aktualnie wykonywana instrukcja powoduje błąd; gdy procesor powraca do wykonywania przerwanego kodu wykonuje tę samą instrukcję która wywołała wyjątek;traps (pułapki) – sytuacja, która nie jest błędem, jej wystąpienie ma na celu wykonanie określonego kodu; wykorzystywane przede wszystkim w debugerach; gdy procesor powraca do wykonywania przerwanego kodu, wykonuje następną, po tej która wywołała wyjątek, instrukcję;aborts – błędy, których nie można naprawić. Programowe – z kodu programu wywoływana jest procedura obsługi przerwania; najczęściej wykorzystywane do komunikacji z systemem operacyjnym, który w procedurze obsługi przerwania (np. w DOS 21h, 2fh, Windows 2fh, Linux x86 przerwanie 80h) umieszcza kod wywołujący odpowiednie funkcje systemowe w zależności od zawartości rejestrów ustawionych przez program wywołujący, lub oprogramowaniem wbudowanym jak procedury BIOS lub firmware.

W następnym artykule trochę więcej w temacie.

---

Obsługa Informatyczna


Artykuł pochodzi z serwisu www.Artelis.pl