Dlaczego układ ROM BIOS-u nie jest wykonany w technologii CMOS?

9

Po przeczytaniu kursu sprzętowego na temat systemu BIOS / CMOS nadal nie jestem w stanie ustalić, dlaczego układ ROM systemu BIOS nie został zbudowany przy użyciu technologii CMOS i dlaczego jest podłączony do osobnego układu o nazwie „CMOS” do przechowywania informacje o konfiguracji.

To jest z notatki z wykładu :

Programy są przechowywane w układzie BIOS systemu, a dane zmienne są przechowywane w układzie CMOS

Grupa sprzętu CMOS : sprzęt, który jest wspólny, niezbędny, ale może ulec zmianie - pamięć RAM, dyski twarde, dyskietki, porty szeregowe i równoległe

Wiem, że BIOS jest przechowywany w pamięci flash, a technologia CMOS MOSFET rozprasza mniej energii w porównaniu do innych implementacji.

Dlaczego tylko BIOS ROM nie korzysta z CMOS, podobnie jak inne urządzenia pamięci masowej - co dokładnie jest zaletą? I dlaczego informacje o konfiguracji BIOS-u nie mogą być przechowywane we własnym układzie ROM zamiast „układu CMOS”?

Kais
źródło
1
Czy CMOS nie wymaga baterii do przechowywania danych? Jedną rzeczą jest utrata ustawień konfiguracji i zegara, gdy bateria się wyczerpie, ale byłoby katastrofą, gdyby BIOS został utracony. Możesz edytować swoje ostatnie zdanie. Nie mogę zrozumieć, o co pytasz.
Tranzystor
1
Bios to ROM, a ustawienia to RAM
Tony Stewart Sunnyskyguy EE75
1
@Kais żadna część pamięci ROM nie jest zapisywalna. Jest to sprzeczne z samym znaczeniem tego terminu. W między technologiami - Zaczęło Eraseble Programmable ROM, aby to, co proponują możliwe, a teraz, że w obwodzie programowanie jest proste, to w rzeczywistości jest często wykonywana. Ale jednocześnie możliwe stało się utrzymywanie żywego rogu układu o niskim poborze mocy na baterii jako zegara i zachowanie niektórych ustawień, więc jest to również opcja stosowana w niektórych systemach.
Chris Stratton
2
„ROM” oznacza „ pamięć tylko do odczytu”. Z definicji nie można go zapisać. Zwykle rzeczywista pamięć ROM wymaga dostosowania warstw metalizacyjnych lub nawet rzeczywistych tranzystorów składowych. W przeciwieństwie do tego istnieje wiele rodzajów pamięci „głównie do odczytu” (PROM, EPROM, EEPROM, Flash itp.), Które mogą mieć zmienioną zawartość, ale z większymi ograniczeniami szybkości i liczby razy niż pamięć RAM. Zazwyczaj dzisiaj w pamięci procesora znajduje się tylko prawdziwa pamięć ROM (i nawet wtedy może to być coś, czego nie można zapisać), podczas gdy urządzenie zewnętrzne będzie możliwe do zapisu przy odpowiednich połączeniach.
Chris Stratton,
1
Na przykład w nowoczesnym systemie możesz mieć małą pamięć ROM wewnątrz procesora, która wie, jak odczytać zawartość szeregowej pamięci flash NOR w pamięci i rozpocząć ich wykonywanie. BIOS w pamięci flash NOR jest następnie narażony na aktualizację, podczas gdy mały skrót rozruchowy, który kopiuje go z pamięci flash do pamięci RAM i wskakuje do niego, jest trwale naprawiony w momencie produkcji układu.
Chris Stratton,

Odpowiedzi:

33

Mieszasz technologię implementacji z potocznymi terminami dotyczącymi funkcjonalności.

CMOS - Complementary Metal Oxide Semiconductor - to metoda tworzenia logiki i powiązanych obwodów za pomocą tranzystorów polowych z kanałem typu N i kanałem P. Jedną z jego charakterystycznych cech jest wyjątkowo niski pobór mocy statycznej - energia jest wykorzystywana prawie tylko przy zmianie stanu. W rezultacie statyczny układ pamięci CMOS może przechowywać swoją zawartość przez lata na baterii i jest przydatnym miejscem do przechowywania półtrwałych informacji.

BIOS i powiązany kod startowy tradycyjnie były przechowywane w urządzeniach PROM lub EPROM. EPROMy w erze komputerów IBM były zwykle wytwarzane w technologiach sprzed CMOS, takich jak NMOS, ale najważniejsze jest to, że nie były one zwykle możliwe do zapisania po zainstalowaniu na komputerze, a jedynie w specjalnym programatorze. Ponadto, podczas gdy wiele współczesnych systemów i klonów używało pamięci EPROM, rzeczywiste produkcyjne wersje IBM-PC używały tańszych, nieprogramowalnych PROM (wyprowadzenia zwykle były kompatybilne w użyciu).

