많은 게임 콘솔은 상호 교환 가능한 롬 카트리지를 사용하여 하나의 시스템으로 여러 게임을 플레이할 수 있다. 여기에는 포켓몬스터 실버게임보이 카트리지의 내부가 나와 있다. ROM은 오른쪽에 "MX23C1603-12A"라고 표시된 IC이다.
고정 기억 장치(固定記憶裝置), 읽기 전용 메모리(문화어: 읽기전용기억기[1]) 또는 롬(ROM, read-only memory)은 컴퓨터 및 기타 전자 기기에 사용되는 일종의 비휘발성 메모리이다. ROM에 저장된 데이터는 메모리 장치 제조 후 전자적으로 수정할 수 없다. 읽기 전용 메모리는 시스템 수명 동안 거의 변경되지 않는 소프트웨어, 즉 펌웨어를 저장하는 데 유용하다. 비디오 게임과 같은 프로그래밍 가능한 장치용 소프트웨어 애플리케이션은 ROM이 포함된 플러그인 카트리지로 배포될 수 있다.
엄밀히 말해 읽기 전용 메모리는 제조 후 전자적으로 변경할 수 없는 다이오드 매트릭스 또는 마스크 롬집적 회로(IC)와 같이 하드웨어적으로 배선된 메모리를 의미한다. 개별 회로는 원칙적으로 점퍼 와이어를 추가하고 부품을 제거하거나 교체하여 변경할 수 있지만, IC는 변경할 수 없다. 오류를 수정하거나 소프트웨어를 업데이트하려면 새 장치를 제조하여 설치된 장치를 교체해야 한다.
"ROM"이라는 용어는 특정 소프트웨어를 포함하는 ROM 장치 또는 쓰기 가능한 ROM 장치에 저장될 소프트웨어 파일을 지칭하는 데 사용되기도 한다. 예를 들어, 안드로이드 운영체제를 수정하거나 교체하는 사용자는 수정되거나 교체된 운영체제를 포함하는 파일을 해당 파일이 기록되는 저장 장치 유형에 따라 "커스텀 롬"이라고 부르며, ROM(소프트웨어와 데이터가 저장되는 곳, 일반적으로 플래시 메모리)과 RAM을 구분할 수 있다.
ROM과 RAM은 컴퓨터의 필수 구성 요소이며 각각 고유한 역할을 한다. RAM은 시스템 전원이 꺼지면 데이터가 손실되는 임시 휘발성 저장 매체이다. 반대로 ROM은 비휘발성이므로 컴퓨터가 꺼진 후에도 데이터가 보존된다.[3]
가장 단순한 형태의 솔리드 스테이트 ROM은 반도체 기술 자체만큼 오래되었다. 조합논리 회로는 수동으로 연결되어 n-비트 주소 입력을 m-비트 데이터 출력의 임의 값에 매핑할 수 있다(룩업 테이블 참조). 집적 회로의 발명과 함께 마스크 롬이 등장했다. 마스크 롬은 워드 라인(주소 입력)과 비트 라인(데이터 출력)의 그리드로 구성되어 트랜지스터 스위치로 선택적으로 연결되며, 규칙적인 물리적 배치와 예측 가능한 전달 지연으로 임의의 룩업 테이블을 나타낼 수 있다. 마스크 롬은 반도체 제조 과정에서 포토리소그래피를 통해 포토마스크로 프로그래밍된다. 마스크는 ROM 칩에서 제거되거나 추가될 물리적 특징 또는 구조를 정의하며, 이러한 특징의 존재 또는 부재는 ROM 설계에 따라 1 또는 0 비트를 나타낸다.[4] 따라서 설계상, 데이터가 전자적으로 변경할 수 없는 물리적 특징 또는 구조의 존재 또는 부재에 의해 정의되기 때문에 데이터를 전자적으로 변경하려는 시도는 모두 실패한다. 모든 소프트웨어 프로그램, 심지어 동일한 프로그램의 수정판에 대해서도 전체 마스크를 변경해야 하므로 비용이 많이 들 수 있다.
마스크 롬에서 데이터는 회로에 물리적으로 인코딩되어 있으므로 제작 중에만 프로그래밍할 수 있다. 이로 인해 여러 가지 심각한 단점이 발생한다.
마스크 롬은 대량으로 구매해야만 경제적이다. 사용자는 모든 소프트웨어 또는 수정판에 대해 맞춤 설계를 생산하기 위해 파운드리와 계약해야 하기 때문이다.
마스크 롬 설계 완료부터 완제품 수령까지의 처리 시간이 길다. 같은 이유 때문이다.
마스크 롬은 R&D 작업에 비실용적이다. 설계자는 설계를 개선하면서 메모리 내용을 자주 빠르게 수정해야 하기 때문이다.
제품에 결함이 있는 마스크 롬이 출하된 경우, 이를 수정하는 유일한 방법은 제품을 리콜하고 출하된 모든 장치의 ROM을 물리적으로 교체하는 것이다. 이는 실제로 결함이 있는 일산화 탄소 감지기에서 발생한 적이 있다.[5]
이러한 단점들은 후속 개발을 통해 해결되었다. 웬 칭 초우가 1956년에 발명한 프로그래밍 가능 읽기 전용 메모리(PROM)는 고전압 펄스를 가하여 물리적으로 구조를 변경함으로써 사용자가 내용을 한 번만 프로그래밍할 수 있도록 했다.[6][7] 이는 회사가 대량의 새로운 PROM 칩을 주문하고 설계자의 편의에 따라 원하는 내용으로 프로그래밍할 수 있으므로 위의 문제 1과 2를 해결했다.
전기적 소거 가능 프로그래밍 가능 읽기 전용 메모리(EEPROM)는 1972년 전기기술연구소의 타루이 야스오, 하야시 유타카, 나가이 기요코가 개발했으며[10] 문제 4를 해결하는 데 큰 진전을 이루었다. EEPROM은 포함된 장치가 외부 소스(예: 직렬 케이블을 통한 개인용 컴퓨터)로부터 프로그램 내용을 수신하는 수단을 제공한다면 현장에서 프로그래밍할 수 있기 때문이다. 1980년대 초 도시바의 마스오카 후지오가 발명하고 1980년대 후반에 상용화된 플래시 메모리는 EEPROM의 한 형태로, 칩 면적을 매우 효율적으로 사용하며 손상 없이 수천 번 지우고 재프로그래밍할 수 있다. 전체 장치가 아닌 특정 부분만 지우고 프로그래밍할 수 있다. 이는 고속으로 수행할 수 있으므로 "플래시"라는 이름이 붙었다.[11][12]
이러한 모든 기술은 ROM의 유연성을 향상시켰지만, 칩당 상당한 비용이 들었기 때문에 대량 생산에서는 마스크 롬이 오랫동안 경제적인 선택으로 남아 있었다. (재프로그래밍 가능한 장치의 비용 감소로 2000년경에는 마스크 롬 시장이 거의 사라졌다.) 재기록 가능한 기술은 마스크 롬의 대체 기술로 구상되었다.
가장 최근의 개발은 역시 도시바에서 발명한 낸드 플래시이다. 개발자들은 "낸드 플래시의 목표는 하드 디스크를 대체하는 것"이라고 명시적으로 과거 관행과 단절했다.[13] 이는 ROM의 전통적인 주 저장 장치 형태 사용과는 다른 것이다. 2021년 기준 낸드는 하드 디스크보다 높은 처리량, 낮은 지연 시간, 물리적 충격에 대한 높은 내성, 극도의 소형화(예: USB 플래시 드라이브 및 작은 마이크로SD메모리 카드 형태) 및 훨씬 낮은 전력 소비를 제공함으로써 이 목표를 거의 완전히 달성했다.
프로그램 저장용으로 사용
대부분의 초기 프로그램 내장식 컴퓨터는 컴퓨터 전원을 켜거나 실행을 시작할 때 실행되는 초기 프로그램(종종 "부팅" 또는 "부팅업"으로 약칭되는 부트스트랩이라는 프로세스[a])을 저장하기 위해 비휘발성 저장 장치(즉, 전원이 제거되어도 데이터를 유지하는 저장 장치)의 한 형태를 사용했다. 마찬가지로 모든 사소하지 않은 컴퓨터는 실행 중에 상태의 변경 사항을 기록하기 위해 어떤 형태의 변경 가능한 메모리가 필요하다.
읽기 전용 메모리 형태는 1948년 이후 에니악ENIAC과 같은 대부분의 초기 프로그램 내장식 컴퓨터에서 프로그램을 위한 비휘발성 저장 장치로 사용되었다. (그때까지는 모든 프로그램을 기계에 수동으로 배선해야 했기 때문에 며칠에서 몇 주가 걸릴 수 있었으므로 프로그램 내장식 컴퓨터가 아니었다.) 읽기 전용 메모리는 저장된 값을 읽는 메커니즘만 필요하고 그 자리에서 변경할 필요가 없으므로 구현하기가 더 간단했으며, 따라서 매우 조잡한 전기 기계 장치로 구현할 수 있었다(역사적 예시 아래 참조). 1960년대 집적 회로의 등장으로 ROM과 변경 가능한 정적 램은 모두 실리콘 칩의 트랜지스터 배열로 구현되었다. 그러나 ROM 메모리 셀은 SRAM 메모리 셀보다 적은 수의 트랜지스터로 구현할 수 있었다. SRAM 메모리 셀은 내용 유지를 위해 래치(5-20개의 트랜지스터로 구성)가 필요한 반면, ROM 셀은 비트 라인을 워드 라인에 연결하는 트랜지스터의 부재(논리 0) 또는 존재(논리 1)로 구성될 수 있기 때문이다.[14] 결과적으로 ROM은 수년 동안 RAM보다 더 낮은 비트당 비용으로 구현할 수 있었다.
1980년대 대부분의 가정용 컴퓨터는 BASIC 인터프리터 또는 운영체제를 ROM에 저장했다. 자기 디스크 드라이브와 같은 다른 형태의 비휘발성 저장 장치는 너무 비쌌기 때문이다. 예를 들어, 코모도어 64는 64 KB의 RAM과 BASIC 인터프리터 및 KERNAL 운영체제를 포함하는 20KB의 ROM을 포함했다. 이후 IBMPC XT와 같은 가정용 또는 사무용 컴퓨터는 종종 자기 디스크 드라이브와 더 많은 양의 RAM을 포함하여 디스크에서 RAM으로 운영체제를 로드할 수 있었으며, ROM에는 최소한의 하드웨어 초기화 코어와 부트로더만 남아 있었다(IBM 호환 컴퓨터에서는 바이오스로 알려짐). 이러한 배열은 더 복잡하고 쉽게 업그레이드할 수 있는 운영체제를 가능하게 했다.
현대 PC에서 "ROM"은 프로세서의 기본 부트스트랩 펌웨어와 그래픽 카드, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광학 디스크 드라이브, TFT 스크린 등 시스템 내의 자체 포함 장치를 내부적으로 제어하는 데 필요한 다양한 펌웨어를 저장하는 데 사용된다. 오늘날 이러한 "읽기 전용" 메모리 중 많은 부분(특히 바이오스/UEFI)은 펌웨어 업그레이드가 필요할 경우 현장 재프로그래밍을 허용하기 위해 종종 EEPROM 또는 플래시 메모리(아래 참조)로 대체된다. 그러나 단순하고 성숙한 서브시스템(예: 메인 보드의 집적 회로에 있는 키보드 또는 일부 통신 컨트롤러)은 마스크 ROM 또는 OTP(일회성 프로그래밍 가능)를 사용할 수 있다.
ROM 및 후속 기술인 플래시는 임베디드 시스템에 널리 사용된다. 이러한 시스템은 산업용 로봇에서 가전제품 및 가전제품(디지털 오디오 플레이어, 셋톱박스 등)에 이르기까지 모든 것에 존재하며, 모두 특정 기능을 위해 설계되었지만 범용 마이크로프로세서를 기반으로 한다. 소프트웨어가 하드웨어와 밀접하게 연결되어 있으므로 이러한 장치에서는 프로그램 변경이 거의 필요하지 않다(일반적으로 비용, 크기 또는 전력 소비 문제로 하드 디스크가 없음). 2008년 기준 대부분의 제품은 마스크 ROM 대신 플래시를 사용하며, 많은 제품이 펌웨어 업데이트를 위해 PC에 연결하는 수단을 제공한다. 예를 들어, 디지털 오디오 플레이어는 새로운 파일 형식을 지원하도록 업데이트될 수 있다. 일부 취미가는 이러한 유연성을 활용하여 소비자 제품을 새로운 목적으로 재프로그래밍했다. 예를 들어, 아이팟리눅스 및 OpenWrt 프로젝트는 사용자가 각각 MP3 플레이어와 무선 라우터에서 모든 기능을 갖춘 리눅스배포판을 실행할 수 있도록 했다.
ROM은 암호 데이터의 이진 저장을 위해서도 유용하다. 교체가 어렵기 때문에 정보 보안을 강화하는 데 바람직할 수 있기 때문이다.
데이터 저장용으로 사용
ROM은 (최소한 하드웨어 배선된 마스크 형태의 경우) 수정할 수 없으므로 장치 수명 동안 수정될 필요가 없는 데이터만 저장하는 데 적합하다. 이러한 목적을 위해 ROM은 많은 컴퓨터에서 수학적 및 논리적 함수 계산을 위한 룩업 테이블을 저장하는 데 사용되었다(예를 들어, 부동소수점 장치는 더 빠른 계산을 용이하게 하기 위해 사인 함수를 표로 만들 수 있음). 이는 CPU가 느리고 ROM이 RAM에 비해 저렴했을 때 특히 효과적이었다.
특히, 초기 개인용 컴퓨터의 디스플레이 어댑터는 ROM에 비트맵 글꼴 문자 표를 저장했다. 이는 일반적으로 텍스트 디스플레이 글꼴을 대화식으로 변경할 수 없다는 것을 의미했다. 이는 IBM PC (유형 5150)에서 사용할 수 있는 CGA 및 MDA 어댑터 모두의 경우였다.[15]
이러한 소량의 데이터를 저장하기 위한 ROM의 사용은 현대의 범용 컴퓨터에서는 거의 완전히 사라졌다. 그러나 낸드 플래시는 파일의 대용량 스토리지 또는 보조 기억 장치를 위한 새로운 역할로 자리 잡았다.
마스크 롬은 집적 회로 제조업체(사용자가 아님)가 내용이 프로그래밍되는 읽기 전용 메모리이다. 원하는 메모리 내용은 고객이 장치 제조업체에 제공한다. 원하는 데이터는 메모리 칩의 최종 금속화 상호 연결을 위한 맞춤형 포토마스크/마스크 레이어로 변환된다(이름의 유래).
마스크 롬은 여러 가지 방법으로 만들 수 있으며, 이들 모두는 트랜지스터가 그리드에서 주소 지정될 때 트랜지스터의 전기적 응답을 변경하는 것을 목표로 한다.
NOR 구성의 ROM에서, 포토마스크를 사용하여 트랜지스터가 있는 그리드의 특정 영역만 금속으로 채워서 ROM 칩의 모든 트랜지스터 중 일부만 그리드에 연결되도록 한다.[4] 따라서 연결된 트랜지스터가 주소 지정될 때 다른 전기적 응답을 유발하는 그리드를 만들며, 트랜지스터가 연결되지 않은 그리드의 공간과는 다르게, 연결된 트랜지스터는 1을, 연결되지 않은 트랜지스터는 0을 나타낼 수 있다(또는 그 반대). 이는 마스크 롬을 만드는 가장 저렴하고 빠른 방법이며[4] 데이터가 있는 마스크 하나만 필요하며, 금속화 레이어에서 이루어지기 때문에 모든 마스크 롬 유형 중 밀도가 가장 낮다.[4] 이 레이어의 특징은 ROM의 다른 부분에 비해 상대적으로 클 수 있다. 이를 접점 프로그래밍 롬(contact-programmed ROM)이라고 한다. NAND 구성의 ROM에서는 이를 금속층 프로그래밍(metal-layer programming)이라고 하며, 마스크는 트랜지스터를 둘러싼 영역을 금속으로 채울 위치를 정의하여 트랜지스터를 단락시킨다. 단락되지 않은 트랜지스터는 0을, 단락된 트랜지스터는 1을 나타낼 수 있다(또는 그 반대).[16]
두 가지 유형의 이온 주입 영역을 정의하는 두 개의 마스크를 사용하여 트랜지스터의 전기적 특성을 그리드에서 주소 지정될 때 변경하고 두 가지 유형의 트랜지스터를 정의한다.[4] 트랜지스터 유형은 1비트 또는 0비트를 나타내는지를 정의한다. 한 마스크는 한 유형의 이온 주입( "1" 트랜지스터)을 증착할 위치를 정의하고, 다른 마스크는 다른 유형의 이온 주입( "0" 트랜지스터)을 증착할 위치를 정의한다. 이를 전압 임계 ROM(VTROM)이라고 하는데, 서로 다른 이온 주입 유형이 트랜지스터에서 서로 다른 전압 임계값을 정의하고, 트랜지스터의 전압 임계값이 0 또는 1을 정의하기 때문이다. NAND 및 NOR 구성에서 모두 사용할 수 있다. 이 기술은 이온 주입 영역이 광학적으로 구별하기 어렵기 때문에 내용의 광학적 판독에 대한 높은 수준의 저항을 제공한다.[16] 이는 ROM의 디캐핑과 현미경을 사용하여 시도될 수 있다.
트랜지스터의 게이트 산화막에 두 가지 두께 수준을 사용하고,[4] 한 마스크는 한 두께의 산화막을 증착할 위치를 정의하고, 다른 마스크는 다른 두께의 산화막을 증착할 위치를 정의한다. 두께에 따라 트랜지스터는 다른 전기적 특성을 가질 수 있으므로 1 또는 0을 나타낼 수 있다.
여러 개의 마스크를 사용하여 그리드에 트랜지스터 자체의 존재 또는 부재를 정의한다. 존재하지 않는 트랜지스터는 0으로 해석될 수 있으며, 트랜지스터가 존재하면 1로 해석될 수 있다(또는 그 반대). 이를 액티브 레이어 프로그래밍이라고 한다.[16]
마스크 롬 트랜지스터는 NOR 또는 NAND 구성으로 배열될 수 있으며, 각 비트가 하나의 트랜지스터로만 표현되므로 가능한 가장 작은 셀 크기를 달성할 수 있다. NAND는 NOR보다 더 높은 저장 밀도를 제공한다. OR 구성도 가능하지만, NOR와 비교하여 트랜지스터를 Vss 대신 Vcc에만 연결한다.[16] 마스크 롬은 가장 저렴하고 가장 단순한 반도체 메모리 장치였으며, 하나의 금속층과 하나의 폴리실리콘층만 있어 가장 높은 제조 수율을 가진 반도체 메모리 유형이었다.[4](제조 실행당 가장 많은 작동 장치 수). ROM은 CMOS, nMOS, pMOS, 접합형 트랜지스터와 같은 여러 반도체 소자 제조 기술을 사용하여 만들 수 있다.[17]
프로젝트 개발 단계에서는 UV-EPROM 또는 EEPROM과 같은 재기록 가능한 비휘발성 메모리를 사용하고, 코드가 확정되면 마스크 롬으로 전환하는 것이 일반적인 관행이다. 예를 들어, 아트멜 마이크로컨트롤러는 EEPROM 및 마스크 ROM 형식으로 제공된다.
마스크 롬의 주요 장점은 비용이다. 비트당 마스크 롬은 다른 어떤 종류의 반도체 메모리보다 더 작았다. 집적 회로의 비용은 크기에 크게 의존하므로 마스크 롬은 다른 어떤 종류의 반도체 메모리보다 훨씬 저렴하다.
하지만 일회성 마스킹 비용이 높고, 설계부터 제품화까지의 전환 시간이 길다. 설계 오류는 비용이 많이 든다. 데이터나 코드에 오류가 발견되면 마스크 롬은 쓸모없게 되며, 코드나 데이터를 변경하려면 교체해야 한다.[18]
일부 집적 회로는 마스크 롬만 포함한다. 다른 집적 회로는 마스크 롬뿐만 아니라 다양한 다른 장치들을 포함한다. 특히 많은 마이크로프로세서는 마이크로코드를 저장하기 위해 마스크 롬을 가지고 있다. 일부 마이크로컨트롤러는 부트로더 또는 모든 펌웨어를 저장하기 위해 마스크 롬을 가지고 있다.
고전적인 마스크 프로그래밍된 롬 칩은 데이터를 물리적으로 인코딩하여 저장하는 집적 회로이므로, 제조 후에는 내용을 변경하는 것이 불가능하다.
또한 마스크를 사용하는 대신 레이저를 사용하여 ROM의 일부 다이오드의 전기적 특성을 변경하거나 레이저를 사용하여 일부 폴리실리콘 링크를 절단함으로써 레이저 롬의 내용을 기록할 수도 있다.[20][21][16]
현장 프로그래밍 가능
PROM (PROM) 또는 일회성 프로그래밍 가능 ROM (OTP)은 PROM 프로그래머라는 특수 장치를 통해 기록하거나 프로그래밍할 수 있다. 일반적으로 이 장치는 고전압을 사용하여 칩 내의 내부 링크 (퓨즈 또는 안티퓨즈)를 영구적으로 파괴하거나 생성한다. 결과적으로 PROM은 한 번만 프로그래밍할 수 있다.
EPROM은 강한 자외선에 노출시켜 (일반적으로 10분 이상) 지울 수 있으며, 다시 평소보다 높은 전압을 인가하는 과정으로 재기록할 수 있다. 자외선에 반복적으로 노출되면 EPROM이 결국 마모되지만, 대부분의 EPROM 칩의 내구성은 1000회 이상의 지우기 및 재프로그래밍 주기를 초과한다. EPROM 칩 패키지는 자외선이 들어갈 수 있는 눈에 띄는 석영 "창"으로 식별할 수 있다. 프로그래밍 후에는 실수로 지워지는 것을 방지하기 위해 창을 라벨로 덮는 것이 일반적이다. 일부 EPROM 칩은 패키징 전에 공장에서 지워지며 창이 없다. 이들은 사실상 PROM이다.
EEPROM은 EPROM과 유사한 반도체 구조를 기반으로 하지만, 전체 내용(또는 선택된 뱅크)을 전기적으로 지우고 전기적으로 다시 기록할 수 있으므로 컴퓨터(범용 컴퓨터든 카메라, MP3 플레이어 등의 임베디드 컴퓨터든)에서 제거할 필요가 없다. EEPROM에 기록하거나 플래시하는 것은 ROM에서 읽거나 RAM에 기록하는 것(두 경우 모두 나노초)보다 훨씬 느리다(비트당 밀리초).
EAROM은 한 번에 하나 또는 몇 비트를 수정할 수 있는 EEPROM의 한 유형이다.[22] 쓰기 과정은 매우 느리며 읽기 접근에 사용되는 것보다 높은 전압(일반적으로 약 12 V)이 다시 필요하다. EAROM은 드물게 부분적으로 재기록해야 하는 응용 프로그램을 위해 설계되었다. EAROM은 중요한 시스템 설정 정보를 위한 비휘발성 저장소로 사용될 수 있다. 많은 응용 프로그램에서 EAROM은 주전원에서 전원이 공급되고 리튬 전지로 백업되는 CMOSRAM으로 대체되었다.
플래시 메모리 (또는 단순히 플래시)는 1984년에 발명된 현대적인 EEPROM 유형이다. 플래시 메모리는 일반 EEPROM보다 빠르게 지우고 다시 쓸 수 있으며, 최신 디자인은 매우 높은 내구성(1,000,000회 이상)을 특징으로 한다. 현대 낸드 플래시는 실리콘 칩 면적을 효율적으로 사용하여 2007년 기준[update] 기준으로 최대 32 GB의 용량을 가진 개별 IC를 생산한다. 이러한 특징은 내구성 및 물리적 내구성과 함께 낸드 플래시가 일부 응용 프로그램(예: USB 플래시 드라이브)에서 자기를 대체할 수 있도록 했다. NOR 플래시 메모리는 오래된 ROM 유형의 대체품으로 사용될 때 플래시 ROM 또는 플래시 EEPROM이라고도 불리지만, 빠르게 자주 수정할 수 있는 능력을 활용하는 응용 프로그램에서는 그렇지 않다.
쓰기 보호를 적용함으로써 일부 유형의 재프로그래밍 가능한 ROM은 일시적으로 읽기 전용 메모리가 될 수 있다.
기타 기술
반도체 IC 기술을 기반으로 하지 않는 다른 유형의 비휘발성 메모리가 있다. 다음은 그 예시이다.
다이오드 행렬 ROM은 1960년대의 많은 컴퓨터와 전자 탁상 계산기, 단말기용 키보드 인코더에 소량 사용되었다. 이 ROM은 인쇄 회로 기판의 워드 라인 트레이스와 비트 라인 트레이스 매트릭스 사이의 선택된 위치에 개별 반도체 다이오드를 설치하여 프로그래밍되었다.
저항기 또는 축전기 행렬 ROM은 1970년대까지 많은 컴퓨터에 사용되었다. 다이오드 행렬 ROM처럼 워드 라인과 비트 라인 매트릭스 사이의 선택된 위치에 구성 요소를 배치하여 프로그래밍되었다. 에니악의 기능 테이블은 수동으로 로터리 스위치를 설정하여 프로그래밍된 저항기 행렬 ROM이었다. IBMSystem/360의 다양한 모델과 복잡한 주변 장치는 마이크로코드를 축전기 행렬에 저장했으며, 360/50 및 360/65의 균형 축전기 읽기 전용 저장 장치(BCROS) 또는 360/30의 카드 축전기 읽기 전용 저장 장치(CCROS)와 같은 변형을 사용했다.
변압기 행렬 ROM은 각 행렬 요소가 여러 비트를 저장하는 방식으로 다이오드, 저항기 또는 축전기 행렬 ROM보다 높은 밀도 저장을 달성한다.
디몬드 링 트랜슬레이터는 벨 연구소의 발명가 토마스 L. 디몬드(Thomas L. Dimond)의 이름을 따서 명명되었으며, 드라이브 펄스를 센스 권선에 결합하는 변압기 역할을 하는 대형 페라이트 링 시퀀스를 통해 와이어가 연결된다.[23][24] 1940년대 초에 발명된 디몬드 링 트랜슬레이터는 #5 크로스바 스위치와 TXE 전화 교환기에 사용되었다. 디몬드 링은 나중에 변압기 결합 또는 "코어 로프" 메모리의 대부분의 형태의 기반이 되었다.
코어로프 메모리, 또는 와이어 브레이드 메모리라고도 불리며[25], 크기, 무게 및 비용이 중요한 곳에서 사용되는 페라이트 코어를 통해 구동 라인을 감지 라인에 결합한다. 코어 로프는 코어당 여러 비트의 ROM을 저장하며(일반적인 읽기/쓰기 코어 메모리와 달리) 페라이트 변압기 코어 안팎으로 "워드 라인 와이어"를 엮어서 프로그래밍되었다. 코어의 자화가 작동 중에 뒤집히는지 여부에 따라 구분되는 두 가지 다른 종류의 코어 로프 메모리가 있는데, 펄스 변압기 기술과 스위칭 코어 기술로 알려져 있다.[26]
펄스 변압기 기술에서는 구동 라인이 페라이트 코어를 통해 감지 라인에 결합되지만, 코어 자화는 뒤집히지 않으며 이 방법은 자화 히스테리시스 루프에 의존하지 않고 오직 변압기로만 사용한다. 이는 디몬드 링 트랜슬레이터와 동일한 방식으로 작동하며, DEC의 PDP-9 및 PDP-16 컴퓨터, 휴렛 팩커드 9100A 및 9100B 계산기, 왕 계산기 및 기타 여러 기계에 사용되었다.
스위칭 코어 기술은 페라이트 코어의 자화를 실제로 뒤집는다. 이는 디몬드 링 트랜슬레이터의 작동 방식과 상당히 다르다. 이 기술은 NASA/MIT의 아폴로 우주선 컴퓨터에 사용되었다.[27]
유도 결합 인쇄 회로 기판 메모리는 유도 결합을 사용하지만 페라이트 코어는 사용하지 않고, 인쇄 회로 기판의 분리된 평면에서 구동 라인과 감지 라인 사이를 결합한다. 이는 디몬드 링 트랜슬레이터와 동일한 원리로 작동하며, 휴렛 팩커드 9100A 및 9100B 계산기의 주 제어 저장소(마이크로명령어 디코더에 사용되는 펄스 변압기 코어 로프 메모리와 함께)에 사용되었다.[28]
속도
RAM과 ROM의 상대적인 속도는 시간이 지남에 따라 다양했지만, 2007년 기준[update] 현재 대형 RAM 칩은 대부분의 ROM보다 빠르게 읽을 수 있다. 이러한 이유(및 균일한 접근을 허용하기 위해)로 ROM 내용은 첫 사용 전에 RAM으로 복사되거나 쉐도우되며, 이후 RAM에서 읽힌다.
쓰기
전기적으로 수정할 수 있는 ROM 유형의 경우, 쓰기 속도는 전통적으로 읽기 속도보다 훨씬 느렸으며, 일반적으로 높은 전압, 쓰기 활성화 신호를 적용하기 위한 점퍼 플러그 이동, 그리고 특별한 잠금/잠금 해제 명령 코드가 필요할 수 있다. 현대 낸드 플래시는 SSD에서 10 GB/초에 달하는 속도로 모든 재기록 가능한 ROM 기술 중 가장 빠른 쓰기 속도를 달성할 수 있다. 이는 소비자 및 기업용 솔리드 스테이트 드라이브와 고성능 모바일 장치용 플래시 메모리 제품에 대한 투자 증가 덕분이다. 기술적으로 이러한 이점은 컨트롤러 설계와 저장 장치 모두에서 병렬성을 높이고, 대용량 DRAM 읽기/쓰기 캐시를 사용하며, 하나 이상의 비트(DLC, TLC 및 MLC)를 저장할 수 있는 메모리 셀을 구현함으로써 달성되었다. 후자의 접근 방식은 오류 발생 가능성이 더 높지만, 이는 오버프로비저닝(제품에 여분의 용량을 포함하여 드라이브 컨트롤러에만 표시되도록 함)과 드라이브 펌웨어의 점점 더 정교한 읽기/쓰기 알고리즘을 통해 대부분 완화되었다.
내구성과 데이터 보존
EPROM
재기록 가능한 ROM은 전기 절연층을 통해 플로팅 트랜지스터 게이트로 전자를 강제로 통과시켜 기록되므로, 절연체가 영구적으로 손상되기 전까지 제한된 수의 쓰기 및 지우기 주기만 견딜 수 있다. 초기 EPROM에서는 1,000회 미만의 쓰기 주기 후에도 이러한 현상이 발생할 수 있었지만, 최신 플래시 EEPROM에서는 내구성이 1,000,000회를 초과할 수 있다. 제한된 내구성뿐만 아니라 비트당 높은 비용은 플래시 기반 저장 장치가 가까운 미래에 자기 디스크 드라이브를 완전히 대체하기는 어려울 것임을 의미한다.
ROM이 정확하게 읽을 수 있는 기간은 쓰기 주기에 의해 제한되지 않는다. EPROM, EAROM, EEPROM 및 플래시의 데이터 보존은 메모리 셀 트랜지스터의 플로팅 게이트에서 전하가 누설되는 것에 의해 시간 제한이 있을 수 있다. 1980년대 중반 초기 EEPROM은 일반적으로 5년 또는 6년의 데이터 보존 기간을 언급했다. 2020년에 제공되는 EEPROM에 대한 검토는 제조업체가 100년의 데이터 보존 기간을 언급하고 있음을 보여준다. 불리한 환경은 보존 시간을 단축시킨다(누설은 고온 또는 방사선에 의해 가속된다). 마스크 롬 및 퓨즈/안티퓨즈 PROM은 이러한 영향에 시달리지 않는다. 왜냐하면 그들의 데이터 보존은 집적 회로의 전기적 영속성보다는 물리적 영속성에 의존하기 때문이다. 비록 퓨즈 재성장은 한때 일부 시스템에서 문제였다.[29]
ROM 칩의 내용은 특수 하드웨어 장치와 관련 제어 소프트웨어로 추출할 수 있다. 이러한 관행은 주로 오래된 비디오 게임 콘솔카트리지의 내용을 읽는 데 일반적이다. 또 다른 예는 오래된 컴퓨터 또는 기타 장치의 펌웨어/OS ROM을 백업하는 것이다. 이는 보존 목적으로 사용된다. 많은 경우, 원래 칩은 PROM이며 따라서 사용 가능한 데이터 수명을 초과할 위험이 있기 때문이다.
결과로 생성된 메모리 덤프 파일은 롬 이미지 또는 줄여서 ROM이라고 불리며, 이를 사용하여 중복 ROM을 생성할 수 있다. 예를 들어 새 카트리지를 만들거나 콘솔 에뮬레이터에서 재생하기 위한 디지털 파일로 사용할 수 있다. 롬 이미지라는 용어는 대부분의 콘솔 게임이 ROM 칩이 포함된 카트리지로 배포되었을 때 유래했지만, CD-ROM 또는 기타 광학 매체로 배포되는 최신 게임 이미지에도 여전히 적용될 정도로 널리 사용되었다.
상업용 게임, 펌웨어 등의 롬 이미지는 일반적으로 저작권이 있는 소프트웨어를 포함한다. 저작권이 있는 소프트웨어의 무단 복사 및 배포는 많은 관할 구역에서 저작권 법을 위반하는 행위이지만, 백업 목적으로 복사하는 것은 지역에 따라 공정 이용으로 간주될 수 있다. 어쨌든 보존/공유 목적으로 이러한 소프트웨어를 배포하고 거래하는 활발한 커뮤니티가 존재한다.
↑See chapters on "Combinatorial Digital Circuits" and "Sequential Digital Circuits" in Millman & Grable, Microelectronics, 2nd ed.
↑In fact, both of these video adapters use different parts of the same mask ROM IC for their bitmap fonts. The ROM contains a font with 8x14-dot characters for the MDA and two fonts with 8x8-dot characters for the CGA. (The CGA in either of its graphics modes can also display text in any custom font defined and rendered by software.)
↑ 가나다라마Skorobogatov, Sergei P. (April 2005). Semi-invasive attacks – A new approach to hardware security analysis (보고서). Computer Laboratory, University of Cambridge. doi:10.48456/tr-630.
↑Dimond, T.L. (February 1951). 《No. 5 crossbar AMA translator》(PDF). 《Bell Laboratories Record》 XXIX. 62 ff쪽. 2024년 8월 26일에 확인함.
↑USA 2,614,176, T.L Dimond, "Electronic Induction Number Group Translator", issued October 14, 1952, assigned to Bell Telephone Laboratories, Incorporated