ROM(Read-Only Memory)는 전원을 꺼도 데이터가 날아가지 않고, 대량 생산에도 이점이 있기 때문에 여러 가지 분야에 굉장히 많이 쓰이며, 우리 주변에 있는 전자기기 대부분에는 ROM이 들어가 있습니다.

예전에는 한번 기록하면 바꿀 수 없어 read-only memory라 불렸지만 Read-Only라는 한계를 극복해가 나는 발전에 따라 롬 라이터(ROM Writer)로 기록 가능한 ROM이 나오고 롬 라이터 없이도 기록이 가능한 ROM 메모리들이 생겨서 더 여러 가지 방면에 사용하게 되었으며 USB에 들어가는 플래시 메모리도 EEPROM에서 발전한 형태의 메모리입니다.

 

> ROM의 종류

1. 마스크롬(Mask ROM)

처음 제조할 때 트랜지스터에 이온을 넣어서 물리적으로 기록하여 내용 수정이 불가능한 롬 메모리입니다.

Mask ROM

현재 읽는 셀의 Word 선의 전위를 GND(0V)로 한 뒤에

Bit 선의 전위를 Vcc로 전압을 인가하여 Word 선에 전류가 흐른다면 "1"로 판단합니다.

전류가 흐르지 않는다면 "0"으로 판단합니다.

 

ROM에 다시 기록할 필요가 없는 대부분의 가전제품에는 마스크롬을 사용합니다. 대량으로 찍어내기 때문에 가격이 싸고 ROM에 다시 기록할 수 없기 때문에 안정성이 매우 높지만, 기록을 잘못하거나 기록한 데이터에 문제가 있다면 폐기를 해야 합니다.

 

2. PROM(Programmable ROM)

퓨즈를 사용하여 제작하여 처음 한 번만 롬 라이터로 기록이 가능한 롬 메모리입니다.

PROM

위에 Mask ROM과 같은 원리이지만 이온 대신 퓨즈를 사용합니다.

퓨즈가 끊어져 있어서 전류가 흐르지 않는다면 "0"

퓨즈가 연결되어 있어서 전류가 흐른다면 "1"로 인식합니다.

 

롬 라이터를 이용해서 하나하나 기록을 해 줘야 하기 때문에 대량생산엔 부적합하며 마스크롬으로 생산하기엔 생산량이 적은 경우 PROM을 사용하지만 거의 사용하지 않습니다.

IBM이 개발한 eFUSE(삼성 휴대폰의 KNOX의 경우에도 eFUSE를 사용합니다)도 PROM 기술을 사용합니다.

 

3. EPROM(Erasable PROM)

자외선을 사용하여 기록된 내용을 지우고, 전류로 다시 기록할 수 있는 롬 메모리입니다.

EPROM

이산화규소(SiO₂)로 플로팅 게이트를 만들어서 플로팅 게이트 안에 전자를 저장하고 이산화규소를 통하여 자외선으로 광전류를 흘려 플로팅 게이트 안에 있는 전자를 방전시키며 저장과 삭제를 합니다.

자외선이 반도체에 닿아야 하므로 중간에 자외선이 들어갈 수 있도록 석영유리로 된 창이 나 있습니다.

태양빛이나 여러 가지 주변에 자외선이 나오는 광원들에 노출되면 서서히 지워질 수 있으므로 데이터를 다 지운 뒤에는 차광 씰 등을 붙여서 창을 가립니다.

EPROM의 원리

 

 

4. EEPROM(Electronically EPROM)

전류를 이용하여 기록된 내용을 지우고 다시 기록할 수 있는 롬 메모리입니다.

EEPROM의 구조

EEPROM은 FN 터널링 현상을 이용하여 지우고, 기록합니다. EEPROM의 한 비트에는 트랜지스터 2개로 구성되어 있습니다.

EPROM에서는 자외선을 이용하여 플로팅 게이트 안에 있는 전자를 삭제했지만 EEPROM에서는 선택 게이트를 이용하여 플로팅 게이트 안에 전자를 삭제하고 추가해주게 됩니다.

EEPROM의 데이터 쓰기

비트 선에 12V 전후의 강한 전류를 흘려보내게 되면 컨트롤 게이트와 비트 선 사이에 전압차가 생기게 되고 강한 전기장이 형성되게 되어 FN 터널링 현상에 따라서 플로팅 게이트 안에 있는 전자들이 비트 선으로 이동하게 되면서 플로팅 게이트 안에는 전자가 사라지게 됩니다.

EEPROM의 데이터 소거

