KR100284975B1 - 플래시 메모리가 주 메모리를 보충하도록 하는 메모리 관리자 - Google Patents
플래시 메모리가 주 메모리를 보충하도록 하는 메모리 관리자 Download PDFInfo
- Publication number
- KR100284975B1 KR100284975B1 KR1019980704963A KR19980704963A KR100284975B1 KR 100284975 B1 KR100284975 B1 KR 100284975B1 KR 1019980704963 A KR1019980704963 A KR 1019980704963A KR 19980704963 A KR19980704963 A KR 19980704963A KR 100284975 B1 KR100284975 B1 KR 100284975B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- main memory
- write
- program
- read
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 253
- 238000000034 method Methods 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 30
- 230000004224 protection Effects 0.000 claims description 6
- 239000013589 supplement Substances 0.000 claims description 5
- 238000013519 translation Methods 0.000 claims description 2
- 230000002265 prevention Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 abstract description 2
- 238000003491 array Methods 0.000 description 7
- 230000007787 long-term memory Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000126 substance Substances 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 208000027418 Wounds and injury Diseases 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 229910052814 silicon oxide Inorganic materials 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
- Storage Device Security (AREA)
Abstract
비휘발성 메모리 어레이로부터 응용 프로그램을 실행하는 동안 비휘발성 메모리 어레이에 기록 시도를 검출하는 회로, 비휘발성 메모리 어레이에 기록 시도가 번지 지정되는 부분을 둘러싸는 응용 프로그램의 일부분을 판독하고 그 응용 프로그램의 일부분을 주 메모리에 기록하기 위해 비휘발성 메모리 어레이에 기록 시도검출에 대해 응답하는 컴퓨터 구현 프로세스, 및 응용 프로그램의 일부분이 주 메모리로부터 판독, 기록, 및 실행되도록 하기 위해 주 메모리에 기록된 응용 프로그램의 일부분에 대해 정보를 저장하는 데이터 구조를 개정하는 컴퓨터 구현 프로세스.
Description
최근, 플래시 전기적으로 소거가능하고, 프로그램가능한 읽기 전용 메모리(EEPROM) 기억 장치가 장기(long term) 기억 장치의 새로운 형태로서 어레이에서 사용되어 왔다. 플래시 EEPROM 메모리 어레이는 개개의 셀에 액세스하고 그 셀들의 메모리 트랜지스터를 서로 다른 메모리 상태로 두는 회로를 가진 전형적인 열과 행 방식의 메모리 셀로서 배열된 수많은 부동 게이트 금속 산화 실리콘 전계 효과 트랜지스터 소자로 구성되어 있다. 그러한 메모리 트랜지스터는 부동 게이트에 전하를 축적함으로서 프로그램될 수 있다. 이러한 전하는 전원이 어레이에서 제거될 때에도 지속된다. 이러한 전하(통상, "0" 또는 프로그램된 상태) 또는 부재("1" 또는 소거 상태)는 소자가 판독될 때에 검출될 수 있다.
수정 내용이 시스템 구성 요소에 재프로그램되도록 하기 위해 시스템으로부터 제거되어야 하는 많은 종래 EPROM 보다 BIOS에 대해 상당한 장점을 제공한다. 더욱 최근에, 플래시 메모리는 전기-기계적 하드 디스크 드라이브보다 더 작고 가벼우면서도 같은 기능을 제공하기 위해 사용되었다. 플래시 메모리는 더 고속으로 읽히고 전기-기계적 하드 디스크 드라이브만큼 물리적 상처에 민감하지 않기 때문에 이러한 목적에 유용하다. 게다가,플래시 메모리는 재생 주기를 필요로 하지 않으며 그와 같은 사이클에 전력이나 시간을 소모하지 않는다. 플래시 하드 드라이브는 공간이 한정되어 있고 무게가 매우 중요시되는 휴대용 컴퓨터에서 특히 유용하다.
일반적으로, 플래시 EEPROM 메모리 어레이는 메모리 셀의 블록으로 나누어진다. 각 블록은 그 메모리 셀이 동시에 소거되도록 하기 위해 접속된다. 그 후, 메모리 셀은 데이터를 저장하기 위해 개별적으로 프로그램된다. 어레이 블록의 모든 메모리 트랜지스터는 모두 소거될 수 있게 결합되므로, 프로그램된 상태의 셀은 어레이의 모든 블록이 소거될 때까지 소거상태로 전환될 수 없다. 그와 같이, 전기-기계적 하드 디스크 드라이브가 통상 정보를 디스크의 제 1 영역에 저장하고 정보가 바뀔 때 디스크의 같은 영역에 다시 쓰지만, 이것은 플래시 EEPROM 메모리 어레이에서는 무효 정보와 함께 블록내에 존재하는 모든 유효 정보를 소거하지 않고는 불가능하다.
결국, 종래 기술의 플래시 메모리 배열에서, 데이터 엔트리의 정보가 바뀔 때 그 새로운 정보는 기존 데이터 영역위에 쓰여지기보다는 새로운 메모리 영역에 쓰여진다; 기존 데이터는 무효한 것으로 표시된다. 그리고 나서, 블록의 충분한 부분이 무효로 표시된 후에, 전체 블록은 블록내의 모든 유효 정보가 새로운 메모리 영역에 쓰여진 후에라야만 소거될 수 있다.
일반적으로, 플래시 메모리는 다이내믹 랜덤 액세스 메모리(DRAM)과 같은 속도로, 그리고 열 및 행 어레이로의 액세스가 회전 디스크보다 더 빠르기 때문에 전기-기계적 하드 디스크보다 더 고속으로 읽혀질 수 있다. 그러나, 플래시 소자에 쓰는 데 필요한 전하 레벨이 훨씬 더 크기 때문에, 플래시 메모리의 빈 블록에 쓰는 것조차 DRAM에 쓰는 것보다 다소 긴 시간을 필요로 한다. 게다가, 변경된 데이터는 플래시 메모리 블록내의 무효 데이터위에 직접 쓰여지지 않고 새로운 영역에 쓰여져야 하기 때문에, 기존 데이터는 무효화되고, 무효 데이터를 가진 블록은 결국 소거되며, 플래시 메모리에 쓰는 평균 시간은 DRAM에 쓰는 시간보다 더 길다.
그와 같이, 플래시 메모리가 컴퓨터 시스템에서 많은 목적으로 사용되었지만, 플래시 메모리나 비휘발성 메모리의 몇몇 다른 형태도 주 메모리를 보충하기 위해서는 사용되지 않았다. 이러한 비휘발성 메모리에 대한 쓰기 시간은 너무 길어서 주 메모리의 일부로서 그러한 메모리를 사용할 수 없다고 여겨져 왔다.
그러나, 비휘발성 메모리가 다양한 문제점을 나타내지만, 주 메모리를 보충하기 위해 비휘발성 메모리 어레이를 사용하는 많은 이유가 있다. 메모리 버스상의 비휘발성 메모리는 프로그램을 저장해서, 전원이 시스템에서 제거될 때에도 프로그램이 손실되지 않는다. 그와 같이, 그 프로그램은 메모리에 복사될 필요없이 전원이 인가될 때 메모리에서 실행가능하다. 응용 프로그램 및 다른 프로세스도 비휘발성 메모리에 저장되고 비휘발성 메모리로부터 직접 수행될 것이다. 그렇게 되면, 장기 메모리와 주 메모리 사이의 그러한 응용 프로그램의 전송을 없애게 됨으로서 대부분의 페이지 스와핑(swapping) 및 주 메모리내의 사용가능한 제한 공간의 정체에 의해 수반되는 속도 감소를 완화할 것이다. 그것은 또한 응용 프로그램들이 호출될 때 그것들을 더 빨리 실행되게 할 것이다.
응용 프로그램을 저장하는 비휘발성 메모리를 메모리 버스상에 두는 것은 간단하게 보일는 지도 모른다. 예를 들어, 그러한 메모리에 기록은 DRAM에의 기록보다 느릴 것이지만, 응용 프로그램의 프로세스는 응용 프로그램이 비휘발성 메모리로부터 실행되도록 하기 위해 판독 전용의 필요성만 있는 듯 할 수도 있다. 그러나, 몇몇 응용 프로그램은 그들의 코드내에 위치한 데이터 구조 및 변수를 정립하고 수정한다. 다른 프로그램은 수정이 일어날 때 수정이 쓰여져야 할 자기 수정 부호를 포함한다. 데이터가 메모리 버스의 동작에 뒤지지 않도록 충분한 속도로 메모리에 기록될 수 없다고 가정하면, 프로그램이 비휘발성 메모리 어레이로부터 실행될 수 있도록 하기 위해 그러한 응용 프로그램을 저장하는 메모리를 메모리 버스에 배치시키는 것은 불가능한 것 같을 것이다.
동작하는 동안 기록되야 할 부분을 포함하는 다른 프로세스 및 응용 프로그램이 비휘발성 메모리 어레이로부터 실행되도록 저장함으로서, 컴퓨터 시스템의 주 메모리를 보충하기 위해 비휘발성 메모리를 사용할 수 있다는 것은 바람직하다.
발명의 개요
따라서, 본 발명의 목적은 비휘발성 메모리로부터 실행될 프로세스 및 프로그램을 저장하기 위해 컴퓨터의 메모리 버스에 위치한 비휘발성 메모리 어레이를 사용하는 방법 및 장치를 제공하는 것이다.
본 발명의 이러한 목적은 비휘발성 메모리로부터 응용 프로그램을 실행하는 동안 비휘발성 메모리에 기록 시도를 검출하는 회로, 비휘발성 메모리에 기록 시도가 번지화되는 부분을 둘러싸는 응용 프로그램 부분을 판독하고 그 응용 프로그램 부분을 주 메모리에 기록하기 위해 비휘발성 메모리에 기록 시도의 검출에 대해 응답하는 컴퓨터 구현 프로세스, 및 응용 프로그램 부분이 주 메모리로부터 판독, 기록, 실행될 수 있도록 주 메모리에 쓰여진 응용 프로그램 부분에 대해 정보를 저장하는 데이터 구조를 수정하는 컴퓨터 구현 프로세스를 포함하는 장치 및 방법에 의해 실현된다.
발명의 이러한 목적과 특징은 첨부 도면과 함께 상세 설명으로 더 잘 이해될 것이며, 도면에서 같은 요소는 같은 번호로 도시된다.
본 발명은 컴퓨터 시스템 및, 더욱 특히 컴퓨터에서 주 메모리 보충으로서 플래시 EEPROM 트랜지스터 소자와 같은 비휘발성의 메모리 어레이를 사용하는 방법 및 장치에 관한 것이다.
도 1은 본 발명에 따라서 설계된 컴퓨터 시스템의 블록 다이어그램이다.
도 2는 종래 기술에 따라서 배열된 플래시 EEPROM 메모리의 블록 다이어그램이다.
도 3은 발명에 따라서 방법을 도시하는 흐름도이다.
주석
다음의 상세 설명의 몇몇 부분은 컴퓨터 메모리내의 데이터 비트에 대한 오퍼레이션을 상징적으로 표현하는 차원에서 도시된다. 이러한 설명 및 표현은 데이터 처리 기술 종사자들이 그 기술의 본질을 다른 관련 기술 종사자들에게 가장 효과적으로 전달하기 위해 사용하는 수단이다. 오퍼레이션은 물리적 양의 물리적 조작을 요구하는 것들이다. 보통, 반드시는 아니지만, 이러한 양은 저장, 전송, 결합, 비교, 및 그렇지 않다면 조작될 수 있는 전기적 또는 자기 신호의 형태를 취한다. 일반적인 사용에서, 이러한 신호를 비트(bits), 값(value), 요소(element), 수(numbers) 등으로 언급하는 것이 때때로 편리하다는 것이 입증되었다. 그러나, 이와 같거나 유사한 모든 용어는 적절한 물리적 양과 관련이 있으며 단지 이러한 양에 적용되는 편리한 레이블(lable)에 불과하다는 것을 명심해야 한다.
더 나아가, 수행된 조작은 더하거나 비교하는 것과 같은 용어로 종종 기술되며, 이러한 것들은 사람 오퍼레이터가 행하는 정신적 오퍼레이션과 일반적으로 관련된다. 사람 오퍼레이터의 어떤 능력도 대부분의 경우에 본 발명의 일부를 구성하는 여기 기술된 오퍼레이션의 어디에도 필요하거나 바람직하지 않다;오퍼레이션은 기계 오퍼레이션이다. 본 발명의 오퍼레이션을 행하는 유용한 머신은 일반 목적의 디지털 컴퓨터 또는 다른 유사한 장치를 포함한다. 모든 경우에 있어서, 컴퓨터를 작동할 때의 오퍼레이션 방식과 계산 그 자체의 방식과의 차이를 명심해야 한다. 본 발명은 다른 원하는 물리적 신호를 발생시키기 위해서 전기적 또는 다른(예를 들면 기계적, 화학적)물리적 신호를 처리할 때 컴퓨터를 작동하는 방법 및 장치에 관한 것이다.
도 1을 참조하면, 본 발명의 일 실시예에 따라 구성된 컴퓨터 시스템(10)이 도시되어 있다. 도시된 시스템(10)은 시스템(10)의 오퍼레이션을 제어하기 위해 제공된 다양한 명령을 실행하는 중앙 처리 장치(11)를 포함한다. 중앙 처리 장치(11)는 통상 프로세스 버스에 의해 시스템(10)의 다양한 요소사이에서 정보를 전달하도록 조절된 입/출력 버스(12)로의 액세스를 제어하는 브리지 회로(14)에 접속되어 있다. 도 1에서, 버스(12)는 주변 요소 상호 액세스 버스이거나 특히 데이터의 고속 전송을 제공하도록 조절된 다른 로컬 버스인 것이 바람직하다. 이 버스는 예시 목적으로 도 1에서 선택된다. 전형적인 시스템(10)에서, 다양한 입/출력 장치가 버스 마스터 및 버스 슬레이브 회로로서 버스(12)에 접속된다. 예를 들면, 본 도면에서 장기 메모리(15)는 버스 슬레이브 회로로서 PCI 버스에 접속될 수 있다. 사운드 보드, 프레임 버퍼 등과 같은 다른 입/출력 장치도 또한 버스(12)에 접속될 수 있다.
브리지 회로(14)는 메모는 버스(16)에 의해 주 메모리(13)에 또한 접속된다. 주 메모리(13)는 전원이 시스템(10)에 제공되는 기간 동안 정보를 저장하기 위해 해당 기술 종사자들에게는 익숙한 방식으로 배열된 다이내믹 랜덤 액세스 메모리(DRAM)으로 구성되어 있다. 본 발명에서, 본 발명에 따라서 설계된 비휘발성 메모리 어레이(17)는 주 메모리(13)와 함께 메모리 버스(16)상에 위치한다.
도 2는 다양한 종래 기술 시스템에서 장기 메모리로서 사용되어 온 플래시 EEPROM 메모리 어레이(17)의 블록 다이어그램이다. 어레이(17)에 대한 추후 설명은 왜 그러한 비휘발성 메모리 어레이를 주 메모리 버스상에 위치시키는 것이 불가능하게 여겨졌던지를 기술할 것이다.
메모리 어레이(17)는 수많은 블록(20)으로 나누어지고, 그 각각은 독립적으로 소거된다. 메모리 어레이(17)는 이러한 블록 각각(20)은 논리적인 열과 행 배열로 결합된 플래시 메모리 소자를 포함한다. 어떤 특별한 소자도 데이터가 다이내믹 랜덤 액세스 메모리(DRAM)에 액세스되는 방식으로 그 열과 행을 선택함으로서 액세스된다. 어레이(17)의 블록에 대한 액세스는 명령을 수신하고, 어레이가 수신된 명령을 실행하도록 적절한 상태에 있도록 하고, 그리고 명령을 수행하는(통상 다양한 상태 머신을 통해서) 명령 사용자 인터페이스(22)를 통해서 이루어진다.
해당 기술 종사자들에게는 익숙한 바와 같이, 플래시 메모리 어레이는 DRAM이나 다른 메모리와 같은 방식으로 기록되지 않는다. DRAM이나 자기 기억 장치 형태가 기록될 때, 기록되는 모든 비트 상태는 필수적으로 함께 변한다. 플래시 메모리는 수정된 데이터가 블록내의 소거된 공간에 기록되도록, 다시 기록되기 전에 소거되어져야 한다. 한 워드 또는 한 바이트의 플래시 메모리가 기록될 때 부동 게이트를 충전하기 위한 전류 조건은 매우 높아서, 소자는 종종 소자가 적절한 충전 상태에 이르기까지 계속해서 펄스화된다. 유사하게, 플래시 소자의 부동 게이트를 방전시키기 위해서는 훨씬 더 많은 전류가 필요한데, 왜냐하면 그 충전량이 더 크고 제 1쓰기 단계 전에 필요한 소거 프로세스가 모든 플래시 소자를 충전 상태로 만들고 나서 큰 전위차를 이용해서 모든 소자를 방전시키기 때문이다. 관련 기술 종사자들에게는 명확한 바와 같이, 플래시 메모리 어레이에 사용되는 기록 및 소거의 각 단계에 포함되는 시간은 주 메모리에 사용되는 전형적인 DRAM 메모리와 비교해서 플래시 EEPROM 메모리 어레이에 기록을 매우 느리게 한다. 이러한 이유로, 플래시 메모리는 잦은 기록 갱신 동작을 포함하는 기억 장치에 적합하지 않다고 간주되어 왔다.
그러나, DRAM에 대한 기록 및 소거 시간에 비교해서 기록 및 소거 시간이 길지만, 주 메모리를 보충하기 위해 비휘발성 메모리를 사용하는 많은 이유가 있다. 그렇게 하는 하나의 주된 이유는 더 많은 공간을 주 메모리내에서 사용가능하게 하는 것이다. 다른 이유는 장기 메모리와 주 메모리사이에서 특정 용도의 프로그램의 전송을 제거함으로서 주 메모리내 사용가능한 제한된 공간의 정체를 처리하는 데 필요한 속도 저하 및 페이지 스와핑을 완화하는 것이다. 만약 비휘발성 메모리 어레이가 주 메모리의 DRAM만큼 빨리 읽혀지도록 메모리 버스에 위치하게 된다면, 그리고 응용 프로그램이 비휘발성 메모리 내에 놓여져 실행가능해진다면, 그 응용 프로그램은 장기 메모리로부터 호출되어 실행을 위해 주 메모리에 놓여질 필요도 없을 것이다. 이렇게 해서, 주 메모리에는 다른 목적을 위한 더 많은 공간이 남게 된다. 큰 응용 프로그램을 실행하는 데 통상 필요한 주 메모리 페이지 스와핑은 비휘발성 메모리에 저장된 응용프로그램을 위해 필수적으로 제거될 지도 모른다. 그러한 모든 응용 프로그램의 모든 프로세스는 비휘발성 메모리에서 가능할 것이며, 프로세서는 이러한 하우스키핑 기능으로 시간을 보내야만 하지 않을 것이다.
상당히 많은 문제점들이 응용 프로그램을 저장하는 플래시 메모리를 메모리 버스상에 두는 것이 관련 기술 종사자들에게 불가능한 듯 하게 했다. 첫째로, 플래시 메모리에 기록은 DRAM에서 보다 현격히 느리기 때문에, 플래시 메모리의 이러한 기록 및 수반되는 소거 동작은 동작하는 동안 플래시 메모리를 메모리 버스에 위치시키면 오퍼레이션의 현격한 동작속도 저하없이는 불가능한 듯 했다. 그러나, 응용 프로그램의 프로세스는 단지 판독될 필요만 있기 때문에, 응용 프로그램은 플래시 메모리로부터 수행될 수 있을 것이다. 데이터를 플래시 메모리에 기록하는 것은 유용할 것 같지만, 그러한 동작은 프로그램을 갱신하는 것과 같은 매우 뜸하게 일어나는 동작에 제한될 것이다.
그러나, 몇몇 응용 프로그램은 데이터 구조 및 프로그램의 코드 세그먼트내에 위치한 변수를 끊임없이 정립하고 수정한다. 다른 프로그램은 응용 프로그램이 실행되면서 변하는 자기 수정 코드를 사용한다. 데이터는 충분한 속도로 플래시 메모리에 끊임없이 기록될 수 없기 때문에, 그러한 응용 프로그램을 저장하는 플래시 메모리를 메모리 버스상에 위치시키고 플래시 메모리 어레이로부터 응용 프로그램을 수행하는 것이 불가능한 것 같을 것이다.
본 발명은 응용 프로그램 및 응용 프로그램이 실행되는 동안 데이터가 그 코드 부분에 쓰여지도록 하는 프로세스를 컴퓨터 시스템의 메모리 버스상에 위치한 플래시 EEPROM 또는 다른 비휘발성 메모리 어레이에 저장 및 플래시 메모리 어레이로부터 수행되게 한다. 이것은 본 발명에서 많은 독특한 오퍼레이션을 이루기 위해 운영 시스템에 의해 제어되는 메모리 관리 유닛(MMU)를 사용함으로서 이루어진다. 통상 메모리 관리 유닛은 가상 메모리의 어드레싱을 허용하는 운영 시스템에 의해 사용되도록 설계된다. 가상 메모리 어드레싱은 데이터가 저장될 때마다 가상 어드레스를 데이터에 할당함으로서 그리고 데이터가 실제로 액세스될 때 그러한 가상 메모리를 물리적 어드레스로 변환함으로서 주 메모리에서 가능한 것보다 훨씬 더 많은 메모리로의 액세스를 제공한다. 메모리 관리 유닛은 응용 프로그램이 액세스하는 페이지 테이블을 제어하고 그러한 테이블을 사용해서 가상 및 물리적 메모리사이의 변환을 제공한다.
주 메모리에서 사용가능한 어드레스보다 훨씬 더 많은 메모리 어드레스가 가상 메모리 시스템에서 제공된다. 메모리 어드레스는 응용 프로그램이 시스템 구성요소에 직접 어드레스하도록 하기위해 운영 시스템의 메모리 관리자에 의해 시스템의 다른 구성 요소로 할당될 수 있다. 가장 최신의 운영 시스템은 이러한 어드레스가 컴퓨터 시스템의 입/출력 구성요소에 할당되도록 하지 않는데, 왜냐하면 만약 그러한 어드레스가 할당이 된다면, 응용 프로그램은 이런 장치를 사용해서 그와 같은 입/출력 장치에 직접 기록함으로서 운영 시스템이 제공하기로 되어 있는 많은 보호 및 대부분의 기밀 보호를 못하게 될 수도 있기 때문이다.
그러나, 운영 시스템은 이러한 어드레스를 메모리상의 부가 메모리와 같은 운영 시스템을 통과하는 데 문제가 없는 어떤 구성 요소로 할당할 수 있다. 따라서, 비휘발성 메모리 어레이가 시스템에 처음 배치될 때, 메모리 어드레스의 일부는 비휘발성 메모리 어레이에 할당된다. 어떤 프로그램이나 프로세스가 비휘발성 메모리 어레이에 기록될 때, 프로그램이 저장되는 메모리 어드레스의 일부분의 특별한 어드레스는 그 프로그램에 할당된다.
일단 할당되면, 운영 시스템, 특히 그 시스템의 메모리 관리 부분은 이것들이 비휘발성 메모리 어레이 어드레스이고 이러한 어드레스가 그 프로그램에 할당되어 있다는 것을 알 것이다.
어떤 형태의 입력 신호(오퍼레이터 키보드 입력과 같은)를 통해서 메모리상의 비휘발성 메모리 어레이에 저장된 실행가능한 프로그램을 실행하려는 시도가 이루어질 때, 운영 시스템은 드라이버의 디렉토리 구조로부터 이 프로그램이 메모리 어드레스가 할당된 플래시 메모리 어레이에 존재하는 지를 결정할 수 있어야 한다. 그와 같이, 프로그램이 처음으로 운영 시스템에 의해 호출될 때, 운영 시스템은 그 콜을 보통 트랩하고, 그 응용 프로그램으로의 패스를 찾아, 메모리 관리 유닛이 그 작업을 적절한 파일로 보낼 수 있도록 하기 위해 그 프로그램과 관련된 어드레스를 메모리 관리 유닛에 의해 제어되는 페이지 테이블에 배치한다. 이런 방식으로 페이지 테이블을 갱신함으로서, 운영 시스템의 메모리 관리 프로세스는 어떤 액세스가 시도될 때 플래시 및 DRAM 메모리내의 정확한 어드레스가 확실히 액세스될 수 있게 한다.
운영 시스템의 로더(loader) 부분은 플래시 메모리 어레이에서 실행가능한 파일을 찾기 위해 어드레스 정보를 사용한다. 로더는 프로그램의 실행 시작을 기대하는 어드레스를 결정하고, 프로그램을 위해 스택 세그먼트 크기를 결정하며, 그리고 그 프로그램을 위해 데이터 세그먼트 크기를 결정하기 위해 프로그램 코드의 표제를 읽는다. 로더는 DRAM 메모리 내에 스택 및 데이터 세그먼트를 만들기 위해 이러한 정보를 사용한다. 그러나, 로더는 코드 세그먼트 어드레스를 플래시 메모리
어레이 내의 프로그램에 할당된 메모리 어드레스 상태로 둔다. 로더는 응용 프로그램이 판독/실행 전용과 같은 실행가능 응용 프로그램을 위해 기술어 테이블에서 또한 기술되도록 한다.
응용 프로그램이 판독/실행 전용과 같은 실행가능 응용 프로그램을 위해 기술어 테이블에서 또한 기술되므로, 만약 응용 프로그램이 실행하는 동안 비휘발성 메모리 어레이에 기록하고자 한다면, 예외가 발생한다. 예외 처리기는 중앙 처리 장치에 의해 실행된다. 예외 처리기는 플래시 메모리로부터 기록 액세스 시도에 의해 번지 지정된 코드의 일부를 판독하고 그 코드의 일부를 주 메모리의 DRAM 부분으로 복사한다. 일 실시예에서, 복사된 부분은 인터럽트를 초래한 기록이 번지 지정되는 코드를 포함하는 페이지(통상 4 키로바이트)이다.
이렇게 하기 위해서는, 아마 메모리 관리자가 DRAM 주 메모리내의 일부분의 데이터를 운영 시스템이 특정한 가상 메모리 시스템에서 주 메모리와 장기 메모리사이에 데이터를 할당하기 위해 사용하는 어떠한 할당 알고리즘이라도 사용해서 장기 메모리로 스왑하는 것이 필요할 것이다. 그 후 메모리 관리자는 이러한 변경을 반영하기 위해 페이지 테이블을 갱신한다.
일단 기록 액세스 시도에 의해 번지 지정된 페이지가 DRAM에 기록되면, 응용 프로그램을 위한 기술어 테이블은 판독/기록/실행과 같은 페이지를 정의하도록 표시된다;그리고 그 프로그램은 예외를 발생시킨 명령에서 다시 시작된다. 이 시점부터는 계속, 응용 프로그램 일부에 대한 어드레스가 그것을 주 메모리의 DRAM 부분에 배치하고 기술어 테이블은 그 부분이 기록될 수 있다는 것을 보여주므로, 응용 프로그램은 이전에 판독/실행 전용이던 코드의 일부에 기록할 수 있다. 프로그램 일부의 속성이 판독, 기록, 실행되도록 바뀌었으므로, 프로그램 일부의 데이터는 그것이 데이터 구조이던 변수이던 또는 자기 수정 코드이던지 간에 주 메모리 내의 페이지에 기록함으로서 수정될 수 있다.
프로그램이 실행되면서, 다양한 파일이 비휘발성 메모리 어레이에서 액세스되고 실행된다. 프로그램이 DRAM의 일부에 액세스를 시도할 때, 페이지 테이블에서 결정된 어드레스는 그 액세스를 플래시 메모리보다는 DRAM에 적당히 번지 지정을 할 것이다. 이런 방식으로, 메모리 버스상에 위치한 비휘발성 메모리 어레이에 저장된 어떤 프로그램이나 프로세스는 그 프로그램이나 프로세스가 오퍼레이션동안 기록되는 영역을 포함함에도 불구하고 실행된다.
본 발명이 바람직한 실시예의 측면에서 기술되었지만, 해당 기술 종사자들이 본 발명의 취지와 범위를 거스르지 않고 다양한 수정이나 변경이 가능하다고 이해되어야 할 것이다. 그러므로, 발명은 다음의 청구 범위의 측면에서 부합되어야 한다.
Claims (20)
- 프로그램의 코드 섹션이 저장되는 메모리 일부에 기록하는 프로그램을 컴퓨터 시스템의 메모리 버스에 접속된 비휘발성 메모리로부터 직접 실행시키는 방법에 있어서,비휘발성 메모리로부터 프로그램을 수행하는 동안 비휘발성 메모리에 기록 시도를 검출하는 단계,비휘발성 메모리에 기록 시도가 번지 지정되는 부분을 둘러싸는 비휘발성 메모리로부터 프로그램의 일부분을 판독함으로서 비휘발성 메모리에 기록 시도 검출에 응답하는 단계,프로그램의 일부분을 주 메모리에 기록하는 단계, 및프로그램의 일부분에 대한 액세스가 판독, 기록, 실행하는 주 메모리에서 이루어질 수 있도록 주 메모리에 기록되는 프로그램 일부분에 관한 정보를 저장하는 데이터 구조를 개정하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서, 비휘발성 메모리는 플래시 EEPROM 메모리 어레이를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서, 주 메모리에 기록되는 프로그램의 일부분은 메모리 공간의 페이지를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서, 주 메모리에 기록되는 프로그램 일부분에 관한 정보를 저장하는 데이터 구조를 개정하는 단계는,프로그램의 일부분이 주 메모리에서 번지 지정되는 것을 나타내기 위해 페이지 테이블을 개정하는 단계, 및메모리의 페이지가 주 메모리의 프로그램 일부에 대한 판독, 기록, 및 실행의 속성을 나타내도록 기술어 테이블을 세팅하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 1 항에 있어서, 비휘발성 메모리로부터 프로그램을 실행하는 동안 비휘발성 메모리에 기록 시도를 검출하는 단계는,비휘발성 메모리에 기록 시도가 일어날 때 예외를 발생하는 단계, 및예외를 처리하는 프로세스를 호출하는 단계를 포함하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서, 비휘발성 메모리는 플래시 EEPROM 메모리 어레이를 포함하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서, 주 메모리에 기록되는 프로그램의 일부분은 메모리 공간의 페이지를 포함하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서, 주 메모리에 기록되는 프로그램 일부분에 관한 정보를 저장하는 데이터 구조를 개정하는 단계는,프로그램의 일부분이 주 메모리에서 번지 지정되는 것을 나타내기 위해 페이지 테이블을 개정하는 단계, 및메모리의 페이지가 주 메모리의 프로그램 일부에 대한 판독, 기록, 및 실행의 속성을 나타내도록 기술어 테이블을 세팅하는 단계를 포함하는 것을 특징으로 하는 방법.
- 컴퓨터 시스템 프로세서가 판독/기록방지 메모리에 기록 시도를 나타내는 에러에 응답하게 하는 예외 처리 프로세스에 있어서,기록 동작을 가르키는 어드레스를 검출하는 단계,검출된 어드레스를 둘러싸는 판독/기록방지/실행 메모리의 일부분으로부터 내용을 판독하는 단계,검출된 어드레스를 둘러싸는 판독/기록방지/실행 메모리의 일부분으로부터 판독된 내용을 랜덤 액세스(RAM) 주 메모리에 기록하는 단계, 그리고기록할 수 있도록 하기 위해 RAM 주 메모리에 기록된 내용 상태를 개정하는 단계, 및RAM 주 메모리에 기록된 내용에 개정된 어드레스를 제공하는 단계를 포함하는 것을 특징으로 하는 예외 처리 프로세스.
- 제 9 항에 있어서, 검출된 어드레스를 둘러싸는 판독/기록방지/실행 메모리의 일부분으로부터 내용을 판독하는 단계는 검출된 어드레스를 둘러싸는 메모리 페이지를 포함하는 것을 특징으로 하는 예외 처리 프로세스.
- 제 9 항에 있어서, 검출된 어드레스를 둘러싸는 판독/기록방지 메모리의 일부분으로부터 판독된 내용을 RAM 주 메모리에 기록하는 단계는,검출된 어드레스를 둘러싸는 판독/기록방지 메모리의 일부분으로부터 판독된 내용을 저장하기에 충분한 공간이 RAM 주 메모리에 존재하는 지를 결정하는 단계,RAM 주 메모리의 일정량을 검출된 어드레스를 둘러싸는 판독/기록방지 메모리의 일부분으로부터 판독된 내용을 저장하기에 충분한 가상 메모리로 스와핑하는 단계, 및판독/기록방지 메모리의 일부분으로부터 판독된 내용을 RAM 주 메모리로부터 일정량의 스와핑에 의해 제공되는 위치의 RAM 주 메모리에 기록하는 단계를 포함하는 것을 특징으로 하는 예외 처리 프로세스.
- 제 9 항에 있어서, 기록할 수 있도록 하기 위해 RAM 주 메모리에 기록된 내용 상태를 개정하는 단계는 그 내용이 개정된 상태를 반영하도록 기술어 테이블을 갱신하는 단계를 포함하는 것을 특징으로 하는 예외 처리 프로세스.
- 제 9 항에 있어서, RAM 주 메모리에 기록된 내용에 개정된 어드레스를 제공하는 단계는 페이지 테이블을 갱신하는 단계를 포함하는 것을 특징으로 하는 예외 처리 프로세스.
- 제 9 항에 있어서, 판독/기록방지 메모리는 플래시 EEPROM 메모리 어레이를 포함하는 것을 특징으로 하는 예외 처리 프로세스.
- 주 메모리로부터 보통 실행되지만 비휘발성 메모리 어레이로부터 실행되는 프로세스 및 프로그램을 저장함으로서 비휘발성 메모리가 컴퓨터의 메모리 버스에 접속되고 주 메모리를 보충하기 위해 사용되게 하는 프로세스에 있어서,그 프로세스는 메모리 어드레스를 비휘발성 메모리 어레이에 할당하는 단계,기록/실행 전용 프로그램을 비휘발성 메모리에 기록하는 단계,프로그램이 그 프로그램에 주소 변환을 제공하기 위해 실행될 때 메모리 어드레스를 갱신하는 단계,프로그램이 비휘발성 메모리 어레이에 기록 시도를 한다면 판독/실행 메모리에 기록 시도를 나타내는 에러 신호를 발생시키는 단계,기록 시도를 가르키는 어드레스를 검출하는 단계,검출된 어드레스를 둘러싸는 비휘발성 메모리 어레이의 일부분의 내용을 판독하는 단계,검출된 어드레스를 둘러싸는 비휘발성 메모리 어레이의 일부분으로부터 판독된 내용을 주 메모리에 기록하는 단계, 그리고기록할 수 있도록 하기 위해 주 메모리에 기록된 내용 상태를 개정하는 단계, 및주 메모리에 기록된 내용에 개정된 어드레스를 제공하는 단계를 포함하는 것을 특징으로 하는 프로세스.
- 제 15 항에 있어서, 비휘발성 메모리 어레이는 플래시 EEPROM 메모리 어레이를 포함하는 것을 특징으로 하는 프로세스.
- 제 16 항에 있어서, 검출된 어드레스를 둘러싸는 비휘발성 메모리 어레이의 일부분으로부터 데이터를 판독하는 단계는 검출된 어드레스를 둘러싸는 페이지를 판독하는 것을 포함하는 것을 특징으로 하는 프로세스.
- 제 16 항에 있어서, 검출된 어드레스를 둘러싸는 비휘발성 메모리 어레이의 일부분으로부터 판독된 내용을 주 메모리에 기록하는 단계는,검출된 어드레스를 둘러싸는 판독/기록방지 메모리의 일부분으로부터 내용을 저장하기에 충분한 공간이 주 메모리에 존재하는 지를 결정하는 단계,주 메모리의 일정량을 검출된 어드레스를 둘러싸는 비휘발성 메모리의 일부분으로부터 판독된 내용을 저장하기에 충분한 가상 메모리로 스와핑하는 단계, 및비휘발성 메모리 어레이의 일부분으로부터 판독된 내용을 주 메모리로부터 스와핑에 의해 제공되는 위치의 주 메모리에 기록하는 단계를 포함하는 것을 특징으로 하는 프로세스.
- 제 16 항에 있어서, 기록할 수 있도록 하기 위해 주 메모리에 기록된 내용 상태를 개정하는 단계는 그 내용이 개정된 상태를 반영하도록 기술어 테이블을 갱신하는 단계를 포함하는 것을 특징으로 하는 프로세스.
- 제 16 항에 있어서, 주 메모리에 기록된 내용에 개정된 어드레스를 제공하는 단계는 페이지 테이블을 갱신하는 단계를 포함하는 것을 특징으로 하는 프로세스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/578,474 | 1995-12-26 | ||
US08/578,474 US5829013A (en) | 1995-12-26 | 1995-12-26 | Memory manager to allow non-volatile memory to be used to supplement main memory |
PCT/US1996/020498 WO1997023829A1 (en) | 1995-12-26 | 1996-12-23 | Memory manager allowing flash memory to supplement main memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990076836A KR19990076836A (ko) | 1999-10-25 |
KR100284975B1 true KR100284975B1 (ko) | 2001-03-15 |
Family
ID=24313039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980704963A KR100284975B1 (ko) | 1995-12-26 | 1996-12-23 | 플래시 메모리가 주 메모리를 보충하도록 하는 메모리 관리자 |
Country Status (8)
Country | Link |
---|---|
US (2) | US5829013A (ko) |
KR (1) | KR100284975B1 (ko) |
AU (1) | AU1344697A (ko) |
DE (1) | DE19681704B4 (ko) |
GB (1) | GB2323690B (ko) |
HK (1) | HK1016293A1 (ko) |
TW (1) | TW386210B (ko) |
WO (1) | WO1997023829A1 (ko) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829013A (en) * | 1995-12-26 | 1998-10-27 | Intel Corporation | Memory manager to allow non-volatile memory to be used to supplement main memory |
FR2748134B1 (fr) * | 1996-04-30 | 1998-06-26 | Bull Cp8 | Procede et dispositif permettant a un programme fige de pouvoir evoluer |
US6182188B1 (en) * | 1997-04-06 | 2001-01-30 | Intel Corporation | Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
US6311290B1 (en) | 1997-02-14 | 2001-10-30 | Intel Corporation | Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
US6088759A (en) | 1997-04-06 | 2000-07-11 | Intel Corporation | Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
DE19739545C1 (de) * | 1997-09-09 | 1999-01-07 | Siemens Ag | Chipkarte mit Speicher für anwendungsabhängig nachladbare Programme |
JP3812115B2 (ja) * | 1998-01-19 | 2006-08-23 | ブラザー工業株式会社 | 通信システム |
US6278442B1 (en) | 1998-06-26 | 2001-08-21 | Research In Motion Limited | Hand-held electronic device with a keyboard optimized for use with the thumbs |
US6489950B1 (en) * | 1998-06-26 | 2002-12-03 | Research In Motion Limited | Hand-held electronic device with auxiliary input device |
US7705828B2 (en) | 1998-06-26 | 2010-04-27 | Research In Motion Limited | Dual-mode mobile communication device |
US6919879B2 (en) | 1998-06-26 | 2005-07-19 | Research In Motion Limited | Hand-held electronic device with a keyboard optimized for use with the thumbs |
JP2001166993A (ja) * | 1999-12-13 | 2001-06-22 | Hitachi Ltd | 記憶制御装置およびキャッシュメモリの制御方法 |
TW495675B (en) * | 2000-09-14 | 2002-07-21 | Acer Ipull Inc | System for updating program executable being running and the method thereof |
US20020048203A1 (en) * | 2000-10-19 | 2002-04-25 | Findling Patrick M. | Extending total write cycles of non-volatile memory for rolling codes |
CA2363244C (en) * | 2000-11-07 | 2006-06-13 | Research In Motion Limited | Multifunctional keyboard for a mobile communication device and method of operating the same |
US7324949B2 (en) * | 2001-03-26 | 2008-01-29 | Medtronic, Inc. | Implantable medical device management system |
US8019789B2 (en) * | 2001-07-03 | 2011-09-13 | Research In Motion Limited | System and method of object-oriented persistence |
US20030006959A1 (en) * | 2001-07-09 | 2003-01-09 | Marcelo Varanda | Method of operating a handheld device for directional input |
TWI237759B (en) * | 2001-10-04 | 2005-08-11 | Via Tech Inc | Method for data accessing in a computer and the computer thereof |
US7881743B2 (en) * | 2001-10-16 | 2011-02-01 | Research In Motion Limited | Handheld mobile communication device |
US6842169B2 (en) | 2001-10-19 | 2005-01-11 | Research In Motion Limited | Hand-held electronic device with multiple input mode thumbwheel |
ES2374285T3 (es) | 2001-12-21 | 2012-02-15 | Research In Motion Limited | Dispositivo electrónico portátil con teclado. |
US7083342B2 (en) | 2001-12-21 | 2006-08-01 | Griffin Jason T | Keyboard arrangement |
USD479233S1 (en) | 2002-01-08 | 2003-09-02 | Research In Motion Limited | Handheld electronic device |
US6725324B2 (en) * | 2002-04-23 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and apparatus for increasing flash ROM programming performance in a multiple processor computer system |
US20050251305A1 (en) * | 2002-06-03 | 2005-11-10 | Junkei Sato | Electronic control apparatus |
TW588282B (en) * | 2002-10-22 | 2004-05-21 | Via Tech Inc | System capable of managing peripheral input/output control device |
US20040123054A1 (en) * | 2002-12-20 | 2004-06-24 | Gould Geoffrey A. | Portable computing device having a non-volatile memory device adapted to detect when a current memory operation is to be suspended and method therefor |
US20040188720A1 (en) * | 2003-03-25 | 2004-09-30 | Chew Kenneth S. | Bit-cell and method for programming |
CA2428737C (en) | 2003-05-14 | 2006-10-17 | Research In Motion Limited | Mobile device with rotatable keyboard |
US20040242279A1 (en) * | 2003-05-28 | 2004-12-02 | Costanzo Rito Natale | Implementing direct telephone access on a multi-purpose wireless mobile electronic device |
GB2425510A (en) | 2003-12-31 | 2006-11-01 | Research In Motion Ltd | Keyboard arrangement |
US20070254701A1 (en) * | 2004-06-21 | 2007-11-01 | Griffin Jason T | Handheld wireless communication device |
US8064946B2 (en) * | 2004-06-21 | 2011-11-22 | Research In Motion Limited | Handheld wireless communication device |
US7986301B2 (en) * | 2004-06-21 | 2011-07-26 | Research In Motion Limited | Handheld wireless communication device |
US8463315B2 (en) * | 2004-06-21 | 2013-06-11 | Research In Motion Limited | Handheld wireless communication device |
US8219158B2 (en) | 2004-06-21 | 2012-07-10 | Research In Motion Limited | Handheld wireless communication device |
US20070192711A1 (en) | 2006-02-13 | 2007-08-16 | Research In Motion Limited | Method and arrangement for providing a primary actions menu on a handheld communication device |
US8271036B2 (en) | 2004-06-21 | 2012-09-18 | Research In Motion Limited | Handheld wireless communication device |
US20070254721A1 (en) * | 2004-06-21 | 2007-11-01 | Griffin Jason T | Handheld wireless communication device |
US20070254704A1 (en) * | 2004-06-21 | 2007-11-01 | Griffin Jason T | Handheld wireless communication device |
US20070259697A1 (en) * | 2004-06-21 | 2007-11-08 | Griffin Jason T | Handheld wireless communication device |
KR100631782B1 (ko) | 2004-07-27 | 2006-10-11 | 삼성전자주식회사 | 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법및 장치 |
US7439959B2 (en) | 2004-07-30 | 2008-10-21 | Research In Motion Limited | Key arrangement for a keyboard |
US9142369B2 (en) | 2005-03-14 | 2015-09-22 | Qualcomm Incorporated | Stack assembly for implementing keypads on mobile computing devices |
US7525534B2 (en) | 2005-03-14 | 2009-04-28 | Palm, Inc. | Small form-factor keypad for mobile computing devices |
US7389391B2 (en) * | 2005-04-29 | 2008-06-17 | Mediatek, Inc. | Memory disposition methods and systems |
US7930589B2 (en) * | 2005-06-17 | 2011-04-19 | Analog Devices, Inc. | Interrupt-responsive non-volatile memory system and method |
US20070035522A1 (en) * | 2005-08-13 | 2007-02-15 | Michael Yurochko | Lighting and usability features for key structures and keypads on computing devices |
US7275836B2 (en) | 2005-08-13 | 2007-10-02 | Palm, Inc. | Lighting and usability features for key structures and keypads on computing devices |
US8537117B2 (en) | 2006-02-13 | 2013-09-17 | Blackberry Limited | Handheld wireless communication device that selectively generates a menu in response to received commands |
US7770118B2 (en) * | 2006-02-13 | 2010-08-03 | Research In Motion Limited | Navigation tool with audible feedback on a handheld communication device having a full alphabetic keyboard |
US8989822B2 (en) | 2006-09-08 | 2015-03-24 | Qualcomm Incorporated | Keypad assembly for use on a contoured surface of a mobile computing device |
US8185685B2 (en) * | 2007-12-14 | 2012-05-22 | Hitachi Global Storage Technologies Netherlands B.V. | NAND flash module replacement for DRAM module |
TW201009704A (en) * | 2008-08-20 | 2010-03-01 | Incomm Technologies Co Ltd | Memory card and non-volatile memory controller thereof |
TWI370971B (en) * | 2008-08-20 | 2012-08-21 | Incomm Technologies Co Ltd | Memory card and non-volatile memory controller thereof |
US8285970B2 (en) * | 2008-11-06 | 2012-10-09 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
KR100987332B1 (ko) * | 2008-11-07 | 2010-10-18 | 서울대학교산학협력단 | 메모리 구조에 따른 메모리 관리 장치 |
US8584120B2 (en) * | 2009-11-23 | 2013-11-12 | Julian Michael Urbach | Stream-based software application delivery and launching system |
US8350728B2 (en) | 2010-04-23 | 2013-01-08 | Hewlett-Packard Development Company, L.P. | Keyboard with integrated and numeric keypad |
US10114660B2 (en) | 2011-02-22 | 2018-10-30 | Julian Michael Urbach | Software application delivery and launching system |
US9516094B2 (en) * | 2012-05-17 | 2016-12-06 | Microsoft Technology Licensing, Llc | Event-responsive download of portions of streamed applications |
US9256729B2 (en) * | 2013-06-20 | 2016-02-09 | International Business Machines Corporation | Address translation/specification field for hardware accelerator |
US11797459B2 (en) * | 2016-06-17 | 2023-10-24 | Hewlett-Packard Development Company, L.P. | Shared machine-learning data structure |
CN108021392A (zh) * | 2016-11-01 | 2018-05-11 | 中芯国际集成电路制造(上海)有限公司 | 处理器及其操作执行方法 |
WO2020214757A1 (en) | 2019-04-17 | 2020-10-22 | John Rankin | Virtual memory pool within a network which is accessible from multiple platforms |
WO2020243244A1 (en) * | 2019-05-28 | 2020-12-03 | John Rankin | Supporting a virtual memory area at a remote computing machine |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU575182B2 (en) | 1984-06-28 | 1988-07-21 | Wang Laboratories, Inc. | Self extending memory file |
US4758944A (en) | 1984-08-24 | 1988-07-19 | Texas Instruments Incorporated | Method for managing virtual memory to separate active and stable memory blocks |
EP0205692B1 (en) * | 1985-06-18 | 1991-10-16 | International Business Machines Corporation | Improvements in microprocessors |
EP0392895B1 (en) | 1989-04-13 | 1995-12-13 | Sundisk Corporation | Flash EEprom system |
JPH0476681A (ja) * | 1990-07-13 | 1992-03-11 | Mitsubishi Electric Corp | マイクロコンピュータ |
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
JPH06214670A (ja) | 1991-04-29 | 1994-08-05 | Intel Corp | コンピュータ装置およびそれを初期化する方法 |
IT1254937B (it) | 1991-05-06 | 1995-10-11 | Aggiornamento dinamico di memoria non volatile in un sistema informatico | |
DE4215063C2 (de) | 1991-05-10 | 1999-11-25 | Intel Corp | Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher |
GB2256514B (en) * | 1991-05-21 | 1994-11-16 | Digital Equipment Corp | Commitment ordering for guaranteeing serializability across distributed transactions |
US5680570A (en) | 1991-06-12 | 1997-10-21 | Quantum Corporation | Memory system with dynamically allocatable non-volatile storage capability |
GB2256735B (en) | 1991-06-12 | 1995-06-21 | Intel Corp | Non-volatile disk cache |
US5245572A (en) | 1991-07-30 | 1993-09-14 | Intel Corporation | Floating gate nonvolatile memory with reading while writing capability |
US5596738A (en) * | 1992-01-31 | 1997-01-21 | Teac Corporation | Peripheral device control system using changeable firmware in a single flash memory |
US5437020A (en) * | 1992-10-03 | 1995-07-25 | Intel Corporation | Method and circuitry for detecting lost sectors of data in a solid state memory disk |
US5535369A (en) | 1992-10-30 | 1996-07-09 | Intel Corporation | Method for allocating memory in a solid state memory disk |
US5581723A (en) | 1993-02-19 | 1996-12-03 | Intel Corporation | Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5519843A (en) | 1993-03-15 | 1996-05-21 | M-Systems | Flash memory system providing both BIOS and user storage capability |
KR970008188B1 (ko) | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
US5522076A (en) | 1993-05-13 | 1996-05-28 | Kabushiki Kaisha Toshiba | Computer system having BIOS (basic input/output system)-ROM (Read Only Memory) writing function |
US5592641A (en) * | 1993-06-30 | 1997-01-07 | Intel Corporation | Method and device for selectively locking write access to blocks in a memory array using write protect inputs and block enabled status |
JP3310060B2 (ja) * | 1993-09-13 | 2002-07-29 | 株式会社東芝 | 記憶装置および同装置の制御プログラム書換え方法 |
US5715423A (en) | 1994-04-18 | 1998-02-03 | Intel Corporation | Memory device with an internal data transfer circuit |
US5729710A (en) * | 1994-06-22 | 1998-03-17 | International Business Machines Corporation | Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
JP3507132B2 (ja) | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US5533190A (en) | 1994-12-21 | 1996-07-02 | At&T Global Information Solutions Company | Method for maintaining parity-data consistency in a disk array |
US5563828A (en) | 1994-12-27 | 1996-10-08 | Intel Corporation | Method and apparatus for searching for data in multi-bit flash EEPROM memory arrays |
US5671388A (en) | 1995-05-03 | 1997-09-23 | Intel Corporation | Method and apparatus for performing write operations in multi-level cell storage device |
JPH08328762A (ja) | 1995-06-06 | 1996-12-13 | Mitsubishi Electric Corp | 半導体ディスク装置及びそのメモリ管理方法 |
US5673417A (en) * | 1995-07-20 | 1997-09-30 | Inventec Corporation | Electronic organizer with a flash memory and associated data archiving |
US5802549A (en) * | 1995-12-14 | 1998-09-01 | International Business Machines Corporation | Method and apparatus for patching pages of ROM |
US5829013A (en) * | 1995-12-26 | 1998-10-27 | Intel Corporation | Memory manager to allow non-volatile memory to be used to supplement main memory |
US5701492A (en) | 1996-03-29 | 1997-12-23 | Canon Kabushiki Kaisha | Fail-safe flashing of EPROM |
US5937434A (en) * | 1997-02-14 | 1999-08-10 | Intel Corporation | Method of managing a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
-
1995
- 1995-12-26 US US08/578,474 patent/US5829013A/en not_active Expired - Fee Related
-
1996
- 1996-12-23 DE DE19681704T patent/DE19681704B4/de not_active Expired - Fee Related
- 1996-12-23 GB GB9812269A patent/GB2323690B/en not_active Expired - Fee Related
- 1996-12-23 AU AU13446/97A patent/AU1344697A/en not_active Abandoned
- 1996-12-23 WO PCT/US1996/020498 patent/WO1997023829A1/en active IP Right Grant
- 1996-12-23 KR KR1019980704963A patent/KR100284975B1/ko not_active IP Right Cessation
-
1997
- 1997-01-25 TW TW086100830A patent/TW386210B/zh not_active IP Right Cessation
-
1998
- 1998-02-23 US US09/028,159 patent/US6243789B1/en not_active Expired - Lifetime
-
1999
- 1999-03-23 HK HK99101194A patent/HK1016293A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
HK1016293A1 (en) | 1999-10-29 |
GB9812269D0 (en) | 1998-08-05 |
GB2323690A (en) | 1998-09-30 |
AU1344697A (en) | 1997-07-17 |
KR19990076836A (ko) | 1999-10-25 |
WO1997023829A1 (en) | 1997-07-03 |
US5829013A (en) | 1998-10-27 |
DE19681704T1 (de) | 1998-11-26 |
US6243789B1 (en) | 2001-06-05 |
TW386210B (en) | 2000-04-01 |
DE19681704B4 (de) | 2009-12-31 |
GB2323690B (en) | 2000-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100284975B1 (ko) | 플래시 메모리가 주 메모리를 보충하도록 하는 메모리 관리자 | |
EP0853790B1 (en) | Method of storing data in a flash eeprom main memory in a computer system | |
US5987478A (en) | Virtual small block file manager for flash memory array | |
US5787493A (en) | Control method and apparatus for direct execution of a program on an external apparatus using a randomly accessible and rewritable memory | |
US6170066B1 (en) | Power-off recovery management for sector based flash media managers | |
US5530827A (en) | Data management system for programming-limited type semiconductor memory and IC memory card employing data save/erase process with flag assignment | |
EP1242868B1 (en) | Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time | |
EP0991081B1 (en) | Emulated EEPROM memory device and corresponding method | |
US5479639A (en) | Computer system with a paged non-volatile memory | |
KR0132696B1 (ko) | 메모리 처리 방법 | |
US7325089B2 (en) | Controller for refreshing memories | |
JP4588431B2 (ja) | 頻繁にアクセスされたセクタの動作による不揮発性メモリに対するより速い書込み動作 | |
US7529879B2 (en) | Incremental merge methods and memory systems using the same | |
US10740013B2 (en) | Non-volatile data-storage device with spare block pools using a block clearing method | |
US20040264254A1 (en) | Erase block data splitting | |
US5692138A (en) | Flexible user interface circuit in a memory device | |
JP2008108257A (ja) | 不揮発性記憶装置 | |
US3778776A (en) | Electronic computer comprising a plurality of general purpose registers and having a dynamic relocation capability | |
US5907854A (en) | Flash memory file system for writing data files without rewriting an entire volume | |
US5978808A (en) | Virtual small block file manager for flash memory array | |
US5724544A (en) | IC memory card utilizing dual eeproms for image and management data | |
US5175830A (en) | Method for executing overlays in an expanded memory data processing system | |
US6782446B2 (en) | Method to prevent corruption of page tables during flash EEPROM programming | |
US6738887B2 (en) | Method and system for concurrent updating of a microcontroller's program memory | |
JPH0675836A (ja) | 補助記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20091222 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |