Pamięć komputera - Computer memory

Nowoczesny moduł DDR4 SDRAM , zwykle spotykany w komputerach stacjonarnych.

W informatyce , pamięć to urządzenie lub system, który jest używany do przechowywania informacji do natychmiastowego użycia w komputerze lub pokrewnego sprzętu komputerowego i cyfrowych elektronicznych urządzeń. Termin pamięć jest często synonimem terminu „ pamięć podstawowa” lub „ pamięć główna” . Archaiczny synonimem pamięci jest sklep .

Pamięć komputera działa z dużą szybkością w porównaniu z pamięcią masową, która jest wolniejsza, ale oferuje większą pojemność. W razie potrzeby zawartość pamięci komputera można przenieść do magazynu; częstym sposobem na to jest technika zarządzania pamięcią zwana pamięcią wirtualną .

Nowoczesna pamięć jest zaimplementowana jako pamięć półprzewodnikowa , w której dane są przechowywane w komórkach pamięci zbudowanych z tranzystorów MOS i innych komponentów układu scalonego . Istnieją dwa główne rodzaje pamięci półprzewodnikowych: ulotna i nieulotna . Przykładami pamięci nieulotnejpamięć flash i ROM , PROM , EPROM i EEPROM . Przykładami pamięci ulotnejdynamiczna pamięć o dostępie swobodnym (DRAM) używana do podstawowej pamięci masowej oraz statyczna pamięć o dostępie swobodnym (SRAM) używana do pamięci podręcznej procesora .

Większość pamięci półprzewodnikowych jest zorganizowana w komórki pamięci, z których każda przechowuje jeden bit (0 lub 1). Organizacja pamięci flash obejmuje zarówno jeden bit na komórkę pamięci, jak i komórkę wielopoziomową zdolną do przechowywania wielu bitów na komórkę. Komórki pamięci są pogrupowane w słowa o stałej długości , na przykład 1, 2, 4, 8, 16, 32, 64 lub 128 bitów. Do każdego słowa można uzyskać dostęp poprzez adres binarny składający się z N bitów, co umożliwia przechowywanie 2 N słów w pamięci.

Historia

Szczegół z tyłu sekcji ENIAC , przedstawiający lampy elektronowe .
8 PL microSD karty na górnej 8 bajtów z pamięci magnetycznego rdzenia (1 rdzenia jest 1 bit ).     

We wczesnych latach czterdziestych technologia pamięci często pozwalała na pojemność kilku bajtów. Pierwszy elektroniczny programowalny komputer cyfrowy , ENIAC , wykorzystujący tysiące lamp próżniowych , mógł wykonywać proste obliczenia obejmujące 20 liczb po dziesięć cyfr dziesiętnych przechowywanych w lampach próżniowych.

Następnym znaczącym postępem w dziedzinie pamięci komputerowej była akustyczna pamięć linii opóźniającej , opracowana przez J. Prespera Eckerta na początku lat czterdziestych. Dzięki konstrukcji szklanej rurki wypełnionej rtęcią i podłączonej na każdym końcu kryształem kwarcu, linie opóźniające mogą przechowywać bity informacji w postaci fal dźwiękowych rozchodzących się w rtęci, przy czym kryształy kwarcu działają jako przetworniki do odczytu i zapisu bitów . Pamięć linii opóźnień była ograniczona do pojemności kilku tysięcy bitów.

Dwie alternatywy dla linii opóźniającej, rura Williamsa i rura Selectron , powstały w 1946 roku, obie wykorzystywały wiązki elektronów w szklanych rurkach jako środki przechowywania. Używając lamp katodowych , Fred Williams wynalazł lampę Williamsa, która była pierwszą pamięcią komputerową o swobodnym dostępie . Lampa Williamsa była w stanie przechowywać więcej informacji niż lampa Selectron (Selectron był ograniczony do 256 bitów, podczas gdy lampa Williamsa mogła przechowywać tysiące) i była tańsza. Rura Williamsa była jednak frustrująco wrażliwa na zakłócenia środowiskowe.

Pod koniec lat czterdziestych rozpoczęto starania o znalezienie pamięci nieulotnej . Pamięć z rdzeniem magnetycznym pozwalała na przywołanie pamięci po utracie zasilania. Została opracowana przez Fredericka W. Viehe i An Wanga pod koniec lat 40. XX wieku i ulepszona przez Jaya Forrestera i Jana A. Rajchmana na początku lat 50., zanim została skomercjalizowana z komputerem Whirlwind w 1953 roku. pamięci aż do rozwoju pamięci półprzewodnikowej MOS w latach 60-tych.