컨트롤 게이트에 12V 전후의 강한 전류를 보내게 되면 터널링 현상으로 인해 플로팅 게이트로 전자가 들어가게 됩니다.

플래시 메모리(Flash Memory)

플래시 메모리는 기존 EEPROM에서 더 발전한 형태의 EEPROM입니다. NOR 플래시와 NAND 플래시가 있는데 NOR 기반 플래시는 지우기와 쓰기 시간이 긴 대신 어떤 위치에도 임의로 접근할 수 있게 주소/자료 인터페이스를 제공합니다. 자주 업데이트되지 않는 프로그램 코드를 저장하는 데에 좋습니다. NAND 플래시는 NOR 플래시에 비해 지우기와 쓰기 시간이 좀 더 빠르고 집적도가 높으며 비트다 제작비도 낮고 10배 정도 내구성이 강합니다. 하지만 입출력 인터페이스는 자료에 대한 순차 접근만을 지원합니다. 그래서 개인용 컴퓨터 카드와 다양한 메모리 카드와 같은 대용량 저장 장치에 주로 사용합니다.

여기선 NAND 플래시만 알아보도록 하겠습니다.

 

Flash Memory 구조
플래시 메모리의 데이터 쓰기

컨트롤 게이트에 전압을 인가하게 되면 기판과 컨트롤 게이트 사이에 전압의 차이가 발생하게 되고 FN 터널링 현상으로 인해 인가한 전압에 따라 일정량의 전자가 채워지게 됩니다.

플래시 메모리의 데이터 소거

플래시 메모리는 블록 단위로 묶인 기판에 전압을 인가하게 되면 FN 터널링 현상에 의해서 플로팅 게이트 안에 있던 전자들이 기판으로 이동하면서 블록 단위로 빠르게 데이터를 소거할 수 있습니다.

플래시 메모리의 데이터 읽기

Source와 Drain 사이에 전류를 흐르게 하고 컨트롤 게이트에 약하게 전압을 걸어주게 되면 플로팅 게이트 안에 전자가 있는지 없는지에 따라서 전기장이 영향을 받고 전자가 없다면 전기장이 Source와 Drain 간의 전자들로 만들어진 경로가 형성될 수 있게 합니다. Drain으로 전류가 잘 흐르는지 흐르지 못하는지에 따라서 0과 1을 구분하게 됩니다.

 

이를 이용하여 플로팅 게이트 안에 들어있는 전자 수가 적을수록 Drain으로 전자가 잘 흐르기 때문에 Drain으로 들어오는 전압을 여러 가지 단계로 구분하여 한 셀에 비트를 여러 개 구분할 수 있는 기술도 있습니다.

728x90

조금 전 글에 BIOS에 대한 설명이 있었는데, UEFI(Unified Extensible Firmware Interface)는 BIOS처럼 사용자가 컴퓨터를 켜면 시작되는 프로그램이며, BIOS와 많은 부분 비슷한 일을 합니다.

그리고 이제는 구형 BIOS는 거의 사라졌으며 UEFI에서 지원되던 CSM도 2020년부턴 CSM 모듈을 삭제한 UEFI Class 3가 표준이 되면서 새로 나오는 펌웨어들은 거의 다 BIOS가 사라졌습니다.

 

UEFI에서 달라진 점

1. 파티션 테이블

BIOS는 MBR(Master Boot Record)라는 방식으로 파티션 테이블을 만드는데, MBR 방식은 주 파티션을 4개까지밖에 잡지 못합니다. 그 이상은 논리 파티션을 사용해야 하는데 논리 파티션은 OS와 부트로더가 지원하지 않으면 주 파티션에 설치된 OS로만 부팅이 가능합니다. 전체 디스크 크기가 2.2TB를 넘어가면 넘어간 용량부터는 해당 공간을 사용하지 못합니다.

UEFI MBR대신 GPT(GUID Partition Table)를 사용합니다. GPT 방식은 파티션 정보를 기록하는 방식을 변경하여, 주 파티션과 논리 파티션의 구분을 없애고 2TB를 초과하는 디스크도 사용할 수 있게 되었습니다. GPT 방식은 최대 9.4ZB까지 지원하기 때문에 디스크 크기에 대한 걱정이 사라졌습니다. 하지만 기록하는 방식이 다르고 기록하는 양이 GPT가 더 많기 때문에 GPT MBR은 서로 호환되지 않고 파티션 테이블 구조를 변경하려면 디스크의 모든 파티션을 지워야지 되기 때문에 데이터가 손실됩니다.

2. Fastboot