Konstrukcja PC-AT dodała następnie podtrzymywaną bateryjnie pamięć CMOS do przechowywania dostosowywanych ustawień, a także (być może w tym samym urządzeniu) trwały zegar czasu rzeczywistego. Użytkownicy końcowi nazywali to potocznie CMOS, chociaż było to oczywiście tylko szczególne użycie, które umożliwiła szybko rozpowszechniająca się technologia chipów.

Dziś oczywiście nie używamy już równoległych E / PROM dla BIOS-u, ale raczej używamy szeregowej pamięci flash NOR i przesyłamy zawartość do szybszej pamięci RAM w celu wykonania. Nowoczesne układy FLASH w rzeczywistości wykonane z technologii CMOS. I zazwyczaj można je przeprogramować w obwodzie. To naprawdę zależy od projektanta systemu, czy chcą umieścić półtrwałe informacje konfiguracyjne w pamięci RAM podtrzymywanej bateryjnie lub w programowalnej pamięci flash - użytkownik końcowy lub system operacyjny po uruchomieniu może mieć niewielką rzeczywistą widoczność rozróżnienia.

Ale nawet jeśli do ustawień używana jest lampa błyskowa, nadal zwykle będzie dostępny zegar czasu rzeczywistego o niskiej mocy, który działa na baterii.

Chris Stratton
źródło
1
Gdy procesor uruchamia się po raz pierwszy, pamięć RAM nie jest nawet inicjowana (inicjacja pamięci DRAM jest złożona). Wszystko, co robi, to wykonywanie kodu w określonym miejscu (zwykle jest to układ BIOS przez SPI, ale podobno możesz zaprogramować kolejne rozruchy, aby szukać BIOS-u w starszej wersji PCI lub LPC z powodów debugowania). Jedyną rzeczą, która jest umieszczana w pamięci RAM, są rzeczy takie jak IVT (tablica wektorów przerwań) i powiązany kod, który jest użyteczny tylko przed wyjściem z trybu rzeczywistego. Rzeczywiste wykonanie systemu BIOS podczas uruchamiania procesora nie dzieje się w pamięci. Zobacz wiki.osdev.org/System_Initialization_(x86), aby uzyskać więcej informacji.
las
1
@forest - jest to mało prawdopodobne i nie jest tak naprawdę poparte dość szerokim opisem pod linkiem. Może się to skończyć wykonaniem jakiegoś zmienionego pamięci podręcznej pamięci podręcznej lub czegoś takiego, ale wykonanie bezpośrednio z SPI po prostu nie działa bardzo dobrze i jest bardzo prawdopodobne, że można go uniknąć. Jest więc całkiem oczywiste, że gdy główna pamięć RAM systemu się uruchomi, bios będzie z tego wykonywany - takie cieniowanie było powszechne nawet w czasach równoległego biosowania EPROM.
Chris Stratton,
1
Tak, po zainicjowaniu pamięci głównej kopiowane są tam IVT, BDA, EBDA itp. Wcześniej jest on jednak wykonywany bezpośrednio. Nie jest wykonywany w pamięci podręcznej (byłby to tryb CAR, Cache-As-RAM, który wymaga jawnej inicjalizacji przez BIOS).
las
1
Zobacz stackoverflow.com/questions/5300527/…, który wyjaśnia to bardziej szczegółowo. W szczególności sposób wykonywania bloku rozruchowego systemu BIOS bezpośrednio przez SPI. Jest to możliwe poprzez mapowanie tego obszaru BIOS-u do pamięci (oczywiście przed faktyczną inicjalizacją pamięci, więc jest to tak jak MMIO). Więc to nie tylko prawda, to prawda.
las
Chris Stratton, „ale raczej użyj seryjnej pamięci flash NOR i przenieś zawartość do szybszej pamięci RAM w celu wykonania” A jak dokładnie wyobrażasz sobie ten „transfer treści” poza wykonaniem jakiegoś początkowego kodu „przenoszenia danych” bezpośrednio z SPI?
Ale..chenski
12

Kiedy wynaleziono komputer, większość logiki na nim polegała na energochłonnych układach NMOS i TTL. CMOS był bardzo nowy, a jedyne obwody w komputerze, które go używały, były powiązane z rzeczami, które musiały działać na akumulatorze, gdy zasilanie było wyłączone, takimi jak konfiguracyjna pamięć RAM i zegar czasu rzeczywistego.

Obecnie prawie cała logika to CMOS, w tym energochłonny procesor i pamięć flash EEPROM, która utrzymuje BIOS. W pewnym sensie twoje pytanie opiera się na niewłaściwej przesłance - pamięć flash EEPROM to CMOS. Jednak z jakiegokolwiek powodu termin „CMOS” w komputerze PC nadal odnosi się tylko do funkcji RAM i RTC.

