KR102388746B1 - 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법 - Google Patents

세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법 Download PDF

Info

Publication number
KR102388746B1
KR102388746B1 KR1020150158097A KR20150158097A KR102388746B1 KR 102388746 B1 KR102388746 B1 KR 102388746B1 KR 1020150158097 A KR1020150158097 A KR 1020150158097A KR 20150158097 A KR20150158097 A KR 20150158097A KR 102388746 B1 KR102388746 B1 KR 102388746B1
Authority
KR
South Korea
Prior art keywords
memory
safe
address
memory cell
area
Prior art date
Application number
KR1020150158097A
Other languages
English (en)
Other versions
KR20170055206A (ko
Inventor
박영진
박찬익
이원석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150158097A priority Critical patent/KR102388746B1/ko
Priority to US15/345,684 priority patent/US10318188B2/en
Publication of KR20170055206A publication Critical patent/KR20170055206A/ko
Application granted granted Critical
Publication of KR102388746B1 publication Critical patent/KR102388746B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/783Masking faults in memories by using spares or by reconfiguring using programmable devices with refresh of replacement cells, e.g. in DRAMs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Abstract

셀 햄머 현상으로부터 메모리 장치를 안전하게 사용할 수 있는 메모리 액세스 제어 방법이 개시된다. 전체 메모리 셀들 중 적어도 일부 영역을 세이프 메모리 영역으로 설정하고, 나머지 영역을 노말 메모리 영역으로 설정한다. 세이프 메모리 영역의 일부 셀들을 읽기 또는 쓰기를 위해 액세스할 수 있는 인에이블 상태로 설정하고, 나머지 셀들은 읽기 또는 쓰기를 위해 액세스할 수 없는 디스에이블 상태로 설정한다. 세이프 메모리 영역의 전체 메모리 셀들에 있어서, 세이프 어드레스 매핑 알고리즘에 의거하여, 디스에이블 상태로 설정된 디스에이블 메모리 셀들을 무시하고, 인에이블 상태로 설정된 인에이블 메모리 셀들에 대해서만 읽기 또는 쓰기를 위한 액세스가 이루어지도록 제어한다. 세이프 메모리 영역의 전체 메모리 셀들 중 상기 인에이블 메모리 셀들은 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치된다.

Description

세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법 {Method of controlling memory cell access based on safe address mapping}
본 발명은 메모리 장치를 더욱 안전하게 사용할 수 있는 방법에 관한 것으로서, 보다 구체적으로는 원하는 메모리 영역에 대해 세이프 어드레스 매핑을 적용하여 메모리를 셀 햄머 현상으로부터 안전하게 사용할 수 있는 메모리 셀 액세스 제어 방법에 관한 것이다.
반도체 메모리 소자의 집적도가 증가함에 따라 새롭게 대두되는 문제들이 있다. 그 중 한 가지가 소위 로우 햄머(row hammer) 현상이다. 로우 햄머 현상은 디램(dynamic random-access memory: DRAM) 소자에서 의도하지 않은 부작용으로서, 메모리 셀들 간에 전하가 누설되게 하고 전기적으로 상호 작용을 하게 만들어, 원래의 메모리 액세스에서 지정하지 않은 주소의 인접 메모리 로우의 컨텐츠를 변경시킬 수 있는 현상을 말한다. 이런 햄머 현상은 로우 방향뿐만 아니라 칼럼 방향으로도 나타날 수 있다. 그러므로 일반적으로 셀 햄머 현상으로 부를 수 있다.
도 1에는 셀 햄머 현상이 일어나는 경우를 개념적으로 도시한다. 특정 메모리 셀(12)에 기록을 할 때, 그 셀(12)의 수평 및 수직 방향으로 인접한 4개의 셀(R1C2, R2C1, R2C3, R3C2)이 셈 햄머 영향권(14)에 속할 수 있다. 이 셀 햄머 현상은 주로 동일한 메모리 로우를 빠르게 여러 번 활성화시키는 메모리 액세스 패턴에 의해 야기될 수 있다. 인접 셀 간의 간격이 충분히 넓은 구형 메모리 소자에서는 이 현상은 현실적인 문제가 되지 않았다. 하지만, 메모리 셀의 집적도가 높아짐에 따라, 메모리 셀들의 물리적인 크기가 작아지면서 각 셀은 더 적은 량의 전하를 저장하게 되고 또한 인접 셀 간의 간격도 더 좁아지게 된다. 그에 따라 메모리 셀들의 동작 노이즈 마진(operational noise margins)이 더 낮아진다. 그 결과, 메모리 셀들 간에 전자기적 상호작용이 더 늘어나면서 데이터 손실의 가능성이 더 커진다. 그러므로 셀 햄머 현상은 메모리 소자의 집적도 증가에 따라 자연스럽게 생겨날 수 있는 문제들 중 하나일 수 있다.
이제 이 현상은 해결해야 할 현실적인 문제가 되고 있다. 셀 햄머 현상이 일어나는 것을 막기 위해 여러 가지 하드웨어-기반 해법이 제시된 바 있다. 그런데 그 해법은 실제로 적용하기 위해서는 몇 가지 프로세서와 메모리 모듈의 유형에 있어서 지원받아야 할 사항이 있다. 관련 하드웨어 업체들 간의 협조가 없으면 적용이 어렵다. 또한, 그 해법은 하드웨어적인 성능 저하를 초래할 수 있고, 한 번 물리적으로 메모리 셀의 성능을 줄였으면 다시 원래의 성능으로 회복하기가 거의 불가능하다는 치명적인 단점을 가진다.
본 발명은 위와 같은 문제점을 해결하기 위한 것으로, 원하는 메모리 영역에 대해 세이프 어드레스 매핑을 적용하여 메모리를 셀 햄머 현상으로부터 안전하게 사용할 수 있는 메모리 액세스 제어 방법을 제공하는 것을 하나의 목적으로 한다.
본 발명은 또한, 셀 해머 현상에 대한 종래의 하드웨어적인 해법에 비해, 적용이 더 용이하고, 메모리 소자의 회복불가능한 손실도 유발하지 않으면서, 셀 해머 현상을 소프트웨어적으로 예방할 수 있는 메모리 액세스 제어 방법을 제공하는 것을 다른 목적으로 한다.
본 발명은 또한, 반도체 메모리 소자의 전체 영역 중 원하는 영역은 사용가능한 메모리 셀 개수의 감소를 수반하면서 셀 해머 현상으로부터 안전한 영역으로 사용하는 세이프 메모리 모드와, 나머지 영역은 메모리 셀의 실제 개수를 전부 다 사용할 수 있는 노말 영역으로 사용하는 노말 모드를 동시 병행적으로 사용할 수 있는 메모리 액세스 제어 방법을 제공하는 것을 또 다른 목적으로 한다.
본 발명은 또한, 메모리 소자의 특정 영역을 상기 세이프 메모리 모드로 설정하여 사용하다가, 필요 시 상기 노말 메모리 모드로 환원시켜 사용가능 셀 개수를 원상회복할 수 있는 메모리 액세스 제어 방법을 제공하는 것을 또 다른 목적으로 한다.
본 발명의 상기 목적을 달성하기 위한 본 발명의 일 실시예에 따르면, 컴퓨팅 장치의 메모리 장치에 대한 액세스를 제어하는 방법이 제공된다. 메모리 셀 액세스 제어 방법은, 상기 메모리 장치의 전체 메모리 셀들 중에서, 적어도 일부 셀들은 읽기 또는 쓰기를 위해 액세스할 수 있는 인에이블(Enable) 상태로 설정하고, 나머지 셀들은 읽기 또는 쓰기를 위해 액세스할 수 없는 디스에이블(Disable) 상태로 설정하는 접근가능성 설정단계를 포함할 수 있다. 또한, 디스에이블 상태로 설정된 디스에이블 메모리 셀들을 무시하고, 인에이블 상태로 설정된 인에이블 메모리 셀들에 대해서만 읽기 또는 쓰기를 위한 액세스가 이루어지도록 제어하는 액세스 제어 단계를 포함할 수 있다. 상기 인에이블 메모리 셀들은 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치된다.
일 실시예에 따르면, 메모리 셀 액세스 제어 방법은, 상기 메모리 장치의 전체 용량에서 상기 디스에이블 상태로 설정되는 상기 나머지 셀들의 개수를 차감하여 액세스 가능 용량을 산출할 수 있다. 또한, 상기 메모리 장치의 전체 용량을 상기 액세스 가능 용량으로 대체하여 상기 메모리 장치의 용량을 변경할 수 있다.
본 발명의 일 실시예에 따르면, 상기 접근가능성 설정단계는, 상기 전체 메모리 셀들 중 적어도 일부 영역을 세이프 메모리 영역으로 설정하고, 나머지 영역을 노말 메모리 영역으로 설정할 수 있다. 또한, 상기 세이프 메모리 영역의 일부 셀들을 상기 인에이블 상태로 설정하고 나머지 셀들은 상기 디스에이블 상태로 설정할 수 있다. 상기 노말 메모리 영역이 설정되어 있다면, 그 노말 메모리 영역의 셀들은 전부 인에이블 상태로 설정할 수 있다.
본 발명의 일 실시예에 따르면, 상기 액세스 제어 단계는, 상기 컴퓨팅 장치의 프로세서가 접근하려는 메모리 셀 어드레스가 상기 세이프 메모리 영역에 속할 때에는, 세이프 어드레스 매핑 알고리즘에 의거하여 상기 메모리 셀 어드레스를 상기 인에이블 메모리 셀들의 어드레스로만 매핑하여, 그 매핑으로 변환된 메모리 셀 어드레스가 상기 세이프 메모리 영역 내의 메모리 셀에 대한 액세스 정보로 사용되도록 할 수 있다. 상기 프로세서가 접근하려는 메모리 셀 어드레스가 상기 노말 메모리 영역에 속할 때에는, 상기 메모리 셀 어드레스를, 실질적으로 다른 어드레스로 변환하지 않고, 그대로 상기 노말 메모리 영역 내의 메모리 셀에 대한 액세스 정보로서 사용되도록 할 수 있다.
본 발명의 일 실시예에 따르면, 상기 세이프 어드레스 매핑 알고리즘은, 상기 메모리 장치의 셀 어레이의 전체 열(column)의 개수를 k로 나누었을 때의 제1 나머지가 0인 경우에는, 액세스 하려는 현재 로우(행)의 번호를 2로 나눈 제2 나머지가 0이면 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 세이프 메모리 영역의 용량 축소율의 역수인k를 곱한 값에서 m을 뺀 값으로 변환한다. 상기 제2 나머지가 0이 아니면 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 k를 곱한 값으로 변환한다. 상기 제1 나머지가 0이 아닌 경우에는 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 k를 곱한 값으로 변환한다. 여기서, 상기 k는 2 이상의 자연수이고, 상기 m은 상기 k보다 작은 자연수(들) 중 어느 하나이다.
본 발명의 일 실시예에 따르면, 상기 세이프 어드레스 매핑 알고리즘에 의거하여 구현된 세이프 어드레스 매핑 필터를 상기 메모리 장치에 포함시킬 수 있다. 상기 세이프 어드레스 매핑 필터가 상기 컴퓨팅 장치의 메모리 콘트롤러로부터 상기 컴퓨팅 장치의 프로세서가 접근하려는 메모리 셀 어드레스를 제공받아 상기 인에이블 메모리 셀들에 대한 어드레스 매핑을 수행할 수 있다.
본 발명의 일 실시예에 따르면, 상기 세이프 어드레스 매핑 알고리즘에 의거하여 구현된 세이프 어드레스 매핑 필터를 상기 컴퓨팅 장치의 메모리 콘트롤러에 포함시킬 수 있다. 상기 세이프 어드레스 매핑 필터가 상기 컴퓨팅 장치의 프로세서로부터 메모리 셀 어드레스를 제공받아 상기 인에이블 메모리 셀들에 대한 어드레스 매핑을 수행할 수 있다.
본 발명의 일 실시예에 따르면, 상기 컴퓨팅 장치의 부팅 시, 상기 메모리 장치의 세이프 메모리 영역과 노말 메모리 영역의 용량에 관한 BIOS의 설정 정보에 기초하여, BIOS의 세이프 어드레스 매핑 정보를 상기 메모리 장치에 제공할 수 있다. 운영체제(OS) 프로그램의 실행 중에, 특정 프로그램이 BIOS를 호출하여 상기 세이프 어드레스 매핑 정보의 활성화를 요청할 수 있다. 상기 BIOS가 상기 메모리 장치에 미리 제공되어 있는 상기 세이프 어드레스 매핑 정보를 활성화시켜, 상기 메모리 장치가 상기 세이프 메모리 영역과 상기 노말 메모리 영역으로 구분되어 액세스 할 수 있는 상태로 만들 수 있다. 본 발명의 일 실시예에 따르면, 상기 세이프 메모리 영역과 상기 노말 메모리 영역의 설정 전에 상기 메모리 장치에 대한 조각모으기 작업을 수행할 수 있다.
본 발명의 일 실시예에 따르면, 상기 접근가능성 설정 단계와 상기 액세스 제어 단계를 수행하기 위한 로직을 구현한 세이프 어드레스 매핑 필터를 상기 컴퓨팅 장치에서 실행되는 운영체제(OS) 프로그램의 메모리 관리부에 포함시킬 수 있다. 그런 상태에서, 상기 세이프 어드레스 매핑 필터를 인에이블 시켜, 상기 컴퓨팅 장치의 하드웨어에서 요청하는 메모리 셀 어드레스를 상기 세이프 어드레스 매핑 필터를 통해 상기 인에이블 메모리 셀들의 어드레스로만 매핑하여, 그 매핑으로 변환된 메모리 셀 어드레스를 상기 하드웨어로 리턴해줄 수 있다. 상기 하드웨어가 리턴된 메모리 셀 어드레스에 의거하여 상기 메모리 장치에 액세스할 수 있다.
본 발명의 일 실시예에 따르면, 상기 세이프 어드레스 매핑 필터는, 상기 메모리 장치의 전체 열(column)의 개수를 k로 나누었을 때의 제1 나머지가 0인 경우에는, 액세스 하려는 현재 로우(행)의 번호를 2로 나눈 제2 나머지가 0이면 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 세이프 메모리 영역의 용량 축소율의 역수인 k를 곱한 값에서 m을 뺀 값으로 변환한다. 상기 제2 나머지가 0이 아니면 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 k를 곱한 값으로 변환한다. 상기 제1 나머지가 0이 아닌 경우에는 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 k를 곱한 값으로 변환한다. 여기서, 상기 k는 2 이상의 자연수이고, 상기 m은 상기 k보다 작은 자연수(들) 중 어느 하나이다.
본 발명의 일 실시예에 따르면, BIOS에 상기 세이프 메모리 영역 설정 메뉴를 추가할 수 있다. 상기 컴퓨팅 장치의 부팅 시, 활성화된 상기 세이프 메모리 설정 메뉴에서, 상기 세이프 메모리 영역 설정을 위한 원하는 옵션이 선택되면, 그 선택된 옵션에 의거하여, 상기 세이프 메모리 영역과 상기 노말 메모리 영역의 용량 및 용량 축소율 정보를 BIOS에 저장할 수 있다.
본 발명의 일 실시예에 따르면, 상기 세이프 메모리 설정 메뉴의 활성화 및 상기 옵션의 선택은 사용자의 상기 컴퓨팅 장치를 통한 지시에 의해 이루어질 수 있다.
본 발명의 일 실시예에 따르면, 상기 세이프 메모리 영역과 상기 노말 메모리 영역의 용량 정보를 상기 메모리 장치의 SPD 롬에 제공하여 상기 메모리 장치의 용량 정보를 업데이트할 수 있다. 그런 다음, 상기 컴퓨팅 장치의 리부팅 과정에서 BIOS가 상기 SPD 롬에 접근하여 업데이트된 상기 메모리 장치의 용량 정보를 읽어와서 부팅을 완료할 수 있다.
본 발명의 일 실시예에 따르면, 상기 컴퓨팅 장치의 부팅 시, BIOS가 상기 메모리 장치의 SPD 롬에 접근하여 읽어오는 상기 메모리 장치의 용량 정보 대신에, BIOS에 저장되어 있던 상기 메모리 장치의 상기 세이프 메모리 영역과 상기 노말 메모리 영역의 용량 정보를 유효하게 적용할 수 있다.
본 발명의 일 실시예에 따르면, 상기 메모리 장치의 상기 메모리 셀들이 고르게 사용될 수 있도록 하기 위해, 상기 컴퓨팅 장치가 부팅되는 시점을 기회로 상기 인에이블 메모리 셀들은 디스에이블 메모리 셀들로 설정되게 하고, 상기 디스에이블 메모리 셀들은 인에이블 메모리 셀들로 설정되도록 제어할 수 있다.
본 발명의 상기 목적을 달성하기 위한 다른 실시예에 따른 컴퓨팅 장치의 메모리 장치에 대한 액세스를 제어하는 방법은, 상기 메모리 장치의 전체 메모리 셀들 중 적어도 일부 영역을 세이프 메모리 영역으로 설정하고, 나머지 영역을 노말 메모리 영역으로 설정하는 단계와, 상기 세이프 메모리 영역의 일부 셀들을 읽기 또는 쓰기를 위해 액세스할 수 있는 인에이블 상태로 설정하고, 나머지 셀들은 읽기 또는 쓰기를 위해 액세스할 수 없는 디스에이블 상태로 설정하는 단계를 포함할 수 있다. 나아가, 상기 노말 메모리 영역이 설정되어 있다면, 그 노말 메모리 영역의 셀들은 전부 인에이블 상태로 설정하는 단계와, 상기 세이프 메모리 영역의 전체 메모리 셀들에 있어서, 디스에이블 상태로 설정된 디스에이블 메모리 셀들을 무시하고, 인에이블 상태로 설정된 인에이블 메모리 셀들에 대해서만 읽기 또는 쓰기를 위한 액세스가 이루어지도록 제어하는 액세스 제어 단계를 포함할 수 있다. 상기 세이프 메모리 영역의 전체 메모리 셀들 중 상기 인에이블 메모리 셀들은 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치되어 있다.
본 발명의 다른 일 실시예에 따르면, 상기 액세스 제어 단계는, 상기 컴퓨팅 장치의 프로세서가 접근하려는 메모리 셀 어드레스가 상기 세이프 메모리 영역에 속할 때에는, 세이프 어드레스 매핑 알고리즘에 의거하여 상기 메모리 셀 어드레스를 상기 인에이블 메모리 셀들의 어드레스로만 매핑하여, 그 매핑으로 변환된 메모리 셀 어드레스가 상기 세이프 메모리 영역 내의 메모리 셀에 대한 액세스 정보로 사용되도록 할 수 있다. 또한, 상기 프로세서가 접근하려는 메모리 셀 어드레스가 상기 노말 메모리 영역에 속할 때에는, 상기 메모리 셀 어드레스를, 실질적으로 다른 어드레스로 변환하지 않고, 그대로 상기 노말 메모리 영역 내의 메모리 셀에 대한 액세스 정보로서 사용되도록 할 수 있다.
본 발명의 다른 일 실시예에 따르면, 상기 세이프 어드레스 매핑 알고리즘은, 앞에서 언급한 것과 같다.
본 발명의 상기 목적을 달성하기 위한 또 다른 실시예에 따른 컴퓨팅 장치의 메모리 장치에 대한 액세스를 제어하는 방법은, 전체 메모리 셀들 중 적어도 일부 영역을 세이프 메모리 영역으로 설정하고, 나머지 영역을 노말 메모리 영역으로 설정하는 단계와, 상기 세이프 메모리 영역의 일부 셀들을 읽기 또는 쓰기를 위해 액세스할 수 있는 인에이블 상태로 설정하고, 나머지 셀들은 읽기 또는 쓰기를 위해 액세스할 수 없는 디스에이블 상태로 설정하는 단계를 포함할 수 있다. 또한, 상기 노말 메모리 영역이 설정되어 있다면, 그 노말 메모리 영역의 셀들은 전부 인에이블 상태로 설정하는 단계와, 상기 세이프 메모리 영역의 전체 메모리 셀들에 있어서, 세이프 어드레스 매핑 알고리즘에 의거하여, 디스에이블 상태로 설정된 디스에이블 메모리 셀들을 무시하고, 인에이블 상태로 설정된 인에이블 메모리 셀들에 대해서만 읽기 또는 쓰기를 위한 액세스가 이루어지도록 제어하는 액세스 제어 단계를 포함할 수 있다. 상기 세이프 메모리 영역의 전체 메모리 셀들 중 상기 인에이블 메모리 셀들은 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치되어 있다. 상기 세이프 어드레스 매핑 알고리즘은 앞에서 언급한 것과 같다.
본 발명은 원하는 메모리 영역에 대해 인접 메모리 셀의 간격을 셀 햄머 현상이 일어나지 않을 정도로 충분히 멀어지게 설정할 수 있다. 이에 의해, 셀 햄머 현상을 안정적으로 방지할 수 있다. 또한, 본 발명에 의하면, 메모리 셀 영역의 전부 또는 일부를 셀 햄머 예방 조치가 취해지는 세이프 메모리 영역으로 설정할 수 있다.
이것은 메모리 사용 정책에 관해 다양하고 유익한 옵션이 제공할 수 있다. 즉, 사용자는 메모리 세이프 모드의 사용 여부, 메모리 세이프 영역의 광협 설정 등을 자신의 필요에 따라 탄력적으로 결정할 수 있다. 예컨대, 컴퓨팅 장치가 안정적으로 구동되기 위해서는 무엇보다도 OS 프로그램의 실행 에러가 발생하지 않아야 된다. 그런데 이런 에러는 OS 프로그램이 로드되는 메모리 영역의 데이터 유실에 의해 종종 발생할 수 있고, 셀 햄머 현상도 그 원인들 중의 한 가지가 될 수 있다. 본 발명에 따르면, 사용자는 메모리 장치의 적어도 일부 영역을 OS 프로그램만을 위한 세이프 메모리 영역으로 설정하여 사용할 수 있다. 이를 통해, 셀 햄머 현상에 따른 OS 프로그램의 오작동을 막을 수 있다. 컴퓨팅 장치에서 언제나 매우 중요한 작업이 에러 없이 완벽하게 안정적으로 수행될 필요가 있는 경우, 메모리 장치의 전체 셀 영역을 세이프 메모리 영역으로 설정하여 사용할 수도 있을 것이다.
세이프 메모리 영역 설정 기능은 옵션기능으로서 제공될 수 있다. 평상시에는 이 기능을 사용하지 않고 노말 모드로 실제의 메모리 용량 전부를 사용할 수도 있다.
본 발명의 셀 햄머 예방책 즉, 세이프 메모리 영역의 설정과 그 영역에 대한 액세스 제어는 메모리 소자의 하드웨어적인 상태는 원래대로 유지하면서, 오직 소프트웨어를 이용하여 구현될 수 있다. 그러므로 메모리 소자의 메모리 셀의 물리적인 손실, 하드웨어적인 성능 저하 등과 같은 손해를 수반하지 않는다.
세이프 메모리 영역의 설정에 따라 메모리 용량이 감소하기는 하나, 필요한 경우는 세이프 메모리 영역의 설정 해제도 소프트웨어적으로 간단하게 할 수 있다. 즉, 세이프 메모리 모드와 노말 메모리 모드를 자유자재로 선택할 수 있다. 이를 통해, 언제든지 그 메모리 장치의 원래의 용량으로 회복시켜 사용할 수도 있다.
하드웨어적 해법은 메모리 소자 관련 제조사들의 협조를 받아야 하는 부담과 불편이 있었다. 그에 비해, 본 발명에 따른 소프트웨어적인 셀 햄머 예방책은 현실적으로 적용하기가 용이하고 간단하다.
도 1은 종래의 메모리 소자에서 나타날 수 있는 셀 햄머 현상을 도식적으로 나타낸다.
도 2는 본 발명의 아이디어에 따라 메모리 셀들을 셀 햄머 현상으로부터 안전하게 사용할 수 있는 모드들을 예시한다.
도 3은 본 발명의 아이디어에 따라 메모리 셀 영역 전부 또는 일부를 셀 햄머 현상으로부터 안전하게 사용할 수 있는 모드를 구체적으로 예시한다.
도 4는 본 발명의 일 실시예에 따라, 세이프 어드레스 매핑을 이용하여 메모리 액세스 제어를 하는 방법의 전반적인 로직을 개략적으로 나타낸 흐름도이다.
도 5는 본 발명의 일 실시예에 따라, 컴퓨팅 장치의 부팅 시 메모리 소자의 세이프 메모리 영역을 설정하기 위한 절차를 예시하는 흐름도이다.
도 6은 본 발명의 일 실시예에 따라, 컴퓨팅 장치의 부팅 시 세이프 메모리 영역의 설정에 따른 메모리 용량의 변경을 반영하기 위한 절차를 예시하는 흐름도이다.
도 7은 본 발명의 일 실시예에 따라, 컴퓨팅 장치의 부팅 시 세이프 메모리 영역의 설정에 따른 메모리 용량의 변경을 반영하기 위한 다른 절차를 예시하는 흐름도이다.
도 8은 본 발명의 일 실시예에 따라, 컴퓨팅 장치의 부팅 시 BIOS(basic input/output system)에서 세이프 메모리 영역을 설정하기 위한 사용자 인터페이스 화면을 예시한다.
도 9는 본 발명의 일 실시예에 따라, 메모리 장치에 내장된 세이프 어드레스 매핑 필터를 이용하여 메모리 장치의 세이프 메모리 영역에 대한 액세스를 제어하는 방법을 설명하기 위한 흐름도이다.
도 10은 도 9의 방법이 이용하는 세이프 어드레스 매핑 필터의 알고리즘을 나타낸 흐름도이다.
도 11은 도 9의 방법을 수행하기 위한 장치의 블록도이다.
도 12는 본 발명의 일 실시예에 따라, 용량이 1/2로 축소된 세이프 메모리 영역에 대한 세이프 어드레스 매핑 로직을 도식적으로 설명하기 위한 도면이다.
도 13은 본 발명의 일 실시예에 따라, 용량이 1/3로 축소된 세이프 메모리 영역에 대한 세이프 어드레스 매핑 로직을 도식적으로 설명하기 위한 도면이다.
도 14는 본 발명의 일 실시예에 따라, 용량이 1/4로 축소된 세이프 메모리 영역에 대한 세이프 어드레스 매핑 로직을 도식적으로 설명하기 위한 도면이다.
도 15는 본 발명의 일 실시예에 따라, 메모리 콘트롤러에 내장된 세이프 어드레스 매핑 필터를 이용하여 메모리 장치의 세이프 메모리 영역에 대한 액세스를 제어하는 방법을 수행하기 위한 장치의 블록도이다.
도 16은 본 발명의 일 실시예에 따라, 메모리 범위 셀렉터(Memory Range Selector: MRS) 레지스터의 세이프 어드레스 매핑 정보를 이용하여 메모리 장치의 세이프 메모리 영역의 설정과 그 영역에 대한 액세스를 제어하는 방법을 설명하기 위한 흐름도이다.
도 17은 도 16의 방법을 수행하기 위한 장치의 블록도이다.
도 18은 본 발명의 일 실시예에 따라, 운영체제의 메모리 관리부에 세이프 어드레스 매핑 기능을 부여하여 메모리 장치의 세이프 메모리 영역의 설정과 그 영역에 대한 액세스를 제어하는 방법을 설명하기 위한 흐름도이다.
도 19는 도 18의 방법을 실행하기 위한 장치의 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되지 않는다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 해서 중복된 설명은 생략한다.
본 발명의 핵심적인 아이디어는, 셀 햄머 현상이 일어나지 않도록, 메모리 셀들 중 일부는 사용하지 않고 나머지 일부만 실제로 사용되도록 하되, 그 실제로 사용되는 셀들은 수평 및 수직방향으로 연속하여 인접하지 않도록 서로 간에 적어도 하나의 셀 영역만큼 이격되게 하는 것이다.
이와 같은 메모리 사용 제어는, 불사용 메모리 셀을 물리적으로 내지 하드웨어적으로 파괴하는 것에 의해 달성하는 것이 아니라, 메모리에 접근하는 주소를 소프트웨어적 제어함으로써 이루어진다. 그러므로 불사용 메모리 셀로 지정되었던 것이라도, 나중에 접근 금지를 해제하면 다시 사용할 수 있다. 이러한 접근 제어 설정 여부는 사용자가 선택할 수 있게 할 수 있다.
본 발명에 따른 메모리 사용 형태는 다음 두 가지가 가능하다.
제1 방안은 메모리 셀 영역 전체를 그의 일부만 예컨대 전체 메모리 셀 개수의 1/k배(여기서, k은 세이프 메모리 영역의 용량 축소율(이하, '용량 축소율'이라 함)의 역수로서, 2이상의 자연수이다. 현실적으로는 5이상이 되면 메모리 사용효율이 너무 낮아져 실용성이 크게 떨어진다고 볼 수 있다.)만 사용하는 방안이다. 이 경우, 메모리 셀 영역 전체가 '세이프 메모리 영역'이 된다.
제2 방안은 메모리 셀 영역의 일부 영역은 그 일부 영역의 메모리 셀의 일부만 예컨대 그 영역의 메모리 셀 개수의 1/k배만을 사용하고, 상기 메모리 셀 영역의 나머지 영역은 그 영역의 메모리 셀 전부를 사용하는 방안이다(하이브리드 메모리 모드로 사용). 이 경우, 상기 일부 영역이 '세이프 메모리 영역(Safe memory section)'이 되고, 상기 나머지 영역이 '노말 메모리 영역(Normal memory section)'이 된다.
제1 방안은 메모리 셀 영역의 사용 효율을 크게 떨어뜨릴 수 있지만, 메모리 셀 영역 전체를 매우 안정적으로 사용할 수 있는 장점이 있다. 제2 방안은 메모리 셀 영역의 일부 영역에 대해서만 제1 방안을 적용하고, 나머지 영역은 원래의 영역을 전부 사용하므로, 제1 방안에 비해 메모리 셀 사용 효율은 높으나 일부 메모리 셀 영역은 셀 햄머 현상에 노출될 수 있는 약점을 감수해야 한다.
도 2는 예컨대 8GB 용량을 가진 메모리(20)를 상기 제1 방안과 상기 제2 방안에 따라 사용하는 경우를 도식적으로 보여준다.
도 2의 (b)는 상기 제1 방안에 따른 예를 보여준다. 즉, 8GB 용량의 실제 메모리(20)의 전체 영역을 세이프 메모리 영역(30)으로 설정하여 실제로는 4GB만을 사용하는 방안이다. 용량 축소율(1/k)을 1/2로 적용한 경우이다. 물론, 메모리 용량 축소율(1/k)은 1/3, 1/4, 1/5 등과 같이 다른 값을 적용할 수도 있다.
8GB를 4GB만 사용하는 점에서 메모리 공간의 활용도는 떨어지나, 그 사용하는 세이프 메모리 영역(30)의 4GB 전체가 셀 햄머 현상이 일어나지 않는 안전한 영역이 될 수 있다. 즉, 도 3의 (a)에 도시된 것처럼, 세이프 메모리 영역(30) 내의 메모리 셀에 대한 읽기와 쓰기를 위한 액세스 시, 홀수 번째 행의 홀수 번째 셀들과 짝수 번째 행의 짝수 번째 셀들만 액세스 가능한 인에이블 상태이고, 나머지 셀들 즉, 홀수 번째 행의 짝수 번째 셀들과 짝수 번째 행의 홀수 번째 셀들은 액세스할 수 없는 디스에이블 상태이다. 물론, 홀수 번째 행의 짝수 번째 셀들과 짝수 번째 행의 홀수 번째 셀들만 인에이블 상태일 수도 있으며, 이 경우에는 홀수 번째 행의 홀수 번째 셀들과 짝수 번째 행의 짝수 번째 셀들이 디스에이블 상태이다.
이처럼, 세이프 메모리 영역(30) 내의 인에이블 상태의 2GB 메모리 셀들은 수직 및 수평 방향으로 1셀 구간만큼 서로 이격된 배치형태를 갖는다. 어떤 인에이블 상태의 메모리 셀(32)에 대한 기록 시, 셀 햄머 현상이 일어날 수 있는 범위(34) 안에는 디스에이블 상태의 메모리 셀들만 존재할 뿐, 인에이블 상태의 메모리 셀들은 존재하지 않는다. 따라서 셀 햄머 현상이 일어날 가능성이 매우 낮은 세이프 메모리 영역으로 볼 수 있다.
도 2의 (c)는 상기 제2 방안에 따라 노말 메모리 모드와 세이프 메모리 모드를 혼합한 하이브리드 모드로 사용하는 예를 보여준다. 이 하이브리드 모드는 예컨대 8GB 용량의 실제 메모리(20)를 절반씩 두 부분으로 구분하여, 4GB의 제1 절반 영역(42)은 세이프 메모리 모드로 설정하고 용량 축소율(1/k)을 1/2로 적용하여 실제로는 2GB 만큼만 사용하고, 나머지 4GB의 제2 절반 영역(44)은 노말 모드로 설정하여 그 영역의 4GB 메모리 셀 전부를 사용하는 방식이다. 4GB에 대한 세이프 메모리 모드는 그 절반인 2GB을 디스에이블(Disable) 상태로 설정하고, 나머지 절반인 2GB만 인에이블(Enable) 상태로 설정하여 사용하는 것이다. 따라서, 물리적으로는 8GB용량의 메모리 장치(20)를 논리적으로는 6GB의 메모리 장치(40)로 사용한다.
도 3의 (b)에 도시된 것처럼, 세이프 메모리 영역(42) 내에서는, 제1 방안과 마찬가지로, 어떤 임의의 인에이블 상태의 메모리 셀(46)의 수직 및 수평 방향으로 바로 옆 즉, 셀 햄머 영향권(48) 안에는 디스에이블 상태의 메모리 셀들만 존재한다.
세이프 메모리 영역(30, 42)은 상대적으로 더 중요한 작업을 수행하는 공간으로 사용하기에 아주 적합하다. 예컨대, OS가 로드되는 공간으로 활용하면 OS의 오동작은 예방할 수 있어 컴퓨터 시스템을 안전하게 사용하는 것을 보장해줄 수 있을 것이다. 또한, 컴퓨팅 시스템이 지속적으로 정상적으로 작동해야 하는 경우(예컨대, 24시간 감시시스템)도 세이프 메모리 영역(30, 42)을 설정하여 사용하면 효과적일 수 있다.
도 4의 흐름도는 본 발명의 일 실시예에 따라 메모리 액세스 제어를 하는 방법의 전반적인 로직을 개략적으로 나타낸다. 본 발명의 방법은 크게 두 가지 과정으로 구분할 수 있다. 첫 번째 과정은 메모리 장치의 전체 영역에 대하여 세이프 메모리 모드로 사용할 영역 즉, 세이프 메모리 영역으로 설정하는 것이다. 두 번째 과정은 세이프 메모리 영역으로 설정된 영역에 대해서는 세이프 어드레스 매핑을 통해 셀 햄머 현상이 일어나지 않도록 메모리 셀에 대한 액세스 제어를 하는 과정이다.
세이프 메모리 영역 설정은 미리 디폴트로 지정된 조건에 따라 컴퓨팅 장치의 부팅 과정에서 자동으로 이루어지게 할 수 있다. 이와 달리, 컴퓨팅 장치의 부팅 과정에서 사용자가 세이프 메모리 영역을 설정할 수도 있다. 또 다른 방안으로는, 실행 중인 OS에서 설정할 수도 있다.
세이프 메모리 영역 설정은 어떤 방식으로 하든, 모두 소프트웨어적으로 처리할 수 있다. 먼저, 세이프 메모리 모드를 사용할 것인지 아니면 노말 메모리 모드로 사용할 것인지를 확인한다(S10 단계). 세이프 메모리 모드를 사용하는 경우에는, 메모리 장치의 용량에 변화가 반드시 생긴다. 컴퓨팅 장치는 사용하는 세이프 메모리 모드에 따라 변경된 메모리 용량을 인지하고 관련 정보를 시스템에 저장할 수 있다(S12 단계). 저장할 정보는 예컨대, 세이프 메모리 영역으로 사용하는 부분의 메모리 용량, 그 세이프 메모리 영역에 대한 용량 축소율(1/k), 그리고 세이프 메모리 영역의 어드레스 범위 (어드레스 상한값 및 하한값) 등에 관한 정보를 포함할 수 있다. 노말 메모리 영역으로 사용하는 부분이 있다면, 그 영역의 어드레스 범위를 더 포함할 수도 있다.
세이프 메모리 영역의 용량과 그 영역에 대한 용량 축소율(1/k)이 정해지면, 그 세이프 메모리 영역 중에서, 읽기 및 쓰기를 위해 액세스할 수 있는 인에이블 상태로 설정되는 메모리 셀들과, 그러한 액세스를 할 수 없는 디스에이블 상태로 설정되는 메모리 셀들이 정해질 수 있다(이에 관한 자세한 사항은 후술한다). 노말 메모리 영역은 그 영역의 모든 메모리 셀들이 인에이블 상태로 설정된 것으로 취급하면 된다.
이와 같은 메모리 셀들에 대한 접근가능성이 설정되고 나면, 그 설정에 의거하여 읽기 및 쓰기를 위한 메모리 액세스 제어를 수행할 수 있다. 즉, 세이프 메모리 영역에 대해서는, 디스에이블 상태로 설정된 디스에이블 메모리 셀들을 무시하고, 인에이블 상태로 설정된 인에이블 메모리 셀들에 대해서만 읽기 또는 쓰기를 위한 액세스가 이루어지도록 세이프 어드레스 매핑을 할 수 있다(S14 단계). 그 세이프 어드레스 매핑은, 인에이블 메모리 셀들이 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치되도록 입력 어드레스를 변환하는 절차이다. 이와 같은 세이프 어드레스 매핑을 통해, 세이프 메모리 영역에서는 셀 햄머 현상으로부터 안전할 수 있다.
노말 메모리 영역에 대해서는, 종래에 사용하는 일반적인 메모리 어드레스 매핑 방법 즉, 그 영역 내의 모든 메모리 셀들이 인에이블 상태에 있는 것으로 보고 프로세서가 요청한 물리적 어드레스를 메모리의 어드레스로 변환하는 이른바 노말 어드레스 매핑 로직에 따라 메모리 액세스 제어를 수행할 수 있다(S16 단계). 노말 어드레스 매핑 로직은 당해 기술분야에서 널리 알려진 것이므로 여기서는 그에 관한 설명을 생략한다.
위와 같은 어드레스 매핑을 통해 확보된 어드레스는 메모리 장치에 대한 읽기, 쓰기 등의 작업을 위해 사용될 수 있다(S18 단계). 이를 통해, 본 발명이 의도하는 목적인, 적어도 세이프 메모리 영역에서는 셀 햄머 현상을 방지할 수 있게 된다.
도 5는 본 발명의 일 실시예에 따른 세이프 메모리 영역 설정 방법을 설명하기 위한 흐름도이다. 이 방법은 컴퓨팅 장치의 부팅 시에 메모리 소자의 세이프 메모리 영역을 설정한다. 이를 위해, 컴퓨팅 장치의 부팅 프로그램인 BIOS 프로그램에 세이프 메모리 영역을 설정할 수 있는 기능을 추가시킬 수 있다.
구체적으로, 예컨대 퍼스널 컴퓨터와 같은 컴퓨팅 장치에서, 전원 버튼을 온 시키면(S20 단계), BIOS 프로그램이 실행되면서 부팅 절차를 밟게 된다. 그 과정에서 DEL키나 F2키가 입력되면(S22 단계), BIOS 설정환경으로 들어갈 수 있다(S24 단계).
본 발명에 따른 BIOS 프로그램은 세이프 메모리 영역을 설정할 수 있는 기능을 가진다. 이 기능에 의해, 도 8에 예시된 것과 같이, 세이프 메모리 설정을 위한 메모리 옵션 화면(50)이 표시될 수 있다. 사용자는 이 메모리 옵션 화면(50)에서, 메모리 옵션 메뉴(MEMORY OPTION)(52)에 커서를 위치시킨 다음 엔터키를 치면, 현재 컴퓨팅 장치의 실제 메모리의 사이즈(예: 16GB)가 표시된다. 또한, 세이프 메모리 설정 메뉴(54)를 활성화 시킬 수도 있다 (S26 단계). 그 세이프 메모리 설정 메뉴(54)를 활성화(Enable) 시키면, 세이프 메모리 영역 설정을 위한 옵션 창(56) 등이 팝업된다.
그 옵션 창(56)은 다음과 같은 옵션들을 제공할 수 있다: (i) Auto: 시스템이 디폴트 값으로 정해둔 세이프 메모리 영역을 자동으로 설정함, (ii) Disable: Auto 옵션을 디스에이블 시키고, 세이프 메모리 영역을 수동으로 설정할 수 있음, (iii) 4GB (safe): 전체 메모리 용량 16GB를 4GB의 세이프 메모리 영역으로 설정함, (iv) 8GB (safe): 전체 메모리 용량 16GB를 8GB의 세이프 메모리 영역으로 설정함, (v) 4+8GB (hbrd safe): 전체 메모리 용량 16GB의 절반을 4GB의 세이프 메모리 영역으로 설정함과 동시에, 나머지 절반인 8GB는 노말 메모리 영역으로 설정함, (vi) 16GB: 세이프 메모리 영역을 설정하지 않고, 16GB 전부를 노말 메모리 영역으로 설정함.
사용자는 이 옵션들 중에서 원하는 세이프 메모리 옵션을 선택할 수 있다(S28 단계). 선택된 옵션에 따라 유효하게 액세스할 수 있는 메모리 용량이 달라질 수 있다. 선택된 옵션에 대응하는 메모리 용량(58)이 표시될 수 있다. 메모리 용량(58)으로 표시된 세이프 메모리 사이즈가 12GB(4+8GB)인 것은, 옵션 창(56)에서 사용자가 4+8GB (hbrd safe)를 선택하였기 때문이다.
이와 같이 세이프 메모리 옵션이 확정되면, 그에 의거하여 세이프 메모리 영역과 노말 메모리 영역(있다면)의 용량(각 영역의 시작 어드레스와 말단 어드레스) 및 용량 축소율(1/k) 등에 관한 정보가 정해질 수 있다. 그 정보는 일단 BIOS에 저장될 수 있다(S29 단계). 물론 용량 축소율(1/k)을 별도의 절차(예컨대, 사용자에 의한 별도 입력)를 통해 제공받을 수도 있을 것이다.
메모리 장치의 전체 셀 영역 중에서 적어도 일부 영역에 대하여 세이프 메모리 영역을 설정하면, 메모리 소자의 물리적 용량은 변화가 없지만 실질적으로 유효하게 사용할 수 있는 용량은 변하게 된다. 세이프 메모리 영역에 관한 어느 한 가지 옵션에서 다른 옵션으로 변경하는 경우에도 유효한 메모리 용량이 달라질 수 있다. 세이프 메모리 영역으로 설정된 영역의 용량 정보와 용량 축소율(1/k) 정보가 정해지면, 디스에이블 상태로 설정되는 셀의 개수를 계산할 수 있다. 디스에이블 상태로 설정되는 셀 개수를 메모리 장치의 전체 용량에서 차감하면, 유효하게 액세스할 수 있는 메모리 용량이 산출될 수 있다. 이렇게 산출된 메모리 용량이 유효하게 액세스 할 수 있는 메모리 장치의 총 용량이 된다. 당연히, 세이프 메모리 용량과 노말 메모리 용량도 구해질 수 있다. 세이프 메모리 영역과 노말 메모리 영역의 시작 어드레스와 말단 어드레스도 정해질 수 있다.
이와 같은 메모리 용량의 변경 내용은 기록으로 남겨서, 시스템 프로세서가 변경된 메모리 용량을 정확하게 인식할 수 있도록 할 필요가 있다. 메모리 장치의 용량이 변경되었음을 기록으로 남기는 한 가지 방법은 메모리 장치에 내장된 메모리정보 저장소 내의 메모리 용량 정보를 변경하는 방법이다. 메모리 장치가 예컨대 DIMM(dual in-line memory module)인 경우, 상기 메모리정보 저장소는 예컨대 직렬 프레즌스 검출기(serial presence detector: SPD)가 될 수 있다. 예컨대 예전 메모리 장치의 하나인 72-핀 SIMMs은 병렬 프레즌스 검출기(parallel presence detector: PPD)에 메모리 정보를 저장하였다. 도 6은 상기 첫 번째 방법에 따라 컴퓨팅 장치의 부팅 시 세이프 메모리 영역의 설정에 따른 메모리 용량의 변경을 반영하기 위한 절차를 예시적으로 도시한다. SPD 롬을 보유하는 메모리 장치(예: SDRAM)를 예로 하여 설명한다.
대부분의 컴퓨터 장치는 전원을 켜면 파워-온 자가-테스트(Power-on self-test)라는 절차를 수행하여, 그 장치에 현재 존재하는 하드웨어를 자동으로 구성하는 절차를 밟는다. 예컨대 SDRAM의 경우 메모리 용량 정보는 SPD 정보(여기에는 여러 가지 동작파라미터들과 같은 하드웨어 특징에 관한 정보가 포함됨)의 일부로서 SPD EEPROM에 저장되어 있다. SPD 정보는 컴퓨터의 전원을 켤 때 시스템 프로세서에 초기 정보로 제공되어, 컴퓨터가 제대로 작동하기 위한 현존하는 메모리 모듈의 구성 형태를 인식하는 정보로서 활용된다. 즉, 컴퓨터는 SPD EEPROM에 저장된 메모리 장치 모듈의 용량, 데이터 폭, 속도, 전압 등의 정보를 이용하여 메모리 장치 최적 수행을 위한 속성을 구성할 수 있다.
컴퓨터 장치의 부팅 시, 도 5의 절차에 따라 세이프 메모리 영역 및 노말 메모리 영역의 용량(어드레스), 용량 축소율(1/k) 등의 정보가 정해지면, BIOS는 그 정보를 SPD 롬에 제공한다(S30 단계). SPD 롬에 저장되어 있던 기존의 메모리 용량 정보는 제공된 그 메모리 용량 정보로 업데이트 된다(S32 단계).
그런 다음, 컴퓨터 장치가 리부팅 할 때(S34 단계), BIOS는 SPD 롬에 액세스 하여 SPD 정보를 읽어들인다(S36 단계). 그리고 그 SPD 정보에 의거하여 메모리 장치 최적 수행을 위한 속성을 구성한다. 이러한 리부팅 과정을 통해, 단계 32에서 업데이트 한 세이프 메모리 영역과 노말 메모리 영역의 용량(어드레스), 용량 축소율(1/k) 등의 정보가 적용될 수 있다(S38 단계). 이렇게 리부팅이 완료되어 OS가 실행되면, 그 OS는 SPD 정보로서 설정된 대로 메모리 장치의 세이프 메모리 영역과 노말 메모리 영역의 용량(어드레스), 용량 축소율 등을 인식할 수 있다(S39 단계).
메모리 장치의 용량이 변경되었음을 기록으로 남기는 다른 방법은, 그 메모리정보 저장소의 정보는 그대로 둔 채, BIOS에서 메모리 용량 정보를 변경하고 다음 번 부팅 시 그 메모리정보 저장소에 저장되어 있던 메모리 용량 정보를 무시하는 방법이다. 도 7은 이 방법에 따른 절차를 예시적으로 나타낸다.
도 5의 S29 단계 수행하게 되면, BIOS는 세이프 메모리 영역 및/또는 노말 메모리 영역의 용량(어드레스) 정보, 용량 축소율 정보 등을 저장한다. 그런 상태에서, 컴퓨터 장치가 부팅 정차를 다시 밟을 때, BIOS는 통상적인 부팅 절차의 일환으로서 SPD 롬에 접근하여 메모리 용량 정보를 비롯한 SPD 정보를 읽는다(S40 단계).
도 5의 절차를 통해 세이프 메모리 영역 및/또는 노말 메모리 영역의 용량 정보, 용량 축소율 정보 등이 새로이 정해진 후, 그 정보를 SPD 롬에 반영하지 않은 경우를 고려하자. 이 경우, BIOS가 SPD 롬으로부터 읽어들인 SPD 정보는 낡은 정보이므로, 무시할 필요가 있다. SPD 롬으로부터 읽어들인 메모리 용량 정보를 BIOS에 저장된 세이프 메모리 영역 및/또는 노말 메모리 영역의 용량 정보로 대체한다(S42 단계). 이로써, 전자의 정보는 무시되고, 후자의 정보가 유효하게 적용되어 부팅이 완료될 수 있다(S44 단계). 부팅 후, OS가 시작하면, 컴퓨터 장치는 BIOS에 저장되어 있던 메모리 용량 정보를 유효하게 인식하게 된다(S46 단계).
한편, 메모리 장치의 적어도 일부를 세이프 메모리 모드로 사용하기 위해서는, 그에 따른 메모리 용량 변경 내용을 시스템에 반영하는 것 외에, 세이프 메모리 영역에 대해서는 셀 햄머 현상을 예방할 수 있는 메모리 셀 액세스 제어가 필요하다. 메모리 셀 액세스 제어를 위한 방법은 여러 가지가 있을 수 있다. 이하에서는 이를 설명한다.
도 9 내지 도 14는 제1 실시예에 따른 메모리 셀 액세스 제어 방법(이하, '제1 액세스 제어 방법'이라 함)을 설명하기 위한 도면이다. 도 9는 제1 액세스 제어 방법의 수행 절차를 개략적으로 도시한 흐름도이고, 도 10은 제1 액세스 제어 방법이 이용하는 세이프 어드레스 매핑 알고리즘의 로직을 도시한 흐름도이다. 도 11은 제1 액세스 제어 방법을 수행하기 위한 장치의 예시적 구성을 나타낸 블록도이다. 도 12, 13, 및 14는 세이프 메모리 영역에 대해 용량 축소율(1/k)을 1/2, 1/3, 그리고 1/4로 각각 적용하는 경우, 그 세이프 메모리 영역에 대한 세이프 어드레스 매핑 방법을 도식적으로 나타낸다.
이 제1 액세스 제어 방법은 메모리 장치(66) 내에 세이프 어드레스 매핑 필터(67)를 내장시켜두고, 그 매핑 필터(67)를 통해 메모리 콘트롤러(64)가 제공하는 메모리 어드레스를 메모리 셀(68)의 인에이블 상태의 셀 어드레스로 매핑시켜주는 것을 핵심 아이디어로 한다. 세이프 어드레스 매핑 필터(67)는 세이프 메모리 영역 및/또는 노말 메모리 영역의 용량 정보, 용량 축소율 정보 등을 예컨대 OS 프로세스로부터 제공받을 수 있고, 그 정보에 의거하여 어드레스 매핑을 수행할 수 있다.
구체적으로 설명하면, 컴퓨터 장치(60)의 프로세서(62)가 메모리 장치(66)에 대한 액세스 요청을 하기 위해 물리적 어드레스를 메모리 콘트롤러(64)에 제공한다(S50 단계). 메모리 콘트롤러(64)는 메모리 어드레스 매핑 테이블(65)을 이용한 통상적인 방식으로 그 물리적 어드레스를 메모리 어드레스로 매핑하여 메모리 장치(66)로 제공한다(S52 단계). 그 메모리 어드레스는 메모리 장치(66)에 내장된 세이프 어드레스 매핑 필터(67)로 전달된다(S54). 세이프 어드레스 매핑 필터(67)에서는 전달받은 그 메모리 어드레스가 세이프 메모리 영역에 속하는지를 판별하여(S56 단계), 속하는 경우에는 세이프 어드레스 매핑 알고리즘에 따라 어드레스 매핑을 수행한다(S58 단계). 즉, 상기 메모리 셀 어드레스를 인에이블 메모리 셀들의 어드레스로만 매핑한다. 그리고 그 매핑을 통해 생성된 메모리 어드레스는 세이프 메모리 영역 내의 메모리 셀에 대한 액세스 정보로서 사용되도록 한다(S59 단계). 만약 S56 단계에서, 속하지 않는 것으로 판별되면, S58 단계는 생략하고, 메모리 콘트롤러(64)가 제공한 메모리 어드레스를, 실질적으로 다른 어드레스로 변환하지 않고, 그대로 이용하여 노말 메모리 영역 내의 메모리 셀에 대한 액세스 정보로 사용한다(S59 단계).
세이프 어드레스 매핑 필터(67)를 이용하여 세이프 메모리 영역에 대한 어드레스 매핑을 수행하는 절차(단계 S56 및 S58)를 도 10의 흐름도를 참조하면서 좀 더 구체적으로 설명한다. 도 10의 세이프 어드레스 매핑 알고리즘에 따르면, 메모리 장치(66)의 셀 어레이(68)의 전체 열(column)의 개수를 k로 나누었을 때의 제1 나머지가 0인 경우에는, 액세스 하려는 현재 로우(행)의 번호를 세이프 메모리 영역의 용량 축소율의 역수인 2로 나눈 제2 나머지가 0이면 상기 메모리 셀 어드레스(Addr)를 상기 메모리 셀 어드레스(Addr)에 k를 곱한 값에서 m을 뺀 값으로 변환하고, 상기 제2 나머지가 0이 아니면 상기 메모리 셀 어드레스(Addr)를 상기 메모리 셀 어드레스(Addr)에 k를 곱한 값으로 변환한다. 또한, 상기 제1 나머지가 0이 아닌 경우에는 상기 메모리 셀 어드레스(Addr)를 상기 메모리 셀 어드레스(Addr)에 k를 곱한 값으로 변환한다.
도 12 내지 14를 참조하면서 좀 더 구체적으로 설명한다. 도 12 내지 14에서 숫자 '1'이 표시된 메모리 셀들은 액세스 가능한 인에이블 셀이고, 빈 네모박스로 표시된 나머지 메모리 셀들은 액세스 불가능한 디스에이블 셀을 나타낸다. 우선 메모리 콘트롤러(64)가 제공하는 메모리 어드레스(Addr)가 세이프 메모리 영역의 주소 범위(Safe_Addr)에 속하는지를 체크한다(S60 단계). 예컨대, 메모리 어드레스(Addr)가 세이프 메모리 영역의 시작 어드레스(예: 0000:0000) 이상 말단 어드레스(예: Safe_Addr=0010:0000) 미만의 범위에 속하는지 여부를 판별할 수 있다. 세이프 메모리 영역에 속하지 않으면, 그 메모리 어드레스(Addr)는 노말 메모리 영역에 속하는 것이므로, 도 10의 세이프 어드레스 매핑 과정을 수행하지 않는다.
S60 단계에서 메모리 어드레스(Addr)가 세이프 메모리 영역에 속하는 것으로 확인되면, 메모리 장치(66)의 메모리 셀 어레이(68)의 전체 열(column)의 개수(달리 말하면, 한 행(row)당 메모리 셀의 개수)를 세이프 메모리 영역의 용량 축소율의 역수인 k로 나누었을 때의 나머지(제1 나머지) 값이 0인지 여부를 체크한다(S62 단계).
제1 나머지가 0이 아닌 경우에는, 세이프 메모리 영역 내의 메모리 셀들 중 k의 배수 번째 메모리 셀들만을 어드레스의 오름차순으로 액세스 가능한 인에이블 메모리 셀들로 설정하면, 그 인에이블 메모리 셀들은 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치되어 셀 햄머 현상을 예방할 수 있게 된다(도 12의 (b), 도 13의 (b)와 (c), 그리고 도 14의 (b)와 (c)참조). 따라서 이 경우에는, 상기 메모리 어드레스(Addr)는 'Addr=Addr x k'의 관계식을 이용하여 계산된 어드레스 값으로 치환한다(S68 단계).
이와 달리, 상기 제1 나머지가 0인 경우에는(도 12, 13, 14 각각의 (a)가 이 경우에 해당함), 액세스 할 현재 행(row)의 번호가 짝수인지 여부를 체크한다. 즉, 액세스 할 현재 행(row)의 번호를 2로 나누었을 때의 나머지(제2 나머지)가 0인지 여부를 더 체크한다(S64 단계). S64 단계에서, 만약 그 나머지 값이 0이면 즉, 액세스 할 현재 행이 짝수 번째의 행이면, 도 12, 13, 14 각각의 (a)에 예시된 것처럼, 세이프 메모리 영역 내의 메모리 셀들 중 k의 배수 번째 메모리 셀들만을 어드레스의 오름차순으로 액세스 가능한 인에이블 메모리 셀들로 설정하면, 그 인에이블 메모리 셀들은 수평 방향으로는 적어도 한 개의 메모리 셀 구간 이상 이격되어 있지만, 수직 방향으로는 바로 옆에 인접하여 배치되게 되어 셀 햄머 위험에 노출될 수 있다. 따라서 이 경우에는 도 12 내지 14에서 화살표로 표시한 것처럼 짝수 번 째 행의 셀들은 그 셀들의 어드레스를 한 열 이상 좌나 우로 이동시키는 것이 바람직하다. 이는 상기 메모리 어드레스(Addr)를 'Addr=Addr x k ­ m'의 관계식을 이용하여 계산된 어드레스 값으로 치환함으로써 달성될 수 있다(S66 단계). 이렇게 하면 세이프 메모리 영역의 모든 메모리 셀들은 수직방향 및 수평방향으로 서로 적어도 한 셀 구간 이상 이격되어 있게 된다.
또한, 단계 64에서 계산한 제2 나머지가 0이 아닐 경우에는, 상기 메모리 어드레스(Addr)는 'Addr=Addr x k'의 관계식을 이용하여 계산된 어드레스 값으로 치환한다(S68 단계). 세이프 메모리 영역 내의 메모리 셀들 중 k의 배수 번째 메모리 셀들만을 어드레스의 오름차순으로 액세스 가능한 인에이블 메모리 셀들로 설정하면, 그 인에이블 메모리 셀들은 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치되어 셀 햄머 현상을 예방할 수 있게 된다(도 12의 (b), 도 13의 (b)와 (c), 그리고 도 14의 (b)와 (c)참조).
여기서, k는 2 이상의 자연수이고, m은 k보다 작은 자연수(들) 중 어느 하나이다. 예컨대, k = 3인 경우, Addr = Addr x k ­ m 는 'Addr = Addr x 3 ­ 1'일 수 있으며 또한 'Addr = Addr x 3 ­ 2'일 수도 있다. k = 4인 경우, 'Addr = Addr x 4 ­ 1' 또는 'Addr = Addr x 4 ­ 2' 또는 'Addr = Addr x k ­ 3'일 수 있다.
세이프 어드레스 매핑 필터(67)는 도 10과 같은 로직을 소프트웨어적으로 구현한 것일 수 있다. 도 10의 로직을 프로그램 언어로 코딩하면 아래와 같을 수 있다.
Figure 112015109850845-pat00001
도 15는 메모리 셀 액세스 제어를 위한 방법의 제2 실시예(이하, '제2 액세스 제어 방법'이라 함)를 수행하기 위한 장치(100)의 예시적 구성을 나타낸 블록도이다. 제2 액세스 제어 방법은 메모리 콘트롤러(104)의 메모리 어드레스 매핑부(105)에 본 발명에 따른 세이프 어드레스 매핑 필터(106)를 추가하는 점에 특징이 있다. 이 세이프 어드레스 매핑 필터(106)의 기본 알고리즘은 도 10에 도시한 것과 실질적으로 동일할 수 있다. 제1 액세스 제어 방법과 비교할 때, 세이프 어드레스 매핑 필터를 메모리 장치(108)에 내장시키지 않고 메모리 콘트롤러(104)에 내장시켰다는 점에서 차이가 있다.
메모리 콘트롤러(104)의 메모리 어드레스 매핑부(105)는 프로세스(102)가 지시하는 물리적 어드레스가 세이프 메모리 영역에 속하는지를 판별한다. 그 판별 결과, 세이프 메모리 영역에 속하는 경우에는, 메모리 콘트롤러(104)는 세이프 어드레스 매핑 필터(106)를 통해 어드레스 매핑을 수행하고, 그 매핑으로 얻어진 메모리 어드레스를 이용하여 메모리 장치(108)이 세이프 메모리 영역의 인에이블 메모리 셀들에 대한 액세스를 한다. 이 때, 세이프 어드레스 매핑 필터(106)를 통한 세이프 메모리 영역에 대한 액세스는 제1 액세스 제어 방법에 관한 설명을 참조하면 이해될 수 있을 것이므로, 여기서는 그에 관한 설명은 생략한다. 상기 물리적 어드레스가 노말 어드레스 영역에 속하면, 메모리 콘트롤러(104)는 통상적인 노말 어드레스 매핑 테이블(107)에 의거하여 매핑된 메모리 어드레스를 이용하여 메모리 장치(108)에 액세스 한다.
다음으로, 도 16과 17은 메모리 셀 액세스 제어를 위한 방법의 제3 실시예(이하, '제3 액세스 제어 방법'이라 함)의 실행 절차와 그것을 실행하기 위한 장치를 각각 도시한다. 제3 액세스 제어 방법은, 메모리 범위 셀렉터(Memory Range Selector: MRS) 레지스터(124)의 세이프 어드레스 매핑 정보를 이용하여 메모리 장치(132)의 세이프 메모리 영역의 설정과 그 영역에 대한 액세스를 제어한다.
도 16과 17을 참조하여 구체적으로 설명한다. 제3 액세스 제어 방법은 메모리 장치(134)의 전체 셀 영역(132)에 대하여 세이프 메모리 영역의 용량과 노말 메모리 영역의 용량에 관한 설정이 먼저 이루어져, 그 설정 정보를 BIOS(122)가 알고 있는 경우를 고려한다. 또한, 메모리 장치(134)의 특성 정보를 저장하는 메모리 범위 선택기(Memory Range Selector: MRS) 레지스터(124)를 이용하여, 세이프 메모리 영역 및/또는 노말 메모리 영역에 관한 설정 정보를 활성화시킨다. 각 세이프 및 노말 메모리 영역에 대한 액세스 제어는 세이프 어드레스 매핑 필터(128)를 사용하여 수행한다. 세이프 어드레스 매핑 필터(128)는 제1 액세스 제어 방법에 관해 설명한 세이프 어드레스 매핑 필터(67)와 실질적으로 동일한 알고리즘에 기초한다.
제3 액세스 제어 방법을 좀 더 구체적으로 설명하면, 컴퓨팅 장치(120)의 전원을 켜서 부팅 절차가 개시되면(S70, S72 단계), 메모리 장치(34)의 전체 셀 영역(132)에 대한 초기화 작업이 수행될 수 있다(S74). 이 때, MRS 레지스터(124)의 각종 레지스터에 기록되어 있는 정보들도 초기화할 수 있다. BIOS(122)는 메모리 셀(132)의 세이프 메모리 영역과 노말 메모리 영역의 용량에 관한 설정 정보를 알고 있으므로(S29 단계 참조), BIOS(122)는 그 설정 정보에 기초하여 세이프 어드레스 매핑 정보를 비롯한 MRS 정보를 MRS 레지스터(124)에 제공한다. 세이프 어드레스 매핑 정보는 본 발명을 위해 특별히 마련된 세이프 어드레스 매핑 레지스터(126)에 저장된다(S76 단계). 이런 과정을 거치면서 부팅이 완료될 수 있고, 또한 OS가 실행될 수 있다. 이 상태에서는 세이프 어드레스 매핑 정보가 세이프 어드레스 매핑 레지스터(126)에 단지 저장만 되어 있을 뿐, 유효하게 활용되지는 못하게 할 수 있다. 즉, 세이프 어드레스 매핑 레지스터(126)가 외부로부터 특별히 인에이블 요청을 받지 않는 한 기본적으로 디스에이블 상태로 있게 할 수 있다.
이렇게 부팅 완료 후 컴퓨터 장치(120)의 OS 프로그램이 실행되고 있는 동안에는(S78 단계), 메모리 장치(134)는 전체 영역이 노말 모드로 사용되고 있을 수 있다. 그런 상태에서 메모리 장치(134) 전체 영역이나 그 일부 영역을 세이프 어드레스 영역으로 전환하여 사용할 필요가 생길 수 있다. 그 경우, 소프트웨어적으로 세이프 어드레스 매핑 레지스터(126)에 저장된 세이프 어드레스 매핑 정보를 활성화할 수 있다.
구체적으로, 특정 프로그램이 BIOS(122)를 호출하여 세이프 어드레스 매핑 정보의 활성화를 요청할 수 있다. 이 활성화 요청은 OS 프로그램을 통해 BIOS(123)에 전달될 수 있다(S80 단계). 활성화 요청에 응하여 BIOS(123)는 세이프 어드레스 매핑 레지스터(126)를 인에이블 상태로 전환하는 요청을 보낸다(S82 단계).
이렇게 하여 세이프 어드레스 매핑 레지스터(126)가 활성화되면, 세이프 어드레스 매핑 레지스터(126)에 저장되어 있던 세이프 어드레스 매핑 정보가 유효하게 활용된다. 이 세이프 어드레스 매핑 정보는 세이프 메모리 모드로 사용될 메모리 용량(시작 어드레스와 말단 어드레스), 용량 축소율 등에 관한 정보를 포함한다. 이 정보에 의거하여 메모리 장치(134)의 셀 영역에 대하여 세이프 메모리 영역과 노말 메모리 영역이 설정될 수 있다(S86 단계). 이러한 영역 설정은 앞에서 설명한 여러 가지 영역 설정 방법들 중 어느 한 가지에 따라 수행될 수 있을 것이다.
또한, 세이프 어드레스 매핑 정보가 세이프 어드레스 매핑 필터(128)에 제공된다. 세이프 어드레스 매핑 필터(128) 또한 인에이블 되어, 앞에서 설명한 세이프 어드레스 매핑 알고리즘(도 10에 관한 설명 참조)에 따라 물리적 어드레스를 메모리 어드레스로 매핑한다(S88 단계).
이와 같은 과정을 통해, 세이프 어드레스 매핑 레지스터(126)에 저장된 세이프 어드레스 매핑 정보를 소프트웨어적으로 활성화함으로써, 메모리 장치(134)에 대한 액세스가 세이프 메모리 영역과 노말 메모리 영역으로 구분되어 제어될 수 있다.
그런데, 세이프 어드레스 매핑 정보가 활성화되기까지는 메모리 장치(134)는 전체 영역이 노말 메모리 영역으로 사용되었을 것이다. 데이터는 그 중요도에 상관없이 메모리 영역 전반에 골고루 분산되어 기록되어 있을 수 있다. 세이프 메모리 영역을 설정하여 사용하려는 목적은 중요한 데이터를 그 세이프 메모리 영역에서만 기록되도록 하기 위함이다. 이를 위해, 메모리 셀(132)에 대하여 조각모으기(Defragmentation) 작업을 수행하는 과정(S84 단계)을 거칠 수도 있다. 이 작업은 세이프 메모리 영역과 상기 노말 메모리 영역의 설정(S86 단계) 전에 수행할 수 있다. 이를 통해, 메모리 셀(132)에 이미 기록된 데이터를 특정 영역으로 집합시킬 수 있다.
다음으로, 메모리 셀 액세스 제어를 위한 방법의 제4 실시예(이하, '제4 액세스 제어 방법'이라 함)를 설명한다. 이 방법의 실행 절차는 도 18의 흐름도에 개략적으로 도시되어 있다. 이 방법을 실행하기 위한 장치의 구성은 도 19에 도시되어 있다.
제4 액세스 제어 방법은 OS(142)의 메모리 관리부(144)에 세이프 어드레스 매핑 기능을 부여하여, 그것을 통해 메모리 장치(152)의 세이프 메모리 영역의 설정과 그 영역에 대한 액세스를 제어하는 방법이다.
컴퓨팅 장치(140)의 전원을 켜면 BIOS가 실행되어 통상적인 부팅절차가 진행되고, 그 과정에서 메모리 장치(152)에 대한 초기화도 이루어질 수 있다(S90, S92 단계). 부팅절차가 끝나면 OS(142)가 실행되는데(S94 단계), 그 때 OS(142)의 메모리 관리부(144)도 함께 실행될 수 있다.
그 메모리 관리부(144)는 본 발명에 따라 구현된 세이프 어드레스 매핑부(146)를 포함한다. 이 세이프 어드레스 매핑부(146)는 메모리 장치(152)의 셀 영역의 전부 또는 일부를 세이프 메모리 영역으로 설정할 수 있는 기능과, 세이프 메모리 영역에 대하여 셀 햄머를 방지하기 위한 액세스 제어 기능을 포함할 수 있다. 세이프 어드레스 매핑부(146)는 OS가 시작할 때 자동으로 인에이블 되거나, 또는 사용자의 요청에 의해 트리거링 되어 인에이블 될 수 있다(S96 단계).
세이프 어드레스 매핑부(146)가 인에이블 되면, 메모리 장치(152)에 대한 세이프 메모리 영역 설정이 이루어질 수 있다. 예컨대, 세이프 어드레스 매핑부(146)는, BIOS에서와 비슷하게 즉, 도 8과 실질적으로 동일하거나 유사한 사용자 인터페이스 화면을 띄워주고, 사용자가 세이프 메모리 모드에 관한 설정을 하도록 유도한다. 그리고 세이프 메모리 영역에 관한 사용자 설정값을 데이터 저장소에 저장해둔다. 그 데이터 저장소는 예컨대 별도의 프로그램가능 롬이나 비휘발성 저장소일 수 있다.
컴퓨팅 장치(140)의 하드웨어가 요청하는 어드레스는 메모리 관리부(144)의 세이프 어드레스 매핑부(146)에 전달될 수 있다. 여기서, 하드웨어는 프로세서(148)나 메모리 콘트롤러(150)가 될 수 있다. 그 요청된 어드레스를 세이프 메모리 영역의 어드레스로 매핑하는 것은, 앞에서 설명한 도 10의 세이프 어드레스 매핑 알고리즘에 따라 수행할 수 있다. 이를 통해, 상기 요청된 어드레스를 세이프 어드레스 영역에 대한 세이프 어드레스로 변환할 수 있다(S98 단계). 그리고 세이프 어드레스 매핑부(146)는 그 변환된 어드레스를 다시 어드레스 요청을 한 하드웨어에 리턴할 수 있다(S100 단계). 그 하드웨어는 리턴된 메모리 어드레스를 이용하여 메모리 장치(152)에 액세스 할 수 있다(S102 단계). 여기서, 하드웨어에 리턴된 메모리 어드레스는 세이프 메모리 영역 내의 인에이블 메모리 셀들의 어드레스로만 매핑된다.
이상에서는 본 발명에 따른 여러 가지 실시예를 설명하였다. 본 발명에 따르면, 메모리 장치의 셀 영역을 필요에 따라 원하는 용량만큼 세이프 메모리 영역으로 설정할 수 있고, 그 영역의 메모리 셀들에 대해서는 일부만이 쓰기/읽기에 사용되도록 액세스 제어를 할 수 있다. 액세스 가능한 세이프 메모리 영역 내의 일부 셀들은 서로 간에 수직방향 및 수평방향으로 바로 옆에 위치하지 않고 적어도 하나의 셀 구간만큼 서로 이격되도록 한다. 따라서 이런 셀들 간에는 셀 햄머로 인한 데이터 손실 내지 오염을 예방할 수 있다.
이상에서는 몇 가지 실시예를 참조하면서 본 발명을 설명하였다. 메모리 셀들이 고르게 사용될 수 있도록 하면, 메모리 장치의 신뢰도를 오래 유지하는 데 유리하다. 이를 위해, 본 발명의 각 실시예에서, 컴퓨팅 장치가 부팅되는 시점을 기회로 세이프 메모리 영역의 인에이블 메모리 셀들은 디스에이블 메모리 셀들로 설정되게 하고, 디스에이블 메모리 셀들은 인에이블 메모리 셀들로 설정되도록 제어할 수 있다.
또한, 세이프 메모리 영역의 용량은 다이나믹하게 변경할 수 있다. 용량 축소율(1/k) 값을 바꾸는 방법, 또는 세이프 메모리 영역의 범위를 늘이거나 줄이는 등의 방법으로 가능할 수 있다.
본 발명은 셀 햄머 현상이 일어날 수 있는 메모리 소자들이라면 특별한 제한없이 널리 적용될 수 있다. 예를 들어, DRAM(Dynamic random-access memory), SRAM(Static random-access memory) 등과 같은 RAM, 프로그램가능 롬, 플래쉬메모리 등에도 적용될 수 있다. 하나의 메모리 칩, 여러 개의 메모리 칩이 집합된 메모리 모듈에도 적용될 수 있다. 또한 본 발명은 복수의 반도체 다이(semiconductor die)들이 수직으로 적층된 3차원 메모리에도 적용될 수 있다.
본 발명은 또한, 다양한 컴퓨팅 시스템에서 적용, 실시될 수 있다. 여기서, 컴퓨팅 시스템은 개인용 컴퓨터(Personal Computer; PC), 서버 컴퓨터(Server Computer), 워크스테이션(Workstation), 노트북(Laptop), 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 디지털 카메라(Digital Camera), 디지털 TV(Digital Television), 셋-탑 박스(Set-Top Box), 음악 재생기(Music Player), 휴대용 게임 콘솔(portable game console), 네비게이션(Navigation) 시스템 등과 같은 임의의 컴퓨팅 시스템일 수 있다.
또한, 본 발명은 다양한 프로세서들에 의해 실행될 수 있다. 그 프로세서는 특정 계산들 또는 태스크들과 같은 다양한 컴퓨팅 기능들을 실행할 수 있는 것이다. 예를 들어, 프로세서는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 실시예에 따라, 프로세서는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 예를 들어, 프로세서는 듀얼 코어(Dual-Core), 쿼드 코어(Quad-Core), 헥사 코어(Hexa-Core) 등의 멀티 코어(Multi-Core)를 포함할 수 있다. 또한, 각 실시예에서는 하나의 프로세서를 포함하는 컴퓨팅 장치가 도시되어 있으나, 실시예에 따라, 컴퓨팅 장치는 복수의 프로세서들을 포함할 수 있다. 또한, 실시예에 따라, 프로세서는 내부 또는 외부에 위치한 캐시 메모리(Cache Memory)를 더 포함할 수 있다.
각 실시예의 도면에서, 프로세서는 메모리 장치의 동작을 제어하는 메모리 컨트롤러과는 별도로 독립된 형태로 도시되어 있지만, 메모리 콘트롤러를 포함할 수 있다. 메모리 컨트롤러와 메모리 장치 사이의 메모리 인터페이스는 복수의 신호선들을 포함하는 하나의 채널로 구현되거나, 복수의 채널들로 구현될 수 있다. 또한, 각 채널에는 하나 이상의 메모리 모듈이 연결될 수 있다. 실시예에 따라, 메모리 컨트롤러는 입출력 허브 내에 위치할 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
20: 실제 메모리
30: 세이프 메모리 모드로 사용되는 메모리
34, 48: 셀 햄머 영향권
32, 46: 기록 대상 메모리 셀
40: 노말-세이프 하이브리드 메모리 모드로 사용되는 메모리
42: 세이프 메모리 영역
44: 노말 메모리 영역

Claims (10)

  1. 컴퓨팅 장치의 메모리 장치에 대한 액세스를 제어하는 방법에 있어서,
    상기 메모리 장치의 전체 메모리 셀들 중에서, 적어도 일부 영역을 세이프 메모리 영역으로 설정하고 나머지 영역을 노말 메모리 영역으로 설정하며, 상기 세이프 메모리 영역의 메모리 셀들의 일부를 읽기 또는 쓰기를 위해 액세스할 수 있는 인에이블(enable) 상태로 설정하고 나머지를 읽기 또는 쓰기를 위해 액세스할 수 없는 디스에이블(disable) 상태로 설정하며, 상기 노말 메모리 영역의 모든 메모리 셀들을 상기 인에이블 상태로 설정하는 접근가능성 설정단계;
    디스에이블 상태로 설정된 디스에이블 메모리 셀들을 무시하고, 인에이블 상태로 설정된 인에이블 메모리 셀들에 대해서만 읽기 또는 쓰기를 위한 액세스가 이루어지도록 제어하는 액세스 제어 단계를 포함하며,
    상기 인에이블 메모리 셀들은 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치되어 있고,
    상기 액세스 제어 단계는,
    상기 컴퓨팅 장치의 프로세서가 접근하려는 메모리 셀 어드레스가 상기 세이프 메모리 영역에 속할 때에는, 세이프 어드레스 매핑 알고리즘에 의거하여 상기 메모리 셀 어드레스를 상기 인에이블 메모리 셀들의 어드레스로만 매핑하여, 그 매핑으로 변환된 메모리 셀 어드레스가 상기 세이프 메모리 영역 내의 메모리 셀에 대한 액세스 정보로 사용되도록 하는 단계; 및
    상기 프로세서가 접근하려는 메모리 셀 어드레스가 상기 노말 메모리 영역에 속할 때에는, 상기 메모리 셀 어드레스를, 실질적으로 다른 어드레스로 변환하지 않고, 그대로 상기 노말 메모리 영역 내의 메모리 셀에 대한 액세스 정보로서 사용되도록 하는 단계를 포함하고,
    상기 세이프 어드레스 매핑 알고리즘은,
    상기 메모리 장치의 셀 어레이의 전체 열(column)의 개수를 k로 나누었을 때의 제1 나머지를 계산하고, 상기 제1 나머지가 0이 아닌 경우에는 메모리 셀 어드레스 Addr을 ‘메모리 셀 어드레스 Addr 곱하기 k’로 계산된 값,‘Addr x k’으로 변환하고,
    상기 제1 나머지가 0인 경우에는, 액세스 하려는 현재 로우(행)의 번호를 2로 나눈 제2 나머지를 계산하고, 상기 제2 나머지가 0인 경우에는 상기 메모리 셀 어드레스 Addr을 k를 곱한 값에서 m을 뺀 값 ‘k x Addr - m’으로 변환하고, 상기 제2 나머지가 0이 아닌 경우에는 상기 메모리 셀 어드레스 Addr을 ‘메모리 셀 어드레스 Addr 곱하기 k’로 계산된 값,‘Addr x k’으로 변환하는 로직을 포함하고, 여기서 k는 상기 메모리 셀 어드레스 Addr에 세이프 메모리 영역의 용량 축소율의 역수이면서 1보다 큰 자연수이고, m은 k보다 작은 자연수이고,
    상기 메모리 셀 어드레스 Addr은 다이렉트 매핑(direct mapping) 방식에 따라 상기 메모리 셀 어레이의 행 어드레스와 열 어드레스가 결합된 것인 메모리 셀 액세스 제어 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서, 상기 세이프 어드레스 매핑 알고리즘에 의거하여 구현된 세이프 어드레스 매핑 필터를 상기 메모리 장치에 포함시키는 단계를 더 포함하여, 상기 세이프 어드레스 매핑 필터가 상기 컴퓨팅 장치의 메모리 콘트롤러로부터 상기 컴퓨팅 장치의 프로세서가 접근하려는 메모리 셀 어드레스를 제공받아 상기 인에이블 메모리 셀들에 대한 어드레스 매핑을 수행하는 것을 특징으로 하는 메모리 셀 액세스 제어 방법.
  5. 제1항에 있어서, 상기 세이프 어드레스 매핑 알고리즘에 의거하여 구현된 세이프 어드레스 매핑 필터를 상기 컴퓨팅 장치의 메모리 콘트롤러에 포함시키는 단계를 더 포함하여, 상기 세이프 어드레스 매핑 필터가 상기 컴퓨팅 장치의 프로세서로부터 메모리 셀 어드레스를 제공받아 상기 인에이블 메모리 셀들에 대한 어드레스 매핑을 수행하는 것을 특징으로 하는 메모리 셀 액세스 제어 방법.
  6. 제1항에 있어서, 상기 컴퓨팅 장치의 부팅 시, 상기 메모리 장치의 세이프 메모리 영역과 노말 메모리 영역의 용량에 관한 BIOS의 설정 정보에 기초하여, BIOS의 세이프 어드레스 매핑 정보를 상기 메모리 장치에 제공하는 단계; 운영체제(OS) 프로그램의 실행 중에, 특정 프로그램이 BIOS를 호출하여 상기 세이프 어드레스 매핑 정보의 활성화를 요청하는 단계; 및 상기 BIOS가 상기 메모리 장치에 미리 제공되어 있는 상기 세이프 어드레스 매핑 정보를 활성화시켜, 상기 메모리 장치가 상기 세이프 메모리 영역과 상기 노말 메모리 영역으로 구분되어 액세스 할 수 있는 상태로 만드는 단계를 더 포함하는 것을 특징으로 하는 메모리 셀 액세스 제어 방법.
  7. 제1항에 있어서, 상기 접근가능성 설정 단계와 상기 액세스 제어 단계를 수행하기 위한 로직을 구현한 세이프 어드레스 매핑 필터를 상기 컴퓨팅 장치에서 실행되는 운영체제(OS) 프로그램의 메모리 관리부에 포함시키는 단계; 상기 세이프 어드레스 매핑 필터를 인에이블 시켜, 상기 컴퓨팅 장치의 하드웨어에서 요청하는 메모리 셀 어드레스를 상기 세이프 어드레스 매핑 필터를 통해 상기 인에이블 메모리 셀들의 어드레스로만 매핑하여, 그 매핑으로 변환된 메모리 셀 어드레스를 상기 하드웨어로 리턴해주는 단계를 더 포함하여,
    상기 하드웨어가 리턴된 메모리 셀 어드레스에 의거하여 상기 메모리 장치에 액세스할 수 있는 것을 특징으로 하는 메모리 셀 액세스 제어 방법.
  8. 컴퓨팅 장치의 메모리 장치에 대한 액세스를 제어하는 방법에 있어서,
    상기 메모리 장치의 전체 메모리 셀들 중 적어도 일부 영역을 세이프 메모리 영역으로 설정하고, 나머지 영역을 노말 메모리 영역으로 설정하는 단계;
    상기 세이프 메모리 영역의 일부 셀들을 읽기 또는 쓰기를 위해 액세스할 수 있는 인에이블 상태로 설정하고, 나머지 셀들은 읽기 또는 쓰기를 위해 액세스할 수 없는 디스에이블 상태로 설정하는 단계;
    상기 노말 메모리 영역의 셀들은 전부 인에이블 상태로 설정하는 단계; 및
    상기 세이프 메모리 영역의 전체 메모리 셀들에 있어서, 디스에이블 상태로 설정된 디스에이블 메모리 셀들을 무시하고, 인에이블 상태로 설정된 인에이블 메모리 셀들에 대해서만 읽기 또는 쓰기를 위한 액세스가 이루어지도록 제어하는 액세스 제어 단계를 포함하며,
    상기 세이프 메모리 영역의 전체 메모리 셀들 중 상기 인에이블 메모리 셀들은 수평 방향 및/또는 수직 방향으로 적어도 하나의 디스에이블 메모리 셀에 의해 불연속적으로 배치되어 있고,
    상기 액세스 제어 단계는,
    상기 컴퓨팅 장치의 프로세서가 접근하려는 메모리 셀 어드레스가 상기 세이프 메모리 영역에 속할 때에는, 세이프 어드레스 매핑 알고리즘에 의거하여 상기 메모리 셀 어드레스를 상기 인에이블 메모리 셀들의 어드레스로만 매핑하여, 그 매핑으로 변환된 메모리 셀 어드레스가 상기 세이프 메모리 영역 내의 메모리 셀에 대한 액세스 정보로 사용되도록 하는 단계를 포함하고,
    상기 세이프 어드레스 매핑 알고리즘은,
    상기 메모리 장치의 셀 어레이의 전체 열(column)의 개수를 k로 나누었을 때의 제1 나머지가 0인 경우에는, 액세스 하려는 현재 로우(행)의 번호를 2로 나눈 제2 나머지가 0이면 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 세이프 메모리 영역의 용량 축소율의 역수인 k를 곱한 값에서 m을 뺀 값으로 변환하고, 상기 제2 나머지가 0이 아니면 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 k를 곱한 값으로 변환하며, 상기 제1 나머지가 0이 아닌 경우에는 상기 메모리 셀 어드레스를 상기 메모리 셀 어드레스에 k를 곱한 값으로 변환하는 로직을 포함하며, 여기서, 상기 k는 2 이상의 자연수이고, 상기 m은 상기 k보다 작은 자연수(들) 중 어느 하나이고,
    상기 메모리 셀 어드레스 Addr은 다이렉트 매핑(direct mapping) 방식에 따라 상기 메모리 셀 어레이의 행 어드레스와 열 어드레스가 결합된 것인 메모리 셀 액세스 제어 방법.
  9. 제8항에 있어서, 상기 액세스 제어 단계는,
    상기 프로세서가 접근하려는 메모리 셀 어드레스가 상기 노말 메모리 영역에 속할 때에는, 상기 메모리 셀 어드레스를, 실질적으로 다른 어드레스로 변환하지 않고, 그대로 상기 노말 메모리 영역 내의 메모리 셀에 대한 액세스 정보로서 사용되도록 하는 단계를 더 포함하는 것을 특징으로 하는 메모리 셀 액세스 제어 방법.
  10. 삭제
KR1020150158097A 2015-11-11 2015-11-11 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법 KR102388746B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150158097A KR102388746B1 (ko) 2015-11-11 2015-11-11 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법
US15/345,684 US10318188B2 (en) 2015-11-11 2016-11-08 Method of controlling memory cell access based on safe address mapping

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150158097A KR102388746B1 (ko) 2015-11-11 2015-11-11 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법

Publications (2)

Publication Number Publication Date
KR20170055206A KR20170055206A (ko) 2017-05-19
KR102388746B1 true KR102388746B1 (ko) 2022-04-20

Family

ID=58667736

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150158097A KR102388746B1 (ko) 2015-11-11 2015-11-11 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법

Country Status (2)

Country Link
US (1) US10318188B2 (ko)
KR (1) KR102388746B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG10201708104QA (en) * 2017-10-02 2019-05-30 Huawei Int Pte Ltd Computer implemented method for preventing rowhammer attack in a computing device
EP3591565A1 (en) * 2018-07-04 2020-01-08 Koninklijke Philips N.V. Computing device with increased resistance against rowhammer attacks
WO2020007813A1 (en) * 2018-07-04 2020-01-09 Koninklijke Philips N.V. Computing device with increased resistance against rowhammer attacks
KR102692942B1 (ko) * 2018-11-22 2024-08-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080052458A1 (en) * 2006-08-24 2008-02-28 Stmicroelectronics S.R.L. Non-volatile, electrically-programmable memory
US20090100244A1 (en) 2007-10-15 2009-04-16 Li-Pin Chang Adaptive hybrid density memory storage device and control method thereof
US20110246709A1 (en) * 2007-03-19 2011-10-06 A-Data Technology Co., Ltd. Memory system having hybrid density memory and methods for wear-leveling management and file distribution management thereof

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5915265A (en) 1995-12-22 1999-06-22 Intel Corporation Method and apparatus for dynamically allocating and resizing the dedicated memory in a shared memory buffer architecture system
US6807106B2 (en) * 2001-12-14 2004-10-19 Sandisk Corporation Hybrid density memory card
US6751143B2 (en) 2002-04-11 2004-06-15 Micron Technology, Inc. Method and system for low power refresh of dynamic random access memories
KR20040076454A (ko) 2003-02-25 2004-09-01 삼성전자주식회사 메모리유닛 및 메모리/허브유닛 조립체
US7146456B2 (en) 2003-09-29 2006-12-05 Infineon Technologies North America Corp. Memory device with a flexible reduced density option
CN100454276C (zh) 2004-06-15 2009-01-21 索尼株式会社 信息管理设备和信息管理方法
US20050289294A1 (en) 2004-06-29 2005-12-29 Micron Technology, Inc. DRAM with half and full density operation
US8411483B2 (en) * 2009-07-10 2013-04-02 Taiwan Semiconductor Manufacturing Company, Ltd. Testing one time programming devices
US8085603B2 (en) * 2009-09-04 2011-12-27 Integrated Device Technology, Inc. Method and apparatus for compression of configuration bitstream of field programmable logic
US8917533B2 (en) * 2012-02-06 2014-12-23 Shine C. Chung Circuit and system for testing a one-time programmable (OTP) memory
US9117544B2 (en) 2012-06-30 2015-08-25 Intel Corporation Row hammer refresh command
US8938573B2 (en) 2012-06-30 2015-01-20 Intel Corporation Row hammer condition monitoring
KR102004849B1 (ko) * 2012-08-02 2019-07-29 삼성전자 주식회사 동적 메모리 재할당 관리 방법과 상기 방법을 수행할 수 있는 장치
US9286964B2 (en) 2012-12-21 2016-03-15 Intel Corporation Method, apparatus and system for responding to a row hammer event
CN103019949B (zh) * 2012-12-27 2015-08-19 华为技术有限公司 一种写合并属性内存空间的分配方法及装置
US11221967B2 (en) * 2013-03-28 2022-01-11 Hewlett Packard Enterprise Development Lp Split mode addressing a persistent memory
WO2014175863A1 (en) * 2013-04-23 2014-10-30 Hewlett-Packard Development Company, L.P. Configuring a system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080052458A1 (en) * 2006-08-24 2008-02-28 Stmicroelectronics S.R.L. Non-volatile, electrically-programmable memory
US20110246709A1 (en) * 2007-03-19 2011-10-06 A-Data Technology Co., Ltd. Memory system having hybrid density memory and methods for wear-leveling management and file distribution management thereof
US20090100244A1 (en) 2007-10-15 2009-04-16 Li-Pin Chang Adaptive hybrid density memory storage device and control method thereof

Also Published As

Publication number Publication date
US20170131927A1 (en) 2017-05-11
US10318188B2 (en) 2019-06-11
KR20170055206A (ko) 2017-05-19

Similar Documents

Publication Publication Date Title
US12001413B2 (en) Key-value storage device and operating method thereof
TWI703571B (zh) 數據儲存裝置及其操作方法
US8463826B2 (en) Incremental garbage collection for non-volatile memories
US9342371B2 (en) Boot partitions in memory devices and systems
US10943183B2 (en) Electronics device performing software training on memory channel and memory channel training method thereof
JP7007102B2 (ja) 不揮発性メモリモジュール、及び格納装置の動作方法
KR102388746B1 (ko) 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법
US11150811B2 (en) Data storage apparatus performing flush write operation, operating method thereof, and data processing system including the same
KR102526608B1 (ko) 전자 장치 및 그것의 동작 방법
KR20160147509A (ko) 저장 장치의 온도별 데이터 관리 방법
KR102691906B1 (ko) 저장 장치 및 그 동작 방법
KR20140044070A (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
US10198184B2 (en) Resistance variable memory apparatus, and circuit and method for operating therefor
KR102592796B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN111796759B (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
US20180239557A1 (en) Nonvolatile memory device, data storage device including the same, and operating method of data storage device
KR20240116679A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200114052A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
JP7471230B2 (ja) 仮想化のためのプロセッサ特徴id応答
US20200310981A1 (en) Controller, memory system and operating method thereof
US20190278704A1 (en) Memory system, operating method thereof and electronic apparatus
US11328786B2 (en) Memory module storing test pattern information, computer system comprising the same, and test method thereof
US11055020B2 (en) Data storage device sharing operations with another data storage device and method of operating the same
US20110161647A1 (en) Bootable volatile memory device, memory module and processing system comprising bootable volatile memory device, and method of booting processing system using bootable volatile memory device
US11182329B2 (en) Data processing system and operating method thereof

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right