Pierwsza pamięć półprzewodnikowa została zaimplementowana jako układ typu flip-flop na początku lat sześćdziesiątych przy użyciu tranzystorów bipolarnych . Pamięć półprzewodnikowa wykonana z urządzeń dyskretnych została po raz pierwszy dostarczona przez Texas Instruments do Sił Powietrznych Stanów Zjednoczonych w 1961 roku. W tym samym roku koncepcja pamięci półprzewodnikowej w układzie scalonym (IC) została zaproponowana przez inżyniera aplikacji Boba Normana z Fairchild Semiconductor . Pierwszym dwubiegunowym układem scalonym pamięci półprzewodnikowej był SP95 wprowadzony przez IBM w 1965 roku. Chociaż pamięć półprzewodnikowa oferowała lepszą wydajność w porównaniu z pamięcią z rdzeniem magnetycznym, pozostaje ona większa i droższa oraz nie wypiera pamięci z rdzeniem magnetycznym aż do późnych lat sześćdziesiątych.

Pamięć MOS

Wynalezienie przez Mohameda M. Atallę i Dawona Kahnga w Bell Labs w 1959 r. tranzystora MOSFET (metal-oxide-semiconductor field-effect tranzystor, czyli tranzystor MOS) umożliwiło praktyczne zastosowanie tranzystorów MOS ( metal-oxide-semiconductor ) jako elementy do przechowywania komórek pamięci. Pamięć MOS została opracowana przez Johna Schmidta w Fairchild Semiconductor w 1964 roku. Oprócz wyższej wydajności pamięć półprzewodnikowa MOS była tańsza i zużywała mniej energii niż pamięć z rdzeniem magnetycznym. W 1965 r. J. Wood i R. Ball z Royal Radar Establishment zaproponowali cyfrowe systemy pamięci masowej, które wykorzystują komórki pamięci CMOS (komplementarne MOS), oprócz urządzeń zasilających MOSFET do zasilania , przełączanego sprzężenia krzyżowego, przełączników i przechowywania linii opóźniających . Opracowanie technologii układów scalonych MOS z bramką krzemową (MOS IC) przez Federico Faggin w Fairchild w 1968 roku umożliwiło produkcję układów pamięci MOS . Pamięć NMOS została skomercjalizowana przez IBM na początku lat 70. XX wieku. Pamięć MOS wyprzedziła pamięć z rdzeniem magnetycznym jako dominującą technologię pamięci na początku lat 70. XX wieku.

Dwa główne typy ulotnej pamięci o dostępie swobodnym (RAM) to statyczna pamięć o dostępie swobodnym (SRAM) i dynamiczna pamięć o dostępie swobodnym (DRAM). Bipolar SRAM został wynaleziony przez Roberta Normana w Fairchild Semiconductor w 1963 roku, a następnie rozwinął MOS SRAM przez Johna Schmidta w Fairchild w 1964 roku. SRAM stał się alternatywą dla pamięci z rdzeniem magnetycznym, ale wymagał sześciu tranzystorów MOS na każdy bit danych. Komercyjne wykorzystanie SRAM rozpoczęło się w 1965 roku, kiedy IBM wprowadził swój układ SP95 SRAM dla System/360 Model 95 .

Toshiba wprowadziła dwubiegunowe komórki pamięci DRAM do swojego elektronicznego kalkulatora Toscal BC-1411 w 1965 roku. Chociaż oferowała lepszą wydajność w porównaniu z pamięcią z rdzeniem magnetycznym, bipolarna pamięć DRAM nie była w stanie konkurować z niższą ceną dominującej wówczas pamięci z rdzeniem magnetycznym. Technologia MOS to podstawa nowoczesnej pamięci DRAM. W 1966 dr Robert H. Dennard z IBM Thomas J. Watson Research Center pracował nad pamięcią MOS. Badając charakterystykę technologii MOS, odkrył, że jest ona zdolna do budowania kondensatorów i że przechowywanie ładunku lub brak ładunku na kondensatorze MOS może reprezentować 1 i 0 bitu, podczas gdy tranzystor MOS może sterować zapisem ładunku do kondensator. Doprowadziło to do opracowania przez niego jednotranzystorowej komórki pamięci DRAM. W 1967 Dennard złożył patent w IBM na jednotranzystorową komórkę pamięci DRAM, opartą na technologii MOS. Doprowadziło to do powstania pierwszego komercyjnego układu DRAM IC, Intel 1103 , w październiku 1970 roku. Synchroniczna dynamiczna pamięć o dostępie swobodnym (SDRAM) zadebiutowała później z układem Samsung KM48SL2000 w 1992 roku.