Fastboot는 부팅 중에 USB 부팅 디스크그래픽 카드 등의 레거시 BIOS 코드의 로드를 생략하고 향상된 코드가 탑재된 전용 UEFI OpROM으로 주변 하드웨어의 펌웨어와 Fastboot 기능을 지원하는 운영 체제의 코드를 일부 가져와 메인보드 EFI 상에서 빠르게 부팅시켜 부팅 속도를 단축하는 기능입니다. UEFI도 64비트 주소 체계를 사용하면서 BIOS보다는 미세하게나마 부팅 속도가 더 빨라졌으며, Fastboot를 켜면 이름에 맞게 껐을 때보다 확연히 빨라집니다.


UEFI vs Fast Boot vs Fast Boot + Post Delay Zero

Fastboot 옵션이 켜져 있는 경우, 부팅 초기에 UEFI 펌웨어 진입 시간을 주지 않고 USB 부팅 디스크를 인식하지 않고 OS 부팅 단계로 바로 넘겨버리기 때문에 펌웨어에 진입하기 위해선 윈도우의 경우 설정의 복구 모드를 통하거나, 메인보드 제조사에서 제공하는 진입 도구를 사용하면 됩니다.

3. Secure Boot

UEFI Specification 2.2부터 지원하는 기능으로, OS 부트 로더가 검증된 인증서에 의해 디지털 서명이 되어 있는지를 검증하여 부팅 과정에서의 보안성을 높였습니다. 디지털 서명되지 않은 경우 또는 검증된 인증서에 의해 서명되지 않은 경우에는 부팅이 중단됩니다. 윈도우의 경우 드라이버의 서명 또한 펌웨어에 등록되어 있지 않은 인증서로 서명되어 있거나 서명되지 않은 드라이버의 로드를 중단시켜 변조된 드라이버의 실행을 방지합니다. 그래서 Secure Boot 가 켜진 상태로 나오는 Windows RT/Windows Phone OS 가 탑재 된 장비는 커스텀 펌웨어를 깔기 매우 어렵습니다.

4. UEFI Class

UEFI Class
  • UEFI Class 0
    • Legacy BIOS
    • UEFI가 없거나, UEFI PI 인터페이스 없음
  • UEFI Class 1
    • UEFI/PI 인터페이스 사용
    • 런타임이 legacy BIOS 인터페이스만 노출(UEFI 코드 사용 불가)
  • UEFI Class 2
    • UEFI/PI 인터페이스 사용
    • 런타임이 legacy BIOS, UEFI 인터페이스 모두 노출
  • UEFI Class 3
    • UEFI/PI 인터페이스 사용
    • 런타임이 UEFI 인터페이스만 노출(legacy BIOS 코드 사용 불가)

5. CSM(호환성 지원 모듈, Compatibility Support Module)

UEFI를 완전히 지원하지 않는 OS나 x86 레거시 모드, DOS 구동을 위해 기존 레거시 바이오스의 16비트 바이너리 및 그래픽 카드 BIOS, 네트워크 PXE 부팅 롬, 기타 PCI 장치 등 외부 장치의 Option ROM을 지원하는 기능입니다.

728x90

BIOS(Basic Input/Output System)는 펌웨어의 한 종류로서 사용자가 컴퓨터를 켜면 시작되는 프로그램으로 주변 장치와 컴퓨터 운영 체제 사이의 데이터의 흐름을 관리합니다. 그리고 부팅 절차에서 하드웨어 초기화를 수행하고, 운영체제나 응용 프로그램에 런타임 서비스를 제공합니다. 원래는 IBM의 소유였으나 많은 회사가 원본 프로그램을 분석하여

호환 프로그램을 개발했습니다. 시간이 흘러 지금의 BIOS는 하드웨어 부품을 초기화하고 검사하는 역할, 부트로더 또는 대용량 저장장치에 저장된 운영체제를 RAM으로 읽어오는 기능을 수행하게 되었습니다. BIOS는 이제는 거의 안 쓰게 되었고 UEFI 같은 다른 펌웨어가 대체하게 되었지만 바이오스라는 말이 익숙하기 때문에 아직도 바이오스라 부릅니다

BIOS를 저장하는 매체로 예전에는 ROM을 주로 썼지만, 현재는 플래시 메모리를 주로 사용하게 되었으며 플래시 메모리는 덮어쓰려면 롬 라이터(ROM Writer)가 필요한 ROM과 달리 별도의 writer 없이 덮어쓸 수 있어 BIOS를 업데이트하는 데에 편리해졌지만 BIOS가 컴퓨터가 켜지면 가장 먼저 시작되고 하드웨어 부품을 초기화하거나 부트로더 또는 OS를 불러오는 등 여러 가지 중요한 일을 하므로 BIOS를 망가트리는 바이러스도 생기기도 했으며 BIOS를 업데이트하는 도중 정전 등 예기치 않은 상황으로 인해서 BIOS 기록이 정상적으로 되지 않는다면 컴퓨터를 아예 켤 수 조차 없기 때문에 손상된 바이오스를 복구하는 방법은 바이오스가 탑재된 플래시 메모리를 교환하는 방법밖에 없습니다.