Jeśli zastanawiasz się, dlaczego BIOS nie jest przechowywany w ulotnej pamięci RAM, a nie w nieulotnej pamięci flash, to dlatego, że baterie ulegają awarii, a wymazanie BIOS-u skutecznie „zepsuje” komputer, wymagając specjalistycznego sprzętu, aby go ponownie uruchomić.

Dave Tweed
źródło
1
„W pewnym sensie twoje pytanie opiera się na niewłaściwej przesłance - pamięć flash EEPROM to CMOS” - Wyrażenie „Programy są przechowywane w układzie BIOS systemu, podczas gdy zmienne dane są przechowywane na CMOS” trochę mnie teraz zmieszało Zrozumiałem.
Kais,
„Jeśli pytasz, dlaczego BIOS nie jest przechowywany w ulotnej pamięci RAM zamiast w nieulotnej pamięci flash, to dlatego, że baterie ulegają awarii” Nie, mam na myśli coś przeciwnego - dlaczego informacje o układzie CMOS nie są przechowywane w pamięci flash BIOS.
Kais
3
@Kais, ponieważ pamięci flash nie można dowolnie nadpisać, a zarządzanie przepisywaniem całych stron pamięci flash komplikuje sprawy w sposób podatny na błędy. Są też takie rzeczy, jak dzienniki zdarzeń przechowywane przez niektórych BIOSów, wiąże się to z ryzykiem zużycia pamięci flash i / lub uszkodzenia danych w przypadku awarii zasilania w niewłaściwym momencie. Prawdziwa pamięć EEPROM byłoby możliwe - ale a) to wolno pisać, b) masz baterię niskiego poboru energii na dobę w każdym razie .
rackandboneman,
1
... również dlatego, że cały system został zaprojektowany przed udostępnieniem pamięci flash, więc BIOS był przechowywany w dowolnym PROM (który używa bezpieczników do ustalenia, czy każdy bit jest 1 czy 0, i można go zmienić tylko z 1 na 0, ale nie z powrotem) lub zamaskowaną pamięć ROM (która wykorzystuje warstwę metalowych drutów nałożoną na układ, aby go zaprogramować i nie można go w ogóle modyfikować po produkcji), więc konieczne było osobne urządzenie i od tego czasu wszystko musiało zachować zgodność wsteczną .
Jules
8

Myślę, że mylisz dwa użycia akronimu „CMOS”. Są układy zbudowane w całości z uzupełniającej technologii tranzystorowej MOS. W rzeczywistości prawie wszystkie układy scalone są obecnie budowane w ten sposób, w tym większość cyfrowych obwodów sterujących na układzie Flash.

Inne użycie CMOS utrzymywało się w branży komputerowej od najwcześniejszych dni w odniesieniu do układu przechowującego niektóre ustawienia i zegara czasu rzeczywistego z dołączoną baterią. W tamtych czasach (wczesne lata 80.) większość dużych układów na PC była technologią NMOS, a różne układy logiczne były dwubiegunową logiką tranzystorową (TTL, LSTTL itp.). Jedynym zastosowanym układem CMOS był układ RTC, który stał się znany jako „CMOS”.

Obecnie RTC nie jest już oddzielnym układem w urządzeniu z architekturą PC. Zamiast tego jest wbudowany w chipset płyty głównej (który nawiasem mówiąc jest produkowany z komplementarnymi obwodami MOS). W dzisiejszych czasach rzadko zdarza się, aby jakikolwiek BIOS używał starszej pamięci RAM z podtrzymaniem bateryjnym w części chipsetu RTC do przechowywania ustawień. Zamiast tego BIOS używa kilku stron urządzenia pamięci masowej SPI Flash, aby zapisać swoje ustawienia w nieulotny sposób. W związku z tym istnieją minimalne ustawienia, które gubią się w komputerze, gdy bateria wyczerpie się lub zostanie odłączona. Minimalne ustawienia, które są tracone po usunięciu zasilania z baterii, to niektóre z tych, które kontrolują proces uruchamiania i resetowania chipsetu i w rzeczywistości nie są nawet przechowywane w ogniwach RAM zasilanych z baterii, ale zamiast tego w specjalnych zatrzaskach flipflop o niskiej mocy, które są zasilane z monety bateria ogniwowa.

Michael Karas
źródło
2

Zobacz także /superuser/989499/what-does-a-cmos-chip-look-like : zapewnia nam to przydatny link do oryginalnej karty danych MC146818 .

Ten układ został zmapowany w pamięci i podał 64 bajty. 14 z nich było na czas, pozostawiając resztę jako pamięć RAM ogólnego przeznaczenia. Cały układ był zasilany z baterii, gdy komputer był wyłączony, aby utrzymać tykanie zegara czasu rzeczywistego.

pjc50
źródło