Termin pamięć jest również często używany w odniesieniu do pamięci nieulotnej , w szczególności pamięci flash . Wywodzi się z pamięci tylko do odczytu (ROM). Programowalna pamięć tylko do odczytu (PROM) została wynaleziona przez Wen Tsing Chow w 1956 roku podczas pracy dla Arma Division amerykańskiej firmy Bosch Arma Corporation. W 1967 Dawon Kahng i Simon Sze Bell Labs zaproponował, że pływające brama z MOS urządzenia półprzewodnikowe mogą być wykorzystane dla komórce przeprogramowania pamięci stałej (ROM), co doprowadziło do Dov Frohman z Intel wynalezienie EPROM (kasowalne PROM ) w 1971 roku. EEPROM (elektrycznie kasowalny PROM) został opracowany przez Yasuo Tarui, Yutaka Hayashi i Kiyoko Naga w Laboratorium Elektrotechnicznym w 1972 roku. Pamięć flash została wynaleziona przez Fujio Masuoka w Toshiba na początku lat 80-tych. Masuoka i współpracownicy zaprezentowali wynalazek pamięci flash NOR w 1984 roku, a następnie flash NAND w 1987 roku. Toshiba skomercjalizowała pamięć flash NAND w 1987 roku.

Rozwój technologii i ekonomia skali umożliwiły tak zwane komputery o bardzo dużej pamięci (VLM).

Pamięć ulotna

Różne moduły pamięci zawierające różne typy pamięci DRAM (od góry do dołu): DDR SDRAM, SDRAM, EDO DRAM i FPM DRAM

Pamięć ulotna to pamięć komputera, która wymaga zasilania do utrzymania przechowywanych informacji. Większość nowoczesnych półprzewodnikowych pamięci ulotnych to statyczna pamięć RAM ( SRAM ) lub dynamiczna pamięć RAM ( DRAM ). SRAM zachowuje swoją zawartość tak długo, jak zasilanie jest podłączone i jest prostsze w interfejsie, ale wykorzystuje sześć tranzystorów na bit. Dynamiczna pamięć RAM jest bardziej skomplikowana pod względem interfejsu i kontroli, wymaga regularnych cykli odświeżania, aby zapobiec utracie zawartości, ale wykorzystuje tylko jeden tranzystor i jeden kondensator na bit, co pozwala na osiągnięcie znacznie wyższych gęstości i znacznie niższych kosztów na bit.

SRAM nie jest opłacalny w przypadku pamięci systemowej komputera stacjonarnego, gdzie dominuje DRAM, ale jest używany do ich pamięci podręcznej. SRAM jest powszechny w małych systemach wbudowanych, które mogą potrzebować tylko dziesiątek kilobajtów lub mniej. Technologie pamięci ulotnej, które próbowały konkurować lub zastąpić SRAM i DRAM, obejmują Z-RAM i A-RAM .

Pamięć nieulotna

Pamięć nieulotna to pamięć komputera, która może zachować przechowywane informacje nawet wtedy, gdy nie jest zasilana. Przykłady pamięci nieulotnej obejmują pamięć tylko do odczytu (patrz ROM ), pamięć flash , większość typów magnetycznych komputerowych urządzeń pamięci masowej (np. dyski twarde , dyskietki i taśmy magnetyczne ), dyski optyczne i wczesne komputerowe metody przechowywania, takie jak papier taśmy i karty dziurkowane .

Nadchodzące technologie pamięci nieulotnej to między innymi FERAM, CBRAM , PRAM , STT-RAM , SONOS , RRAM , pamięć toru wyścigowego , NRAM , 3D XPoint i pamięć stonoga .

Pamięć półulotna