일부 플러그인 어댑터들(SCSINIC비디오 등)의 경우 BIOS 대신 독자적인 펌웨어를 장치에 포함해 그 장치용 펌웨어가 해당 장치를 제어하도록 하는데 이렇게 BIOS에서 호출하는 펌웨어를 옵션 롬이라고 부릅니다.

BIOS 가 저장된 롬

 

0. CPU가 정상적으로 작동하게 하기 위해 CPU를 초기화합니다.

1. CPU 레지스터에 하드 코딩된 JUMP 명령어를 실행합니다.

2. CPU가 ROM에 미리 정의된 BIOS가 위치한 메모리 위치로 이동합니다.

3. CPU가 ROM에서 BIOS를 직접 실행합니다.

4. BIOS가 POST(Power On Self Test)를 수행합니다.

4-1. POST의 주요 과정들

  • CPU 레지스터 확인
  • BIOS 코드 자체의 무결성 확인
  • DMA, timer, interrupt controller와 같은 일부 기본 구성 요소 확인
  • 시스템 메인 메모리의 초기화, 크기 측정, 검증
  • BIOS 초기화
  • 다른 특수 확장 BIOS에 제어권 전달 (설치된 경우)
  • 부팅에 사용할 수 있는 장치 식별, 구성 및 선택

4-2. 개선된 버전의 POST의 추가적인 작업

  • 칩셋 초기화
  • 모든 시스템 버스 및 장치 검색, 초기화 및 카탈로그화
  • 시스템 구성을 위한 사용자 인터페이스 제공
  • 운영체제에 필요한 모든 시스템 환경 구성

4-3. POST 중 발생한 오류

American Megatrends  International BIOS beep codes

5. 파티션 테이블을 RAM에 로드하고 첫 번째 파티션은 첫 번째 파티션의 부트로더를 실행합니다.

6. 부트로더가 OS를 Real Mode에서 커널을 조기 초기화합니다.

7. Protected Mode로 전환한 후 커널을 전체 초기화합니다.

8. 커널을 RAM에 로드하고 통제권을 커널로 넘깁니다.

 

OS로 통제권이 넘어가고 부팅(Bootstrapping) 끝!!!

728x90

1. 케이스의 전원 버튼을 누르면 메인보드의 파워 스위치 핀으로 전기가 흐르게 됩니다.

메인보드 핀

2. 파워 스위치 핀으로 들어간 전원은 SIO(Super I/O)에서 처리해서 메인보드와 파워를 연결해주고 있는 20(또는 20+4) 핀 케이블에 파워 서플라이 전원을 키라는 신호를 보냅니다. (PS_ON# 과 GND를 연결하면 파워 서플라이를 키라는 신호를 줄 수 있습니다.)

PS_ON# 으로 파워 서플라이를 키라는 입력이 갑니다.

3. 파워 서플라이가 아래 사진의 순서대로 교류를 직류로 변환하여 메인보드와 각종 전기가 필요한 컴퓨터 부품들에 전류를 보내줍니다.

파워 서플라이 내부 구조

 - EMI 필터부에선 들어오는 교류 전기의 노이즈와 나가는 노이즈를 제거해줍니다.

 - 교류/직류 정류부에선 교류 전기의 극성이 +와 -를 번갈아 오가는데 극성을 + 로 바꿔줍니다.

정류 회로

 - 정류 과정을 거치면 극성이 + 만 나타나 직류가 되지만 전류가 파동을 쳐서 이대로는 쓰기가 어렵습니다.(내부 부품에 그대로 전달하면 내부 부품이 손상되거나 전압 부족으로 꺼졌다 켜지는 걸 반복할 수 있습니다) 그래서 캐패시터를 이용하여 평활화 작업을 해줍니다.

 - 직류/직류 스위칭부에선 교류/직류 정류부에서 직류로 변환되어 나온 전기의 전압이 330V 가량 되기 때문에 변환된 전기의 전압을 부품에 필요한 크기(3.3V, 5V, 12V...) 만큼 내려줍니다.

 

4. 파워 서플라이에서 출력이 안정화되어 사용할 준비가 되었다면 PWR_OK로 신호를 보냅니다.

 

728x90

+ Recent posts