Trzecią kategorią pamięci jest „półulotna”. Termin ten jest używany do opisania pamięci, która ma ograniczony nieulotny czas trwania po odłączeniu zasilania, ale następnie dane są ostatecznie tracone. Typowym celem korzystania z pamięci półulotnej jest zapewnienie wysokiej wydajności/trwałości/itd. związane z pamięciami ulotnymi, zapewniając jednocześnie pewne korzyści z prawdziwej pamięci nieulotnej.

Na przykład niektóre typy pamięci nieulotnej mogą się zużywać, gdy „zużyta” komórka ma zwiększoną niestabilność, ale poza tym nadal działa. Lokalizacje danych, które są często zapisywane, można w ten sposób skierować do wykorzystania zużytych obwodów. Dopóki lokalizacja zostanie zaktualizowana w określonym czasie przechowywania, dane pozostają aktualne. Jeśli czas przechowywania „wygaśnie” bez aktualizacji, wartość jest kopiowana do mniej zużytego obwodu z dłuższym przechowywaniem. Pisanie najpierw na zużytym obszarze pozwala na dużą szybkość zapisu przy jednoczesnym uniknięciu zużycia niezużytych obwodów.

Jako drugi przykład, pamięć STT-RAM może być nieulotna poprzez budowanie dużych komórek, ale koszt na bit i moc zapisu rosną, podczas gdy prędkość zapisu spada. Używanie małych komórek poprawia koszty, moc i szybkość, ale prowadzi do częściowo niestabilnych zachowań. W niektórych aplikacjach zwiększoną niestabilnością można zarządzać, aby zapewnić wiele korzyści pamięci nieulotnej, na przykład poprzez odłączenie zasilania, ale wymuszenie wybudzenia przed utratą danych; lub buforując dane tylko do odczytu i odrzucając dane z pamięci podręcznej, jeśli czas wyłączenia przekracza próg nieulotności.

Termin semi-volatile jest również używany do opisania zachowania semi-volatile skonstruowanego z innych typów pamięci. Na przykład, pamięć ulotna i nieulotna mogą być połączone, gdzie sygnał zewnętrzny kopiuje dane z pamięci ulotnej do pamięci nieulotnej, ale jeśli zasilanie zostanie odłączone bez kopiowania, dane zostaną utracone. Lub pamięci ulotnej podtrzymywanej bateryjnie, a w przypadku utraty zasilania zewnętrznego istnieje pewien okres, w którym bateria może nadal zasilać pamięć ulotną, ale jeśli zasilanie jest wyłączone przez dłuższy czas, bateria wyczerpuje się i dane są tracone.

Kierownictwo

Właściwe zarządzanie pamięcią jest niezbędne do prawidłowego działania systemu komputerowego. Nowoczesne systemy operacyjne mają złożone systemy do prawidłowego zarządzania pamięcią. Niezastosowanie się do tego może prowadzić do błędów, spowolnienia działania, aw najgorszym przypadku do przejęcia przez wirusy i złośliwe oprogramowanie .

Robaki

Niewłaściwe zarządzanie pamięcią jest częstą przyczyną błędów, w tym następujących typów:

  • W przypadku przepełnienia arytmetycznego obliczenie daje liczbę większą niż pozwala na to przydzielona pamięć. Na przykład 8-bitowa liczba całkowita ze znakiem dopuszcza liczby od -128 do +127. Jeśli jego wartość wynosi 127 i zostanie poinstruowany, aby dodać jeden, komputer nie może przechowywać liczby 128 w tym miejscu. Taki przypadek spowoduje niepożądane działanie, takie jak zmiana wartości liczby na -128 zamiast +128.
  • Wyciek pamięci pojawia się, gdy program zażąda pamięć z systemu operacyjnego i nigdy nie powraca pamięć, kiedy to zrobić z nim. Program z tym błędem będzie stopniowo wymagał coraz większej ilości pamięci, dopóki program nie ulegnie awarii, gdy się wyczerpie.
  • A segmentacji usterek Wyniki gdy program próbuje pamięci dostępowego, że nie ma uprawnień dostępu. Generalnie program, który to robi, zostanie zakończony przez system operacyjny.
  • A przepełnienie bufora oznacza, że program zapisuje dane na koniec swojego przydzielonego miejsca, a następnie kontynuuje zapis danych do pamięci, które zostały przydzielone do innych celów. Może to spowodować nieprawidłowe zachowanie programu, w tym błędy dostępu do pamięci, nieprawidłowe wyniki, awarię lub naruszenie bezpieczeństwa systemu. Stanowią zatem podstawę wielu luk w oprogramowaniu i mogą zostać złośliwie wykorzystane.

Wczesne systemy komputerowe

We wczesnych systemach komputerowych programy zazwyczaj określały lokalizację do zapisania pamięci i jakie dane tam umieścić. Ta lokalizacja była fizyczną lokalizacją na rzeczywistym sprzęcie pamięci. Powolne przetwarzanie takich komputerów nie pozwalało na stosowanie obecnie skomplikowanych systemów zarządzania pamięcią. Ponadto, ponieważ większość takich systemów była jednozadaniowa, zaawansowane systemy nie były tak bardzo wymagane.

Takie podejście ma swoje pułapki. Jeśli określona lokalizacja jest nieprawidłowa, spowoduje to, że komputer zapisze dane w innej części programu. Skutki takiego błędu są nieprzewidywalne. W niektórych przypadkach nieprawidłowe dane mogą nadpisać pamięć używaną przez system operacyjny. Crackerzy komputerowi mogą to wykorzystać do tworzenia wirusów i złośliwego oprogramowania .

Pamięć wirtualna

Pamięć wirtualna to system, w którym cała pamięć fizyczna jest kontrolowana przez system operacyjny. Gdy program potrzebuje pamięci, żąda jej od systemu operacyjnego. Następnie system operacyjny decyduje, w jakiej fizycznej lokalizacji umieścić kod i dane programu.

Daje to kilka korzyści. Programiści komputerowi nie muszą już martwić się o to, gdzie fizycznie przechowywane są ich dane lub czy komputer użytkownika będzie miał wystarczającą ilość pamięci. Umożliwia również korzystanie z wielu rodzajów pamięci. Na przykład niektóre dane mogą być przechowywane w fizycznych układach pamięci RAM, podczas gdy inne dane są przechowywane na dysku twardym (np. w pliku wymiany ), funkcjonując jako rozszerzenie hierarchii pamięci podręcznej . To drastycznie zwiększa ilość pamięci dostępnej dla programów. System operacyjny umieści aktywnie używane dane w fizycznej pamięci RAM, która jest znacznie szybsza niż dyski twarde. Gdy ilość pamięci RAM jest niewystarczająca do uruchomienia wszystkich bieżących programów, może to spowodować sytuację, w której komputer spędza więcej czasu na przenoszeniu danych z pamięci RAM na dysk iz powrotem niż na wykonywanie zadań; jest to znane jako thrashing .

Pamięć chroniona

Pamięć chroniona to system, w którym każdy program otrzymuje obszar pamięci do wykorzystania i nie może wyjść poza ten zakres. Korzystanie z chronionej pamięci znacznie zwiększa zarówno niezawodność, jak i bezpieczeństwo systemu komputerowego.

Bez chronionej pamięci możliwe jest, że błąd w jednym programie zmieni pamięć używaną przez inny program. Spowoduje to, że inny program wyczerpie uszkodzoną pamięć z nieprzewidywalnymi skutkami. Jeśli pamięć systemu operacyjnego jest uszkodzona, cały system komputerowy może ulec awarii i wymagać ponownego uruchomienia . Czasami programy celowo zmieniają pamięć używaną przez inne programy. Dokonują tego wirusy i złośliwe oprogramowanie, które przejmują komputery. Może być również łagodnie używany przez pożądane programy, które mają na celu modyfikowanie innych programów; w dzisiejszych czasach jest to ogólnie uważane za złą praktykę programistyczną dla aplikacji, ale może być używane przez narzędzia programistyczne, takie jak debuggery, na przykład do wstawiania punktów przerwania lub zaczepów.

Pamięć chroniona przypisuje programom własne obszary pamięci. Jeśli system operacyjny wykryje, że program próbował zmienić pamięć, która do niego nie należy, program zostanie zakończony (lub w inny sposób ograniczony lub przekierowany). W ten sposób tylko szkodliwy program ulega awarii, a inne programy nie są dotknięte niewłaściwym zachowaniem (przypadkowym lub celowym).

Chronione systemy pamięci prawie zawsze obejmują również pamięć wirtualną.

Zobacz też

Uwagi

Bibliografia

Dalsza lektura

  • Miller, Stephen W. (1977), Technologia pamięci i przechowywania , Montvale.: AFIPS Press
  • Technologia pamięci i przechowywania , Alexandria, Virginia.: Time Life Books, 1988