KR20150132101A - 확장 기입을 지원하는 메모리 모듈 제어기 - Google Patents

확장 기입을 지원하는 메모리 모듈 제어기 Download PDF

Info

Publication number
KR20150132101A
KR20150132101A KR1020157020802A KR20157020802A KR20150132101A KR 20150132101 A KR20150132101 A KR 20150132101A KR 1020157020802 A KR1020157020802 A KR 1020157020802A KR 20157020802 A KR20157020802 A KR 20157020802A KR 20150132101 A KR20150132101 A KR 20150132101A
Authority
KR
South Korea
Prior art keywords
write
memory
data
memory module
processor
Prior art date
Application number
KR1020157020802A
Other languages
English (en)
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 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Publication of KR20150132101A publication Critical patent/KR20150132101A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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/064Management of blocks
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

예시적인 방법들 및 장치들은 메모리에 대한 확장 기입들의 지원을 개시한다. 본 명세서에서 개시되는 예시적인 방법은 프로세서 개입 없이 기입 요청과 관련된 복원 정보를 메모리 내에 저장하는 단계 - 복원 정보는 기입 요청에 의해 요청된 기입이 인터럽션되는 경우에 기입의 재실행 또는 취소를 가능하게 하기 위한 것이며, 기입 요청은 프로세서로부터 수신되고, 목적지 어드레스 및 새로운 데이터를 포함함 -, 및 기입이 인터럽션되지 않은 경우, 프로세서 개입 없이 새로운 데이터를 메모리 내의 목적지 어드레스에 기입하는 단계를 포함한다.

Description

확장 기입을 지원하는 메모리 모듈 제어기{MEMORY MODULE CONTROLLER SUPPORTING EXTENDED WRITES}
일부 컴퓨팅 시스템들은 장기 대용량 저장 장치들(예로서, 자기 메모리, 광학 메모리, 플래시 메모리 등)에도 저장되는 데이터에 대한 비교적 빠른 액세스를 위해 랜덤 액세스 메모리(random access memory:RAM) 장치들을 중간 저장 장치로 사용한다. 이러한 방식으로, 컴퓨팅 시스템들은 데이터를 장기 대용량 저장 장치들로부터 중간 RAM 장치들로 복사함으로써 그리고 RAM 장치들로부터 데이터에 액세스함으로써 더 빠른 데이터 액세스를 수행할 수 있다.
장기 저장을 위한 반도체 메모리 장치들은 상변화 RAM(phase-change RAM:PCRAM), 멤리스터(Memristor) 및 스핀-전달 토크 랜덤 액세스 메모리(spin-transfer torque random access memory:STT-RAM)와 같은 비휘발성 랜덤 액세스 메모리(non-volatile random access memory:NVRAM)를 포함한다. NVRAM은 전력이 제거될 때에도 그 안에 저장된 데이터를 유지하는 영구 메모리 시스템이다.
도 1a는 본 발명의 가르침에 따라 구현되는 예시적인 메모리 모듈 제어기에 의해 처리되는 메모리 액세스 명령들을 나타내는 예시적인 명령 흐름도이다.
도 1b는 도 1a의 예시적인 메모리 모듈 제어기를 갖는 메모리 모듈을 구비하는 예시적인 프로세서 시스템이다.
도 2는 도 1a 및 1b의 예시적인 메모리 모듈 제어기에 의해 처리되는 예시적인 원자 기입 명령을 나타내는 예시적인 명령 포맷들을 도시한다.
도 3은 도 1a 및 1b의 예시적인 메모리 모듈 제어기에 의해 처리되는 예시적인 기입시 복사(copy-on-write: COW) 기입 명령을 나타내는 예시적인 명령 포맷들을 도시한다.
도 4는 도 1a, 1b, 2 및/또는 3의 예시적인 메모리 모듈 제어기이다.
도 5는 원자 기입 명령을 실행하기 위해 실행될 수 있는 프로세스를 나타내는 예시적인 흐름도이다.
도 6은 메모리의 복원을 수행하기 위해 실행될 수 있는 프로세스를 나타내는 예시적인 흐름도이다.
도 7은 COW 기입 명령을 실행하기 위해 실행될 수 있는 프로세스를 나타내는 예시적인 흐름도이다.
본 명세서에서 개시되는 예시적인 방법들, 기기들 및 제조물들은 원자 기입 명령들 및/또는 기입시 복사(COW) 명령들을 처리하는 메모리 모듈 제어기들을 구현하는 데 사용될 수 있다. 이러한 메모리 모듈 제어기들은 인터럽션들의 처리에 사용하기 위해 명령들과 관련된 복원 정보를 기록할 수 있다. 본 명세서에서 개시되는 예들은 프로세서로부터의 단일 명령들에 기초하여 그리고/또는 이전의 시스템들에서 필요한 것보다 적은 프로세서 개입을 이용하여 메모리에 대해 다중 메모리 액세스 프로세스들을 수행하는 메모리 모듈 제어기들의 구현도 가능하게 한다. 개시되는 예들은 비휘발성 메모리들(예로서, 플래시 장치, 멤리스터 장치, PCRAM 장치, STT-RAM 장치 등) 및/또는 휘발성 메모리들(예로서, 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 등)을 갖는 메모리 모듈들 내에 메모리 모듈 제어기들을 구현하는 데 사용될 수 있다. 개시되는 예들은 비휘발성 메모리들, 및/또는 휘발성 메모리들로 하여금 장기 저장 장치들 및/또는 다른 의사 비휘발성 메모리들(예로서, (예로서, 배터리 또는 수퍼-커패시터로부터의) 단기 비상 전력을 갖는 동적 랜덤 액세스 메모리(DRAM) 및 비휘발성 백킹 스토어(backing store)(예로서, DRAM 저장 용량과 동일한 플래시 저장 용량))로서 동작하는 것을 가능하게 하는 정전력원(예로서, 배터리 백업)을 갖는 휘발성 메모리들을 포함하는 임의의 적절한 타입의 영구 저장 장치와 관련하여 유용하다.
본 명세서에서 설명되는 예들에서, 시스템은 통합 메모리 제어기를 갖는 프로세서, 메모리 버스, 및 메모리 모듈 제어기 및 메모리를 갖는 메모리 모듈을 포함할 수 있다. 시스템은 사용자들이 데이터 또는 컴퓨터 판독가능 명령어들을 메모리에 저장 및 액세스하여 명령어들의 실행에 의해 다른 프로세스들을 구현하는 것을 가능하게 한다. 프로세서의 메모리 제어기는 메모리 버스를 통해 프로세서에 의해 수행되는 메모리 액세스 동작들(예로서, 판독, 기입 등)을 제어한다. 메모리 모듈의 메모리 모듈 제어기는 메모리를 제어하며, 프로세서(또는 메모리 제어기) 개입 없이 메모리 액세스 동작들을 수행할 수 있다.
본 명세서에서 설명되는 바와 같이, 프로세서는 많은 컴퓨팅 작업을 수행할 수 있는 범용 처리 유닛이다. 이와 달리, 메모리 모듈 제어기는 범용이 아니라 메모리 제어를 위해 특수화된다. 따라서, 본 명세서에서 설명되는 바와 같이, 메모리 모듈 제어기는 프로세서가 아니다. 게다가, 본 명세서에서 설명되는 바와 같이, 메모리 제어기는 프로세서의 에이전트이다. 따라서, 본 명세서에서 프로세서에 대한 참조들이 행해질 때, 동일한 참조들은 프로세서 및/또는 메모리 제어기를 참조할 수 있다는 것을 이해한다.
개시되는 예들은 메모리 모듈들이 이전의 시스템들에 의해 요구되는 것보다 비교적 적은 외부 프로세서들 또는 장치들(예로서, 메모리 제어기들)에 의한 개입을 요구함으로써 자율적인 방식으로 동작들을 수행하는 것을 가능하게 한다. 이러한 방식으로, 개시되는 예들은 메모리 모듈들이 이전의 시스템들에서보다 더 적은 프로세서들 및/또는 메모리 제어기들과의 외부 통신들을 요구함으로써 비교적 더 효율적으로 메모리 동작들을 수행하는 것을 가능하게 한다.
개시되는 예시적인 메모리 모듈 제어기들은 프로세서들 및/또는 메모리 제어기들로부터의 메모리 액세스 요청들 또는 명령들을 큐잉(queueing) 또는 캐싱(caching)한 후에 프로세서들 및/또는 메모리 제어기들에 의한 추가 개입 없이 하나 이상의 메모리 액세스 동작을 수행할 수 있다. 따라서, 본 명세서에서 개시되는 예시적인 메모리 모듈 제어기들은 다른 프로세서들 및/또는 메모리 제어기들로부터의 외부 제어 및 통신을 필요로 하지 않고서 메모리 동작들을 자율적으로 관리 및 수행할 수 있다.
본 명세서에서 개시되는 예들은 메모리 내에 (예를 들어, 원자 기입 명령 또는 기입시 복사 기입(COW 기입) 명령을 통해) 데이터를 저장 또는 갱신할 때 외부 프로세서 및/또는 메모리 제어기로부터 요구되는 버스 통신들의 양을 크게 줄인다.
본 명세서에서 개시되는 예시적인 메모리 모듈 제어기들은 반도체 메모리 장치들을 갖는 메모리 모듈들에서 사용될 수 있다. 본 명세서에서 개시되는 예시적인 메모리 모듈 제어기들은 외부 프로세서들 및/또는 메모리 제어기들로부터의 비교적 적은 개입(예를 들어, 외부 메모리 버스를 통한 더 적은 명령 및 데이터 이동)과 함께 원자 기입 및/또는 COW 동작들을 수행한다. 예를 들어, 개시되는 메모리 모듈 제어기는 메모리 모듈 내의 메모리 위치에 데이터를 기입 또는 갱신하기 위한 프로세서로부터의 요청 또는 명령(예로서, 원자 기입 또는 COW 기입)을 수신하며, 프로세서로부터 수신되는 초기 요청 또는 명령 외의 추가 프로세서 개입을 필요로 하지 않고서 다수의 메모리 액세스(예로서, 복원 정보의 기록, 목적지 어드레스에 대한 데이터 기입 및 복원 정보의 삭제)를 수행하여 목적지 어드레스에 데이터를 기입 및/또는 갱신함으로써 요청 또는 명령을 실행할 수 있다.
본 명세서에서 개시되는 예시적인 메모리 모듈 제어기들은 원자 명령들을 수신하고, 그에 응답하여 비휘발성 로그 내에 관련 복원 정보를 기록할 수 있다. 장애-정지 이벤트들(예로서, 시스템 충돌, 애플리케이션 충돌, 전력 장애, 일부 예들에서는 시스템 리부트를 유발하는 이벤트들)로 인해, 대응하는 원자 동작들에 대한 인터럽션들이 발생할 때, 메모리 모듈 제어기는 복원 정보를 검색하고, 미처리 원자 기입들을 취소(undo) 또는 재실행(redo)할 수 있다. 일부 예들에서, (예를 들어, 인터럽션 후의 동작의 복원을 필요로 하는) 장애-정지 이벤트에 이어서, 프로세서는 랜덤 액세스 메모리의 비휘발성 로그 영역을 검사하고, (예를 들어, 이전에 완료되지 않은) 로그 내의 임의의 미처리 원자 기입 명령들을 취소 또는 재실행하도록 메모리 모듈 제어기에 지시한다. 일부 예들에서, 재부트에 이어서, 메모리 모듈 제어기는 임의의 프로세서 개입을 요구하지 않고서(예로서, 프로세서가 메모리 모듈 제어기로 하여금 이전에 완료되지 않은 원자 기입 명령들을 수행하게 할 필요 없이) 로그 내에 저장된 미처리 원자 기입 명령들을 자동으로 재실행 또는 취소할 수 있다. 다른 예들에서, 프로세서는 장애 정지 이벤트 후에 로그를 검사하며; 하나 이상의 원자 기입이 처리되지 않은 것을 발견할 경우에, (메모리 모듈 제어기에 의해 제공된) 로그 내의 복원 정보를 이용하여 미처리 원자 기입들 각각을 재실행 또는 취소하는 데 필요한 명령들을 생성한다. 이어서, 프로세서는 모든 복원 정보(예로서, 로그 콘텐츠)를 삭제하거나 모든 미처리 원자 기입들을 완료된 것(더 이상 미처리가 아님)으로서 마킹하기 위한 하나 이상의 명령을 발할 수 있다.
본 명세서에서 개시되는 예시적인 방법들은 원자 기입들과 관련된 복원 정보를 메모리 모듈 내의 로그 내에 기록하는 단계를 포함할 수 있다. 일부 예들에서, 복원 정보가 로그 내에 저장된 원자 기입의 실행이 완료되었다는 것을 나타내기 위한 커밋 레코드가 로그에 첨부된다. 따라서, 인터럽션(예로서, 시스템 충돌, 전력 장애 등)이 발생하는 경우에, 관련 커밋 레코드의 존재 또는 부재를 이용하여, 복원 정보가 로그 내에 저장된 특정 원자 기입 명령이 확실하게 완전히 실행되었는지를 결정할 수 있다. 이어서, 개시되는 예시적인 메모리 모듈 제어기들은 완전히 실행된 것으로 알려지지 않은 명령들을 취소 및/또는 재실행할 수 있다. 일부 예들에서, 개시되는 예시적인 메모리 모듈 제어기들은 프로세서로부터의 명령어들에 기초하여 원자 기입 명령들을 취소 또는 재실행한다. 다른 예들에서, 개시되는 예시적인 메모리 모듈 제어기들은 프로세서(또는 메모리 제어기) 개입 없이 미처리 원자 기입 명령들을 자율적으로 취소 또는 재실행한다.
COW 기입들을 위한 일부 개시되는 예시적인 방법들은 메모리의 제1 어드레스로부터 제1 데이터를 판독하는 단계를 포함한다. 그러한 예들에서, 제1 어드레스는 프로세서로부터 메모리 모듈 제어기에 의해 수신되는 COW 기입 명령 내에서 지정된다. 그러한 개시되는 예시적인 방법들은 동일 COW 기입 명령 내에 위치하는 수정 데이터를 이용하여 제1 데이터를 갱신하는 단계, 및 갱신된 데이터를 메모리의 제2 어드레스에 저장하는 단계도 포함한다. 그러한 예들에서, 제2 어드레스는 동일 기입 명령 내에서 지정된다. 일부 예들에서, 제1 데이터를 갱신하는 단계는 주어진 오프셋에서 제1 데이터를 새로운 데이터로 대체함으로써 제1 데이터를 갱신하는 단계를 포함한다. 그러한 예들에서, 오프셋 및 새로운 데이터는 동일 기입 명령 내에서 지정된다.
메모리에 대해 명령들을 실행하기 위한 일부 개시되는 예시적인 장치들은 적어도 하나의 메모리 모듈(예로서, 랜덤 액세스 메모리(RAM) 모듈 또는 다른 타입(들)의 반도체 메모리 모듈들)을 포함한다. 일부 예들에서, 메모리 모듈은 비휘발성 메모리를 포함한다. 일부 예들에서, 메모리 모듈은 비휘발성 저장 영역들(예로서, 로그)을 포함한다. 일부 예들에서, 메모리 모듈은 전력 장애를 통해 메모리 콘텐츠를 유지하기 위한 정전력원(예로서, 배터리 백업)을 갖는 동적 랜덤 액세스 메모리(DRAM)이다.
도 1a는 본 발명의 가르침에 따라 구현되는 메모리 모듈(130)의 예시적인 메모리 모듈 제어기(140)에 의해 처리되는 메모리 액세스 명령들의 예시적인 흐름을 나타낸다. 도시된 예에서, 예시적인 메모리 모듈 제어기(140)는 예시적인 기입 인터럽션 검출기(105), 예시적인 프로세서(110) 및 예시적인 메모리(150)와 통신한다. 도 1a에는 단일 프로세서(110)가 도시되지만, 하나 이상의 프로세서(들)가 메모리 모듈 제어기(140)에 결합될 수 있으며, 프로세서(110)에 더하여 사용된다.
예시적인 기입 인터럽션 검출기(105)는 프로세서(110) 내에, 메모리 모듈 제어기(140) 내에 또는 다른 곳에 위치할 수 있다. 기입 인터럽션 검출기(105)는 프로세서(110)로부터의 명령(예로서, P1)의 실행 및/또는 메모리 액세스 동작(예로서, MMC-1 내지 MMC-N)이 언제 (예로서, 전력 장애, 시스템 충돌 등으로 인해) 인터럽션되었는지를 결정할 수 있다. 대안으로서, 기입 인터럽션 검출기(105)는 시스템이 전력 장애 또는 시스템 충돌 후에 언제 재시동되었는지를 검출할 수 있다.
예시적인 프로세서(110)는 예시적인 명령(P1)을 메모리 모듈 제어기(140)로 전송한다. 명령(P1)은 원자 기입 명령 또는 COW 기입 명령일 수 있다.
메모리 모듈 제어기(140)는 명령(P1)을 수신하고, 수신된 명령(P1)에 기초하는 다수의 메모리 액세스 동작(MMC-1 내지 MMC-N)을 이용하여 메모리(150)에 액세스한다. 예를 들어, 메모리 모듈 제어기(140)가 원자 기입 명령을 수신할 때, 메모리 모듈 제어기(140)는 다수의 명령을 실행하는데, 예를 들어 (예를 들어, MMC-1 명령을 통해) 기입 명령과 관련된 복원 정보(예로서, 기입 명령의 목적지 어드레스 및 새로운 데이터)를 로그 영역에 기록하고, (예를 들어, MMC-2 명령을 통해) 새로운 데이터를 목적지 어드레스에 기입하고, (예로서, MMC-N 명령을 통해) 명령이 완료되었다는 것을 (예로서, 커밋 레코드를 기입함으로써) 나타낼 수 있다.
도 1b는 예시적인 시스템(100)을 나타낸다. 예시적인 시스템(100)은 예시적인 통합 메모리 제어기(112)를 갖는 도 1a의 예시적인 프로세서(110)를 포함한다. 도시된 예에서, 프로세서(110)는 예시적인 메모리 버스(120)를 통해 예시적인 메모리 모듈(130)과 통신한다. 예시적인 메모리 제어기(112)는 프로세서(110)와 메모리 버스(120) 간의 통신을 촉진하기 위한 인터페이스이다. 일부 예들에서, 메모리 제어기(112)는 예시적인 프로세서(110) 내에 포함되지 않는 대신, 프로세서(110)의 외부에 위치하고, (예를 들어, 프로세서(110)와 개별 메모리 제어기(112) 사이의 버스를 통해) 프로세서(110)와 통신 결합된다. 예시적인 메모리 버스(120)는 더블 데이터 레이트(DDR) 버스 또는 임의의 다른 적절한 타입의 메모리 버스를 이용하여 구현될 수 있다. 예시적인 메모리 모듈(130)은 도 1a의 예시적인 메모리 모듈 제어기(140) 및 예시적인 메모리(150)를 포함한다. 일부 예들에서, 메모리 모듈 제어기(140)는 진보된 메모리 버퍼 및/또는 레지스터화된 메모리 내의 레지스터를 이용하여 구현된다.
도시된 예에서, 도시된 예의 메모리 모듈 제어기(140)와 통신하는 메모리(150)는 비휘발성 RAM 장치 또는 휘발성 DRAM 장치와 같은 반도체 또는 IC 메모리 장치이다. 휘발성 DRAM을 이용하여 메모리(150)를 구현하는 예들에서는, 배터리 백업을 이용하여, 메인 시스템 전력의 인터럽션 및/또는 시스템 충돌의 경우에 메모리(150)에 저장된 데이터의 유지를 가능하게 한다.
예시적인 메모리(150)는 예시적인 로그(160) 및 예시적인 데이터 저장 영역(180)을 포함한다. 도시된 예에서, 로그(160) 및 예시적인 데이터 저장 영역(180)은 서로 개별적으로(예로서, 병렬 구성의 개별 메모리 영역들로서) 구성된다. 일부 예들에서, 예시적인 로그(160)는 예시적인 데이터 저장 영역(180) 내에 포함된다. 즉, 로그(160)는 (특수) 어드레스들을 통해 프로세서(110)에 의해 액세스될 수 있다. 로그(160)는 로그 레코드들(예로서, 로그 레코드들(162) LOG_RECORD[0]-LOG_RECORD[L-1])의 양(L)을 포함한다. 도시된 예에서, 로그(160)는 비휘발성이다(예로서, NVRAM 내에 위치한다). 메모리(150)의 예시적인 로그(160)는 큰 저장 용량을 반드시 필요로 하지는 않는데, 그 이유는 로그 레코드들(162)이 통상적으로 대응하는 기입 명령들의 완료시까지만 유지되기 때문이다. 데이터 저장 영역(180)은 어드레스 가능 저장 위치들(182)(예로서, ADDR[0]-ADDR[N-1])의 양(N)을 포함한다.
일부 예들은 다수의 로그를 사용한다. 각각의 로그(160)는 선입선출(FIFO) 데이터 구조(예로서, 큐)일 수 있다. 새로운 로그 레코드들(162)이 로그(160)의 한 단부에 첨부될 수 있고, 오래된 레코드들이 로그(160)의 반대 단부로부터 제거될 수 있다. 복원 동안, 로그(160)의 로그 레코드들(162)은 로그의 한 단부로부터 다른 단부까지 처리될 수 있으며, 그러한 로그 레코드들(162)은 복원 정보를 포함하고, 관련 커밋 레코드가 기입들을 재실행 또는 취소하는 데 사용될 수 있다. 일부 예들에서, 로그(160)는 메모리(150)가 아니라 메모리 모듈 제어기(140)의 버퍼(430) 내에 저장된다. 다른 예들에서, 복원 정보는 로그와 다른 데이터 구조들 내에 그리고/또는 다른 위치들에서 저장될 수 있다. 또 다른 예들에서, 로그(160)는 존재하지 않을 수 있다.
도시된 예에서, 메모리 모듈 제어기(140)는 메모리 모듈(130)의 제어 센터이다. 예시적인 메모리 모듈 제어기(140)는 메모리 버스(120)를 통해 프로세서(110)로부터 명령들(예로서, 도 1a의 명령(P1))을 수신한다. 본 명세서에서 개시되는 예들에서, 메모리 모듈(130)은 프로세서 시스템(100) 내에 영구적으로 설치 또는 탑재될 수 있고/있거나, 메모리 모듈(130)은 프로세서 시스템(100)에 제거 가능하게 탑재 또는 부착될 수 있다.
도시된 예에서, 메모리 모듈 제어기(140)는 메모리 버스(120)에 통신 결합된 프로세서(110) 및/또는 임의의 다른 장치(예로서, 다른 프로세서 등)로부터 수신되는 명령들에 기초하여 메모리를 자율적으로 제어한다. 이러한 방식으로, 프로세서(110)는 후술하는 바와 같이 복잡한 메모리 프로세스들을 메모리 모듈 제어기(140)로 오프로딩할 수 있다.
도시된 예에서, 메모리 모듈 제어기(140)는 메모리 모듈(130) 내에 메모리(150)와 함께 공동 배치된다. 일부 예들에서, 메모리 모듈(130)은 인쇄 회로 보드(PCB)를 이용하여 구현되며, 메모리 모듈 제어기(140)는 PCB 상에 메모리(150)와 함께 탑재된다. 다른 예들에서, 메모리 모듈(130)은 삼차원(3D) 스택 칩 패키지를 이용하여 구현되며, 이러한 패키지에서는 메모리 모듈 제어기(140)를 구현하는 집적 회로(IC) 장치 및 메모리(150)를 구현하는 IC 장치가 패키지의 층들 사이의 물리적 칩내 상호접속들과 함께 칩 내에 서로의 위에 적층된다. 메모리 모듈(130)을 구현하는 3D 스택 칩 패키지가 프로세서(110)와 별개인 예들에서, 3D 스택 칩 패키지는 예를 들어 메모리 버스(120)를 통해 프로세서(110)와 통신하기 위한 외부 인터페이스를 구비한다. 3D 스택 칩 패키지가 프로세서(110)를 포함하는 예들에서, 메모리 모듈(130)은 칩내 상호접속들을 이용하여 프로세서(110)에 접속된다. 또 다른 예들에서, 메모리 모듈(130)은 멀티-드롭 버스 메모리 모듈(예로서, 스몰 아웃라인 듀얼 인라인 메모리 모듈(SO-DIMM)), 점대점 버스 메모리 모듈(예로서, 완전 버퍼링 DIMM(FBDIMM)), 상부 솔더링 메모리(soldered-on memory) 또는 멀티-다이 패키지들(예로서, 시스템 온 칩(SOC), 시스템 인 패키지(SiP) 등)에 의해 구현될 수 있다.
도 2는 도 1a 및 1b의 예시적인 메모리 모듈 제어기(140)가 원자 기입 명령들을 실행하게 하는 데 사용될 수 있는 예시적인 명령 포맷들을 나타낸다. 도 2에는, 메모리 모듈 제어기(140)가 원자 기입 명령들을 수행하게 하는 데 사용될 수 있는 상이한 명령 포맷들을 예시하기 위해 3개의 상이한 원자 기입(AW) 명령 포맷(AW1, AW2, AW3)이 도시된다. 예시적인 프로세서(110) 및 예시적인 메모리 모듈 제어기(140)는 원자 기입 명령 포맷들(AW1, AW2, AW3) 중 하나 이상을 사용하도록 구성될 수 있다. 다수의 원자 기입 포맷(예로서, 명령 포맷들(AW1, AW2, AW3) 중 하나 이상, 또는 임의의 다른 원자 기입 명령 포맷)이 시스템(100)에 의해 사용되는 경우, 상이한 명령 지정자들을 이용하여, 메모리 모듈 제어기(140)가 그들을 구별하는 것을 가능하게 할 수 있다. 원자 기입 명령 포맷들(AW1, AW2, AW3)의 상이한 부분들은 메모리 모듈 제어기(140)에 의해 수행되는 결과적인 메모리 액세스 동작들(MMC-1 내지 MMC-N)과 관련하여 아래에 상세히 설명된다. 일부 예들에서, 메모리 모듈 제어기(140)는 명령(예로서, 도 1a의 명령(P1))이 원자 기입 명령인 것을 검출하고, 따라서 그와 관련된 복원 정보를 검출된 기입 명령 내의 어드레스 또는 어드레스 포맷에 기초하여 로그(160) 내에 저장하며; 메모리 모듈 제어기(140)는 기입 명령들이 검출된 어드레스 또는 어드레스 포맷을 포함하지 않을 때 그러한 기입 명령들을 원자성을 요구하는 것으로서 취급하지 않는다.
도 2의 도시된 예에서, 예시적인 원자 기입 명령 포맷(AW1)은 [atomic-write][addr][data]로서 표현된다. 도시된 예에서, [atomic-write]는 (명령의 타입을 지정하는) 명령 지정자이고, [addr] 파라미터는 데이터를 기입할 메모리(150) 내의 목적지 어드레스(예로서, 목적지 어드레스 가능 메모리 위치)를 지정하며, [data] 파라미터는 목적지 어드레스에 기입될 새로운 데이터이다. 일부 예들에서, 예시적인 명령 포맷(AW1)은 예시적인 명령 포맷(AW1)에서 상이한 명령 지정자(즉, [atomic-write])가 사용된다는 점 외에는 이전 시스템들에서의 기입 명령 포맷과 유사하다. 이것은 프로세서가 원자 기입들과 비원자 기입들(예로서, 통상적인 기입 명령들)을 혼합하는 것을 가능하게 할 수 있다. 일부 예들에서는, 모든 기입들이 원자적으로 처리될 수 있다.
도시된 예의 메모리 모듈 제어기(140)가 예시적인 명령 포맷(AW1)으로 프로세서(110)로부터 명령(예로서, 도 1a의 명령(P1))을 수신할 때, 도시된 예의 메모리 모듈 제어기(140)는 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행하여, 수신된 명령 내에서 요청된 지정 위치에서 데이터에 대한 갱신을 수행한다. 예를 들어, 메모리 모듈 제어기(140)는 메모리 액세스 동작(MMC-1)을 수행하여, 목적지 어드레스 [addr](예로서, 어드레스 가능 저장 위치(182)에 대응하는 어드레스) 및 새로운 데이터 [data]를 포함하는, 수신된 원자 기입 명령과 관련된 복원 정보를 도 1b의 로그 엔트리(162) 내에 저장할 수 있다. 그러한 예들에서, 메모리 모듈 제어기(140)는 메모리 액세스 동작((MMC-2)을 수행하여, 저장 위치(182)에 대응하는 목적지 어드레스 [addr]에 새로운 데이터를 기입할 수 있다. 메모리 모듈 제어기(140)는 메모리 액세스 동작(MMC-3)을 수행하여, 원자 기입 동작이 완료되었다는 것을 나타내는 커밋 레코드를 로그(160)의 한 단부에 새로운 로그 엔트리(162)로서 기입할 수 있다. 즉, MMC-3은 로그(160)에 커밋 레코드를 첨부한다.
따라서, 메모리 모듈 제어기(140)는 초기 원자 기입 명령(예로서, 도 1a의 명령(P1))의 수신 외에 메모리 버스(120)를 통한 프로세서(110)에 의한 추가 개입 없이 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행한다.
도시된 예에서, 명령 포맷(AW2)은 아래와 같이 표현된다.
[atomic-write]
[start flag] [dest addr 1] [length 1] [length-1-data-bytes]
[dest addr 2] [length 2] [length-2-data-bytes]
...
[dest addr n] [length n] [length-n-data-bytes]
[stop flag]
예시적인 원자 기입 명령 포맷(AW2)은 메모리 모듈 제어기(140)가 원자 방식으로 다수의 불연속 목적지 어드레스 가능 메모리 위치에 데이터를 갱신/기입하게 하는 하위 기입들을 포함한다(즉, 모든 하위 기입들이 발생하거나 어떠한 하위 기입도 발생하지 않는다). 따라서, 명령 포맷(AW2)은 복합 원자 기입 명령을 나타낸다. 도시된 예에서, 불연속 목적지 어드레스 가능 메모리 위치들([dest addr 1], [dest addr 2] 내지 [dest addr n])은 메모리(150)에 전반에 배치되고 다른 불연속 목적지 어드레스 가능 메모리 위치들에 의해 분리된다는 점에서 낮은 국지성을 갖거나 전혀 국지성을 갖지 않을 수 있다.
예시적인 포맷(AW2)에서는, 시작 플래그([start flag]) 및 종료 플래그([stop flag])를 이용하여, 포함된 하위 기입 부분의 시작과 끝을 식별할 수 있다(예를 들어, 하위 기압 1은 [dest addr 1] [length 1] [length-1-data-bytes]에 의해 표현되고, 하위 기입 2는 [dest addr 2] [length 2] [length-2-data- bytes]에 의해 표현되고, 기타 등등이다). [length-i](여기서, 1≤i≤n) 파라미터들은 대응하는 목적지 어드레스 가능 메모리 위치 [dest addr i]에서 갱신될 데이터([length-i-data-bytes])의 바이트 길이들(또는 비트 길이들)이다. [length-i-data-bytes] 파라미터들은 목적지 어드레스 가능 메모리 위치들에 기입될 데이터이다. 단일 명령 지정자 [atomic-write] 및 그에 동반하는 예시적인 명령 포맷(AW2)의 다수의 하위 기입을 이용하여, 다수의 단일 기입 명령을 대체하여, 메모리 모듈 제어기(140)가 명령 포맷(AW2)을 갖는 단일 복합 원자 기입 명령(예로서, 도 1a의 명령(P1))에 기초하여 다수의 기입 동작(예로서, 다수의 대응하는 원자 기입 동작)을 수행하는 것을 가능하게 할 수 있다. 설명되는 예들에서, 복합 원자 기입 명령(예로서, 명령 포맷(AW2)을 갖는 원자 기입 명령)의 하위 기입들은 그룹으로서 원자적으로 수행되므로, 단일 복합 원자 기입 명령은 하위 기입들 중 하나에 각자 대응하는 일련의 원자 기입들과 동등하지 않을 수 있다.
일례로서, 메모리 모듈 제어기(140)가 프로세서(110)로부터 명령 포맷(AW2) 명령을 수신할 때, 도시된 예의 메모리 모듈 제어기(140)는 메모리 액세스 동작들(예로서, MMC-1 내지 MMC-N 중 적어도 하나)을 수행하여, 수신된 명령 내에서 식별되는 바와 같은 지정된 어드레스 가능 메모리 위치들에서 데이터에 대해 다수의 갱신을 수행한다. 도시된 예에서, 메모리 모듈 제어기(140)는 하나 이상의 메모리 액세스 동작(예로서, MMC-1 내지 MMC-N 중 적어도 하나)을 수행하여, 하위 기입들 각각에 대한 복원 정보를 로그(160) 내에 저장할 수 있다. 메모리 모듈 제어기(140)는 하위 기입당 하나의 로그 레코드(162)를 저장할 수 있거나, 메모리 모듈 제어기(140)는 모든 하위 기입들에 대한 단일 로그 레코드(162)를 저장할 수 있다. 따라서, 각각의 하위 기입과 관련된 복원 정보가 복합 기입(AW2)에 대한 복원 정보가 될 수 있다. 이어서, 메모리 모듈 제어기(140)는 추가적인 메모리 액세스 동작들을 수행하여, [length-1-data-bytes]를 [dest addr 1]에 기입하고, [length-2-data-bytes]를 [dest addr 2]에 기입하고, 기타 등등이고, 이어서 [length-n-data-bytes]를 [dest addr n]에 기입할 수 있다.
본 명세서에서 설명되는 바와 같이, 다중 바이트/워드 데이터가 단일 어드레스로부터 판독되거나/단일 어드레스에 기입되는 것으로 설명되는 경우, 데이터는 실제로는 주어진 어드레스로부터 시작하는 일련의 순차적 어드레스들로부터 판독되거나 그들에 기입된다. 이것은 메모리(150)에 대한 그의 입도에 의존하는 다수의 메모리 액세스 동작을 수반할 수 있다. 예를 들어, 위치 100으로부터 4 바이트 아이템을 판독하는 것은 위치 100으로부터 제1 바이트를, 위치 101로부터 제2 바이트를, 위치 102로부터 제3 바이트를 그리고 위치 103으로부터 제4 바이트를 판독하는 것을 포함할 수 있다.
일부 예들에서, 메모리 모듈 제어기(140)는 추가적인 메모리 액세스 동작들을 수행하여 복원 정보를 판독하여, 다음에 수행될 하위 기입(들)의 상세들을 식별한다. 마지막으로, 메모리 모듈 제어기(140)는 로그(160)에 단일 커밋 레코드(162)를 첨부하기 위한 메모리 액세스 동작을 수행하여, 복합 원자 기입을 완료된 것으로서 마킹할 수 있다. 따라서, 메모리 액세스 동작들(MMC-1 내지 MMC-N)은 명령 포맷(AW2)으로 프로세서(110)로부터 수신된 단일 복합 원자 기입 명령(예로서, 도 1a의 명령(P1))으로부터 다수의 기입 동작을 수행할 수 있다. 따라서, 메모리 모듈 제어기(140)는 명령 포맷(AW2)의 초기 원자 기입 명령(예로서, 도 1a의 명령(P1))의 수신 외에 프로세서(110)에 의한 추가 개입 없이 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행한다.
일부 예들에서는, 명령 포맷(AW2)의 시작 플래그 [start flag] 및/또는 종료 플래그 [stop flag]가 생략될 수 있다. 그러한 예들에서, 어드레스 및 데이터 파라미터들의 시작 및/또는 끝은 원자 기입 명령 지정자([atomic-write])의 존재에 기초하여 그리고/또는 프로세서(110)가 버스 명령의 전송을 종료한 시기의 검출에 기초하여 암시된다.
도 2의 도시된 예에서, 원자 기입 명령 포맷(AW3)은 아래와 같이 표현된다.
[write]<special addr> [addr]
[write]<special addr+offset> [data]
도시된 예에서는, 새로운 명령 지정자(예로서, [atomic-write])가 사용되지 않는다. 대신, 특수 어드레스(예로서, <special addr>)를 이용하여, 원자 기입이 요청되고 있다는 것을 나타낸다. 명령 포맷(AW3)의 제1 라인에서, 예시적인 [write] 파라미터는 (명령의 타입을 지정하는) 명령 지정자이다. <special addr> 파라미터는 임의의 실제 물리 어드레스에 반드시 대응하지는 않는 대신, 기입 명령이 실제로는 원자 기입 명령이라는 것을 메모리 모듈 제어기(140)에 알리기 위한 표시자로서 사용된다. [addr] 파라미터는 후속 수신되는 데이터(예로서, AW3 포맷의 제2 라인 내의 [data])를 기입할 목적지 어드레스들을 계산하는 데 사용될 기본 어드레스이다. 명령 포맷(AW3)의 제2 라인에서, [write] 파라미터는 명령 지정자이고, <special addr + offset>은 AW3 포맷의 제1 기입 명령으로부터의 기본 어드레스 [addr]에 기초하여 목적지 어드레스를 계산하기 위한 인코딩된 어드레스 오프셋 값(offset)을 나타내며, [data] 파라미터는 목적지 어드레스의 목적지 어드레스 가능 메모리 위치(예로서, 기본 어드레스 [addr] + offset)에 기입될 데이터이다. 도시된 예에서, 메모리 모듈 제어기(140)는 특수 타겟 어드레스들(예로서, 0 내지 <limit>에서 N에 대해 <special address> + N)을 갖는 2개의 연속 기입 명령의 수신시에 목적지 어드레스 가능 메모리 위치([addr] + offset)에 데이터 [data]를 원자적으로 기입하도록 구성될 수 있다. 도시된 예에서, 메모리 모듈 제어기(140)는 특수 타겟 어드레스 파라미터(<special addr>)를 갖는 제1 기입 명령을 수신할 때, 인코딩된 오프셋을 갖는 특수 타겟 어드레스 파라미터(<special addr + offset>)를 구비하는 제2 기입 명령을 기다리도록 구성된다. 예시적인 메모리 모듈 제어기(140)는 제1 기입 명령 및 제2 기입 명령을 단일 원자 기입 명령(예로서, 도 1a의 명령(P1))으로서 처리한다. 일부 예들에서, 명령 포맷(AW3)의 변형이 사용될 수 있으며, 이러한 변형에서 메모리 모듈 제어기(140)는 프로세서(110)로부터 (명령 포맷(AW2)과 유사한) 하위 기입들을 갖는 복합 원자 기입을 수행하도록 메모리 모듈 제어기(140)에 지시하기 위한 포맷 [write] <special addr+offser> [data]의 다수의 오프셋 및 데이터를 수신한다. 그러한 예들에서, 하위 기입들 각각은 기본 어드레스 [addr] 및 후속 기입 명령으로부터의 후속의 인코딩된 오프셋 값(offset)에 기초하여 계산된 목적지 어드레스에 대응하는 상이한 목적지 어드레스 가능 메모리 위치들을 포함한다. 더구나, 그러한 예들에서, 특수 어드레스에 대한 기입 명령을 이용하여, 복합 원자 기입이 완료되었다는 것을 메모리 모듈 제어기(140)에 나타낼 수 있다.
도시된 예의 메모리 모듈 제어기(140)가 프로세서(110)로부터 명령 포맷(AW3)의 명령(예로서, 도 1a의 명령(P1))을 수신할 때, 도시된 예의 메모리 모듈 제어기(140)는 수신된 명령에서 요청된 지정 어드레스 가능 메모리 위치에서 데이터에 대해 갱신을 수행하기 위해 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행한다. 메모리 액세스 동작들(MMC-1 내지 MMC-N)은 여기서는 [addr]+offset이 존재한다는 점 외에는 명령 포맷(AW1)과 유사한 방식으로 수행될 수 있다. 따라서, 메모리 모듈 제어기(140)는 명령 포맷(AW3)의 초기 원자 기입 명령(예로서, 도 1a의 명령(P1))의 수신 외에 프로세서(110)에 의한 추가 개입 없이 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행한다.
도 2의 도시된 예에서, 명령 포맷들(AW2)의 일부 예시적인 사용들에서, 단일 복합 원자 기입 명령(예로서, 도 1a의 명령(P1)) 내의 기입 명령들의 다수의 목적지 어드레스는 연속 어드레스 가능 메모리 위치들에서 서로 물리적으로 인접하거나 가깝거나, 오프셋 값들을 이용하여 표현될 수 있는 어드레스들의 양들만큼 분리된다는 점에서 높은 공간 국지성을 가질 수 있다. 따라서, 그러한 예들에서는, 다수의 완전한 목적지 어드레스를 제공하는 것이 아니라, 제1 하위 기입의 목적지 어드레스가 나머지 하위 기입들에 대한 오프셋들에 대한 기본 어드레스로서 사용될 수 있으며, 따라서 충분한 공간 국지성을 갖는 작은 산포된 기입 명령들의 경우에 더 많은 대역폭을 절약할 수 있다. 따라서, 메모리 모듈 제어기(140)는 오프셋 값들에 기초하여 그리고 프로세서(110)로부터의 명령(예로서, 도 1a의 명령(P1))에서 제공된 기본 어드레스들에 기초하여 결정되는 목적지 어드레스들에 대해 하나 이상의 메모리 액세스 동작(들)(MMC-1 내지 MMC-N)을 수행할 수 있다.
임의의 적절한 기술들을 이용하여 명령의 정보를 인코딩할 수 있다. 예를 들어, 시작 어드레스 및 길이를 사용하는 대신에, 시작 및 종료 어드레스가 사용될 수 있으며, 종료 어드레스는 포괄적이거나 배타적일 수 있다. 일부 예들에서, 데이터의 길이는 사전 결정된 값, 길이 필드, 또는 제1 어드레스와 제2 어드레스 간의 차이 중 적어도 하나에 의해 결정된다(예로서, 길이는 시작-종료 또는 시작-종료+1일 수 있다). 게다가, 일부 예들에서, 길이는 상이한 단위들(예로서, 비트, 바이트, 워드 등)로 측정될 수 있다.
도 3은 도 1a 및 1b의 예시적인 메모리 모듈 제어기(140)가 COW 기입 명령들을 실행하게 하는 데 사용될 수 있는 예시적인 명령 포맷들을 나타낸다. 도 3에는, 메모리 모듈 제어기(140)가 COW 기입을 수행하게 하는 데 사용될 수 있는 상이한 명령 포맷들을 예시하기 위해 2개의 상이한 COW 기입 명령 포맷(COW1, COW2)이 도시된다. 예시적인 프로세서(110) 및 예시적인 메모리 모듈 제어기(140)는 COW 기입 명령 포맷들(COW1, COW2) 중 어느 하나 또는 양자를 사용하도록 구성될 수 있다. 양 포맷(COW1, COW2)이 사용되는 경우, 그들을 구별하기 위해 상이한 명령 지정자들이 사용될 수 있다. COW 기입 명령 포맷들(COW1, COW2)의 상이한 부분들이 메모리 모듈 제어기(140)에 의해 수행되는 결과적인 메모리 액세스 동작들(MMC-1 내지 MMC-N)과 관련하여 아래에 상세히 설명된다.
도 3의 도시된 예에서, COW 기입 명령 포맷(COW1)은 다음과 같이 표현된다.
[cow-write] [addr-old] [addr-new] [sub-offset][sub-len] [data]
도시된 예에서, [cow-write]는 명령 지정자이고, [addr-old] 파라미터는 오래된/본래의 데이터를 판독할 어드레스 가능 메모리 위치의 제1 어드레스이고, [addr-new] 파라미터는 갱신된 데이터를 기입할 어드레스 가능 메모리 위치의 목적지 어드레스이고, [sub-len] 파라미터는 [data]의 바이트 길이(또는 바이트들의 양)를 지정하고, [data] 파라미터는 오래된/본래의 데이터를 갱신하는 데 사용될 데이터이다. 또한, [sub-offset], [sub-len] 및 [data]는 수정 데이터를 포함한다. 명령 포맷(COW1)에서, 오래된 데이터 및 새로운 데이터의 길이는 사전 정의된 값(S)일 수 있다. 일례에서, 값(S)은 캐시 라인의 크기일 수 있다. 다른 예에서, S는 사용되는 명령 지정자의 선택에 의해 사전 결정된 값들의 세트 중에서 결정된다. 그러한 예들에서, 명령 포맷(COW1)은 [addr-old]...[addr-old]+S-1을 [addr-new]...[addr-new]+S-1에 복사한 후에 [data]를 [addr-new]+[sub-offset]..[addr-new]+[sub-offset]+[sub-len]-1에 기입하는 것과 동등하다. 따라서, 복사 및 기입을 결합하여, 오래된 데이터를 판독하고, 갱신된 데이터(예로서, 수정 데이터를 이용하여 갱신된 본래의 데이터)를 목적지 어드레스 [addr-new]에 직접 기입할 수 있다. 이것은 어드레스(예로서, [addr-new]+[sub-offset])에 두 번, 즉 본래 데이터의 일부에 대해 한 번 그리고 이어서 [data]의 일부에 대해 한 번 기입하는 것을 방지할 수 있다.
도시된 예의 메모리 모듈 제어기(140)가 프로세서(110)로부터 명령 포맷(COW1)의 명령(예로서, 도 1a의 명령(P1))을 수신할 때, 도시된 예의 메모리 모듈 제어기(140)는 수신된 명령에서 요청된 바와 같은 지정 어드레스 가능 메모리 위치에서 데이터의 기입시 복사를 수행하기 위해 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행한다. 예를 들어, 메모리 모듈 제어기(140)는 하나 이상의 메모리 액세스 동작을 수행하여, 제1 어드레스 [addr-old]에 위치하는 어드레스 가능 메모리 위치로부터 시작하는 데이터(본래의 데이터)의 S 바이트를 판독한다. 그러한 예들에서, 메모리 모듈 제어기(140)는 추가적인 메모리 액세스 동작들을 수행하여, 갱신된 데이터를 목적지 어드레스 {addr-new]로부터 시작하는 S개의 목적지 어드레스 가능 메모리 위치에 기입할 수 있다. 그러한 예들에서, 메모리 모듈 제어기(140)는 기입 메모리 액세스 동작들을 수행하기 전에 오프셋 [sub-offset]에서 시작하고 길이 [sub-len]을 갖는 판독 데이터의 일부를 [data]로 대체함으로써 판독 데이터를 갱신한다. 예를 들어, 메모리 모듈 제어기(140)는 제어 논리(420) 및 버퍼(430)(도 4 참조)를 이용하여 내부적으로 갱신을 수행할 수 있다. 따라서, 메모리 모듈 제어기(140)는 명령 포맷(COW1)의 초기 COW 기입 명령(예로서, 도 1a의 명령(P1))의 수신 외에 프로세서(110)에 의한 추가 개입 없이 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행한다.
도 3의 도시된 예에서, COW 기입 명령 포맷(COW2)은 아래와 같이 표현된다.
[cow-write][addr-old][len-old][addr-new][sub-offset][sub-len] [data]
도시된 예에서, [cow-write]는 명령 지정자이고, [addr-old] 파라미터는 오래된/본래의 데이터를 판독할 어드레스 가능 메모리 위치의 제1 어드레스(즉, 어드레스 가능 메모리 위치의 제1 위치)이고, [len-old] 파라미터는 제1 또는 소스 어드레스 가능 메모리 위치로부터 복사될 데이터의 바이트 길이(또는 바이트들의 양)를 지정하고, [addr-new] 파라미터는 갱신된 데이터를 기입할 어드레스 가능 메모리 위치의 목적지 어드레스이고, [sub-len] 파라미터는 [data]의 바이트 길이(또는 바이트들의 양)를 지정하며, [data] 파라미터는 오래된/본래의 데이터를 갱신하는 데 사용될 데이터이다. [sub-offset], [sub-len] 및 [data]는 수정 데이터를 포함한다. COW2는 COW1과 유사하지만, 사전 정의된 값(S)을 이용하는 것이 아니라 본래의 데이터/갱신되는 데이터/갱신된 데이터의 길이를 명확히 지정하는 것을 가능하게 한다.
도시된 예의 메모리 모듈 제어기(140)가 프로세서(110)로부터 명령 포맷(COW2)의 명령(예로서, 도 1a의 명령(P1))을 수신할 때, 도시된 예의 메모리 모듈 제어기(140)는 지정된 어드레스 가능 메모리 위치에서의 데이터로부터 수신된 명령에서 요청된 바와 같은 다른 지정된 어드레스 가능 메모리 위치로의 COW를 수행하기 위해 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행한다. 예를 들어, 메모리 모듈 제어기(140)는 소스 어드레스 [addr-old]로부터 오래된/본래의 데이터의 길이 [len-old]를 판독하기 위해 하나 이상의 메모리 액세스 동작을 수행한다. 그러한 예들에서, 메모리 모듈 제어기(140)는 길이 [len-old]를 갖는 갱신된 데이터를 목적지 어드레스 [addr-new]의 목적지 어드레스 가능 메모리 위치에 기입하기 위해 추가적인 메모리 액세스 동작들을 수행할 수 있다. 그러한 예들에서, 메모리 모듈 제어기(140)는 추가 메모리 액세스 동작들을 수행하기 전에 오프셋 [sub-offset]에서 시작하고 길이 [sub-len]을 갖는 판독 데이터의 일부를 [data]로 대체함으로써 판독 데이터를 갱신할 수 있다. 예를 들어, 메모리 모듈 제어기(140)는 제어 논리(420) 및 버퍼(430)를 이용하여 갱신을 수행할 수 있다. 따라서, 메모리 모듈 제어기(140)는 명령 포맷(COW2)의 초기 COW 기입 명령(예로서, 도 1a의 명령(P1))의 수신 외에 프로세서(110)에 의한 추가 개입 없이 메모리 액세스 동작들(MMC-1 내지 MMC-N)을 수행한다.
적절한 기술들을 이용하여, 명령 포맷들(COW1, COW2)에 더하여 또는 그들에 대한 대안으로서 COW 명령 포맷의 다른 예시적인 변형들을 구현할 수 있다. 예를 들어, [data]의 길이는 암시적일 수 있거나, 수정 데이터는 본래의 데이터의 다수의 부분이 대체되어야 한다는 것을 나타내는 [sub-offset], [sub-length], [data] 형태의 다수의 튜플(tuple)을 포함할 수 있다. 다른 예들에서, 수정 데이터는 본래의 데이터의 일부가 그를 증대 또는 결정하거나, 제공되는 값을 그에 더하는 것과 같은 산술 연산에 의해 조작되어야 한다는 것을 나타낼 수 있다. 수정 데이터는 본래의 데이터의 주어진 포인트에(예로서, 본래의 데이터의 제1 오프셋에) 새로운 데이터를 삽입하거나, 본래의 데이터로부터의 주어진 포인트에서(예로서, 본래의 데이터의 제2 오프셋에서) 주어진 양의 정보를 삭제하는 데 사용될 수 있다.
본 명세서에서 개시되는 예들에서, 제자리에서 기록 및 갱신하고, 수정 동작들을 이용하여 복사하는 동작들은 프로세서(예로서, 도 1a, 1b, 2 및/또는 3의 프로세서(110)) 또는 메모리 제어기(예로서, 도 1b의 메모리 제어기(112))에 의해서가 아니라 메모리 모듈(예로서, 도 1b의 메모리 모듈(130)) 내부에서 수행된다. 예를 들어, 원자 기입(예로서, 도 2의 원자 기입들)에서 기입될 데이터는 프로세서(110)에 의해 메모리 버스(120)를 통해 메모리 모듈(130)로 전송되며, 메모리 모듈 제어기(140)는 추가적인 프로세서 개입 없이 원자 기입 명령과 관련된 복원 정보를 메모리 모듈(130) 내에 메모리(150)의 로그 영역(160)에 내부적으로 저장한다. 다른 예들에서, COW 기입(예로서, 도 3의 COW 기입들) 동안 복사될 데이터(예로서, 소스 어드레스 [addr-old]로부터 복사되고, 갱신된 후에 목적지 어드레스 [addr-new]에 기입되는 데이터)는 메모리 모듈(130)로부터 메모리 버스(120)를 통해 프로세서(110)로 전송되지 않는 대신, 메모리 모듈(130) 내에서 내부적으로 복사(예로서, 판독 및 기입)된다. 따라서, 예시적인 개시되는 원자 기입 동작들 및 COW 기입 동작들을 수행하기 위한 본 명세서에서 개시되는 예들은 데이터를 기입하기 위해 훨씬 더 많은 외부 버스 통신을 이용하는 이전 시스템들보다 비교적 적은 프로세서 개입 및 외부 메모리 버스(120)를 통한 더 적은 프로세서 통신을 필요로 한다.
도 4는 도 1a, 1b, 2 및 3의 메모리 모듈 제어기(140)의 예시적인 구현의 블록도이다. 도 4의 도시된 예에서, 메모리 모듈 제어기(140)는 예시적인 버스 인터페이스(410), 예시적인 제어 논리(420)(예로서, 논리 회로), 예시적인 버퍼(430), 예시적인 메모리 인터페이스(440) 및 예시적인 기입 인터럽션 검출기(450)를 포함한다. 예시적인 메모리 모듈 제어기 버스(402)가 버스 인터페이스(410), 제어 논리(420), 버퍼(430), 메모리 인터페이스(440) 및/또는 기입 인터럽션 검출기(450) 사이의 통신을 촉진한다.
도 4는 메모리 모듈 제어기(140)를 구현하는 예시적인 방식을 도시하지만, 도 4에 도시된 요소들, 프로세스들 및/또는 장치들 중 하나 이상은 결합되고, 분할되고, 재배열되고, 생략되고, 제거되고/되거나, 임의의 다른 방식으로 구현될 수 있다. 또한, 예시적인 버스 인터페이스(410), 예시적인 제어 논리(420), 예시적인 버퍼(430), 예시적인 메모리 인터페이스(440) 또는 예시적인 기입 인터럽션 검출기(450) 및/또는 더 일반적으로 예시적인 메모리 모듈 제어기(140)는 하드웨어, 소프트웨어, 펌웨어 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의 조합에 의해 구현될 수 있다. 따라서, 예를 들어, 예시적인 버스 인터페이스(410), 예시적인 제어 논리(420), 예시적인 버퍼(430), 예시적인 메모리 인터페이스(440) 또는 예시적인 기입 인터럽션 검출기(450) 및/또는 더 일반적으로 예시적인 메모리 모듈 제어기(140) 중 어느 것이라도 하나 이상의 회로(들), 주문형 집적 회로(들)(ASIC(들)), 프로그래밍 가능 논리 장치(들)(PLD(들)) 및/또는 필드 프로그래머블 논리 장치(들)(FPLD(들)) 등에 의해 구현될 수 있다. 또한, 예시적인 메모리 모듈 제어기(140)는 도 4에 도시된 것들에 더하여 또는 그들 대신에 하나 이상의 요소, 프로세스 및/또는 장치를 포함할 수 있고/있거나, 임의의 또는 모든 도시된 요소들, 프로세스들 및 장치들 중 둘 이상을 포함할 수 있다.
도시된 예의 메모리 모듈 제어기(140)는 메모리 모듈 제어기(140)를 도 1b의 외부 메모리 버스(120)와 통신 결합하기 위한 예시적인 버스 인터페이스(410)를 구비한다. 도시된 예에서, 버스 인터페이스(410)는 메모리 모듈 제어기(140)와 프로세서(110) 및/또는 외부 메모리 버스(120)를 통해 그에 접속된 임의의 다른 장치들(예로서, 다른 프로세서들) 간의 통신을 관리한다.
도시된 예의 메모리 모듈 제어기(140)는 예를 들어 도 1a, 1b, 2 및 3의 메모리(150)에 대한 메모리 액세스 프로세스들 및 동작들을 관리하기 위한 제어 논리(420)를 구비한다. 도시된 예의 제어 논리(420)는 접속된 프로세서들(예로서, 프로세서(110))이 메모리 액세스 프로세스들의 동작들을 메모리 모듈 제어기(140)로 오프로딩하는 것을 가능하게 하는 본 명세서에서 설명되는 바와 같은 복합 메모리 액세스 동작들을 수행하도록 구성된다. 도시된 예에서, 제어 논리(420)는 논리 회로를 이용하여 구현된다. 그러나, 소프트웨어 및/또는 펌웨어를 추가로 또는 대안으로서 이용하여 제어 논리(420)를 구현할 수 있다.
도시된 예의 메모리 모듈 제어기(140)는 버스 인터페이스(410)를 통해 수신되는 착신 데이터 및/또는 명령들을 임시 저장하고/하거나 버스 인터페이스(410)를 통해 다른 장치들(예로서, 프로세서, 외부 메모리 제어기 등)로 통신할 발신 데이터를 임시 저장하기 위한 버퍼(430)를 구비한다. 일부 예들에서, 버스 인터페이스(410)는 COW 명령들의 본래의 데이터를 임시 저장하는 데 사용된다.
도시된 예의 메모리 모듈 제어기(140)는 메모리 모듈 제어기(140)를 도 1a, 1b, 2 및 3의 메모리(150)에 통신 결합하기 위한 메모리 인터페이스(440)를 구비한다. 도시된 예에서, 메모리 인터페이스(440)는 하나 이상의 기술-고유 산업 표준 메모리 인터페이스(예로서, NVRAM 인터페이스, DRAM 인터페이스 등과 같이 JEDEC 반도체 기술 협회에 의해 채택된 메모리 인터페이스 표준)에 따라 구현되는 하나 이상의 기술-고유 메모리 제어기(예로서, NVMAM 제어기, DRAM 제어기 등)를 포함한다. 예를 들어, 메모리 인터페이스(440)는 사전 충전 타이밍, 행-어드레스-스트로브(RAS) 타이밍, 열-어드레스-스트로브(CAS) 타이밍, 자기-리프레시 모드, 버스트 액세스 모드, 저전력 모드 등을 제어하기 위한 논리를 갖는 DRAM 제어기를 포함할 수 있다.
도시된 예에서, 메모리 인터페이스(440)는 메모리 모듈(130) 상에 탑재된 하나 이상의 특정 타입의 메모리들과의 통신을 촉진하도록 의도된 메모리-고유 인터페이스인 반면, 버스 인터페이스(410)는 임의의 특정 타입의 메모리 기술일 수 있지만, 그에 고유할 필요는 없다.
도시된 예의 메모리 인터페이스(440)는 휘발성 DRAM만을 갖는 메모리 모듈들에서 또는 비휘발성 RAM만을 갖는 메모리 모듈들에서 사용되도록 구성될 수 있다. 일부 예들에서, 메모리 인터페이스(440)는 단일 메모리 모듈 상의 상이한 타입의 휘발성 메모리(예로서, DRAM 및 SRAM), 단일 메모리 모듈 상의 상이한 타입의 비휘발성 메모리(예로서, PCRAM 및 멤리스터) 및/또는 단일 메모리 모듈 상의 상이한 타입의 휘발성 및 비휘발성 메모리(예로서, DRAM 및 PCRAM, DRAM 및 멤리스터 등)와 같은 상이한 타입의 메모리를 갖는 하이브리드 메모리 모듈의 구현을 가능하게 한다. 일부 그러한 예들에서, 그러한 하이브리드 메모리 모듈들을 구현하기 위해, 메모리 인터페이스(440)는 다수의 타입의 기술 고유 메모리 제어기(예로서, DRAM 제어기, PCRAM 제어기, 멤리스터 제어기, SRAM 제어기 등)를 포함할 수 있으며, 따라서 메모리 모듈 제어기(140)는 동일 메모리 모듈 상의 상이한 타입의 메모리 기술들과 통신할 수 있다.
도 4의 예시적인 기입 인터럽션 검출기(450)는 도 1a의 기입 인터럽션 검출기(105)를 구현하는 데 사용될 수 있다. 기입 인터럽션 검출기(450)는 메모리 모듈 제어기(140) 내에 도시되지만, 추가로 또는 대안으로서 도 1a, 1b, 2 및 3의 프로세서(110) 내에 또는 메모리 모듈 제어기(140) 및 프로세서(110) 외부에 제공되고, 도 1b의 메모리 버스(120)에 또는 메모리 모듈 제어기(140)와 통신하는 임의의 다른 장치(예로서, 다른 프로세서) 내에 통신 결합될 수 있다.
도시된 예의 기입 인터럽션 검출기(450)는 명령(예로서, 기입 명령, 원자 기입 명령, COW 기입 명령 등)이 인터럽트션되었을 수 있는지를 결정한다. 대안으로서, 기입 인터럽션 검출기(450)는 시스템(100)이 방금 재시동되었는지를 결정할 수 있다. 일부 예들에서, 메모리 모듈 제어기(140)는 기입 인터럽션 검출기(450)를 이용하여, (장애-정지 이벤트에 이어서) 복원 동작이 수행되어야 하는지를 결정한다.
도 1a, 1b, 2, 3 및 4의 메모리 모듈 제어기(140)를 구현하기 위한 예시적인 프로세스들을 나타내는 흐름도들이 도 5, 6 및/또는 7에도 도시된다. 이러한 예들에서, 프로세스들은 도 4의 제어 논리(420)에 의해 수행될 수 있다. 일부 예들에서, 전술한 바와 같은 논리 회로가 예시적인 프로세스들을 수행하기 위한 제어 논리(420)를 구현할 수 있다. 일부 예들에서, 제어 논리(420)를 구성하기 위한 프로그램 또는 그의 부분들이 반도체 판독 전용 메모리(ROM) 장치, 집적 회로(IC) 메모리 장치, 내장 하드웨어 메모리, 논리 회로, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM), 또는 제어 논리(420)와 관련되고/되거나 펌웨어 또는 전용 하드웨어 내에 내장된 메모리와 같은 컴퓨터 판독가능 저장 매체 상에 저장될 수 있다. 또한, 예시적인 프로세스들이 도 5, 6 및/또는 7에 도시된 흐름도들과 관련하여 개시되지만, 메모리 모듈 제어기(140)를 구현하는 많은 다른 방법이 대안으로 이용될 수 있다. 예를 들어, 블록들의 실행의 순서가 변경될 수 있고/있거나, 설명되는 블록들 중 일부가 변경, 제거 또는 결합될 수 있다.
전술한 바와 같이, 도 5, 6 및/또는 7의 예시적인 프로세스들은 제어 논리(420)에 의해 구현될 수 있다. 제어 논리(420)는 반도체 판독 전용 메모리(ROM) 장치, 집적 회로(IC) 메모리 장치, 내장 하드웨어 메모리, 논리 회로, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 및/또는 임의의 지속 기간 동안(예로서, 연장된 기간 동안, 영구적으로, 짧은 순간 동안, 임시 버퍼링 동안 그리고/또는 정보의 캐싱 동안) 정보를 저장하는 임의의 다른 저장 매체와 같은 유형적인 컴퓨터 판독가능 매체에 저장된 프로그램을 이용하여 구성될 수 있다. 본 명세서에서 사용되는 바와 같이, 유형적인 컴퓨터 판독가능 매체라는 용어는 임의 타입의 컴퓨터 판독가능 저장 장치를 포함하고, 전파 신호들을 배제하는 것으로 명확히 정의된다. 추가로 또는 대안으로서, 제어 논리(420)는 하드 디스크 드라이브, 플래시 메모리, 판독 전용 메모리, 컴팩트 디스크, 디지털 다기능 디스크, 캐시, 랜덤 액세스 메모리 및/또는 임의의 지속 기간 동안(예로서, 연장된 기간 동안, 영구적으로, 짧은 순간 동안, 임시 버퍼링 동안 그리고/또는 정보의 캐싱 동안) 정보를 저장하는 임의의 다른 저장 매체와 같은 비일시적 컴퓨터 판독가능 매체에 저장된 프로그램을 이용하여 구성될 수 있다. 본 명세서에서 사용되는 바와 같이, 비일시적 컴퓨터 판독가능 매체라는 용어는 임의 타입의 컴퓨터 판독가능 매체를 포함하고, 전파 신호들을 배제하는 것으로 명확히 정의된다. 본 명세서에서 사용되는 바와 같이, "적어도"라는 문구가 청구항의 전제부에서 전이어로서 사용될 때, 이것은 "포함하는"이라는 용어가 개방적인 것과 같은 방식으로 개방적이다. 따라서, "적어도"를 전제부에서 전이어로서 사용하는 청구항은 청구항에 명확히 기재된 것들에 더하여 요소들을 포함할 수 있다.
도 1a, 1b, 2 및 4의 메모리 모듈 제어기(140)를 이용하여, 프로세서(110)(예로서, 도 1a, 1b, 2)로부터 수신된 원자 기입 명령들을 수행할 수 있는 예시적인 프로세스(500)가 도 5에 도시된 예시적인 흐름도에 의해 표현된다. 프로세스(500)는 반복적이다. 메모리 모듈 제어기(140)는 다수의 명령을 프로세스(500)를 이용하여 서로 병렬로 처리할 수 있다.
도시된 예시적인 프로세스(500)에서, 메모리 모듈 제어기(140)는 프로세서(110)로부터 메모리 액세스 동작들을 수행하기 위한 명령들(예로서, 판독에 이어서 도 1a의 명령(P1)과 같은 원자 기입)을 수신한다. 도시된 예에서, 원자 기입 명령의 수신시에 그리고 인터럽션되지 않을 때, 메모리 모듈 제어기(140)는 복원 정보를 저장하고, 이어서 외부 메모리 버스(120)를 통해 프로세서(110)로부터 추가 명령들을 요구하지 않고서 그러한 단일 원자 기입 명령에 기초하여 기입을 수행한다.
먼저, 도 5의 도시된 예의 블록 510에서, 제어 논리(420)(도 4)는 새로운 명령이 버스 인터페이스(410)(도 4)를 통해 프로세서(110)(도 1a 및 1b)로부터 아직 수신되지 않았는지를 결정한다. 일부 예들에서, 제어 논리(420)는 명령이 버퍼(430)(도 4)의 큐 내에 대기중인지를 결정한다. 명령이 수신된 경우(블록 510), 제어는 블록 520으로 진행한다. 명령이 수신되지 않은 경우(블록 510), 제어 논리(420)는 버스 인터페이스(410) 및/또는 버퍼(430)를 계속 모니터링하여 명령이 프로세서(110)로부터 수신되었는지를 결정한다.
도시된 예의 블록 520에서, 제어 논리(420)는 수신된 명령이 원자 기입 명령인지를 결정한다. 예를 들어, 제어 논리(420)는 도 2와 관련하여 전술한 바와 같이 수신된 명령에서 지정되는 (예로서, 원자 기입 명령 포맷들(AW1, AW2)을 이용하는) 명령 지정자 및/또는 (예로서, 원자 기입 명령 포맷(AW3)을 이용하는) 특수 어드레스에 기초하여 명령의 타입을 결정할 수 있다. 수신된 명령이 원자 기입 명령이 아닌 경우(블록 520), 제어는 블록 525로 진행하며, 여기서 제어 논리(420) 및/또는 메모리 인터페이스(440)는 수신된 명령을 (예로서, 그의 명령 지정자에 따라) 실행한다. 예를 들어, 제어 논리(420) 및/또는 메모리 인터페이스(440)는 판독 명령, 비원자 기입 명령, 저전력 전이 명령 등을 실행할 수 있다. 제어 논리(420)가 수신된 명령이 원자 기입 명령인 것으로 결정하는 경우(블록 520), 제어는 블록 530으로 진행한다.
블록 530에서, 제어 논리(420)는 메모리 인터페이스(440)로 하여금 명령과 관련된 복원 정보를 메모리(150)(도 1a, 1b, 2)의 하나 이상의 로그 레코드(162)(도 1b) 내에 저장하게 한다. 복원 정보는 목적지 어드레스(들), 새로운 데이터 및/또는 목적지 어드레스(들)의 이전의 콘텐츠를 포함할 수 있다. 복원 정보는 기입이 인터럽션되는 경우에 기입 명령에 의해 요청된 기입의 재실행 또는 취소를 가능하게 하는 데 사용된다.
블록 540에서, 메모리 인터페이스(440)는 원자 기입 명령의 목적지 어드레스(들)에 대응하는 메모리(150)의 목적지 위치(들)(182)에 원자 기입 명령의 새로운 데이터를 기입한다. 도 5의 예에서, 블록 540에서, 데이터는 프로세서(110)로부터의 프로세서(예로서, 메모리 제어기) 개입(예로서, 본래의 원자 기입 명령, 명령어 메시지 등 외의 추가적인 기입 요청) 없이 기입된다. 블록 540 후에, 제어는 블록 550으로 진행한다.
도시된 예의 블록 550에서, 메모리 인터페이스(440)는 원자 기입 명령이 완료되었다는 것을 나타내기 위한 커밋 레코드를 기입한다. 일부 예들에서, 블록 550에서, 메모리 모듈 제어기(140)는 더 이상 필요하지 않은 로그 레코드들(162)을 로그(160)로부터 제거할 수 있는데, 그 이유는 그러한 로그 레코드들(162)이 미처리 원자 기입들과 더 이상 관련되지 않기 때문이다. 따라서, 원자 기입과 관련된 복원 정보는 결국 삭제될 수 있다. 일부 예들에서, 로그(160)에 대한 첨부가 원자 동작인 것을 보증하기 위해 록(lock)이 사용될 수 있다. 일부 예들에서는, 커밋 레코드들이 사용되지 않으며, 미처리 원자 기입들을 더 이상 미처리가 아닌 것으로 마킹하는 소정의 다른 방법이 사용된다.
블록 550 후에, 제어 논리(420)는 프로세서(110)로부터의 추가 명령들을 위해 버스 인터페이스(410) 및/또는 버퍼(430)를 계속 모니터링할지를 결정한다(블록 570). 제어 논리(420)가 명령들의 수신을 더 이상 모니터링하지 않아야 하는 것으로 결정하는 경우(예로서, 시스템이 셧다운 또는 슬립 모드에 들어가는 경우, 메모리 모듈(130)이 프로세서(110)로부터 통신 분리된 경우, 기타 등등), 예시적인 프로세스(500)는 종료된다. 그러나, 제어 논리(420)가 명령들의 수신을 계속 모니터링해야 하는 것으로 결정하는 경우, 제어는 블록 510으로 복귀하고, 여기서 제어 논리(420)는 외부 메모리 버스(120)를 통해 프로세서(110) 또는 다른 장치로부터의 다음 명령을 기다린다.
도 5의 위의 원자 기입 프로세스는 원자 기입 명령들의 원자성을 보증하는 데 사용될 수 있다. 따라서, 원자 기입 프로세스가 인터럽션될 때(예로서, 프로세서(110)가 전력 장애, 시스템 충돌 등으로 인해 리부팅될 때), 예를 들어 도 6의 프로세스(600)를 이용하여 복원이 수행될 수 있다. 일부 예들에서, 프로세스(500)가 인터럽션되는 경우, 원자 기입 명령의 처리의 일부는 프로세스(500)에 의해 완료되지 못할 수 있다. 예를 들어, 블록 540에 의해 행해질 메모리에 대한 새로운 데이터의 기입은 기입이 인터럽션되는 경우에 프로세스(500)에 의해 완료되지 못했을 수 있다.
도 6에서, 프로세스(600)는 (예로서, 충돌, 전력 손실 등으로 인한) 기입 인터럽션으로부터의 복원을 수행하기 위해 도 1a, 1b, 2 및 4의 메모리 모듈 제어기(140)에 의해 실행될 수 있다. 블록 610에서, 제어 논리(420)(도 4)는 복원을 수행할지를 결정한다. 일부 예들에서, 메모리 모듈 제어기(140)는 기입 인터럽션 검출기(450)로부터의 표시에 기초하여, 인터럽션된 기입 복원 프로세스를 수행할지를 결정한다. 예를 들어, 기입 인터럽션 검출기(450)는 (예로서, 시스템 충돌 플래그, 전력 장애 플래그, 리부트 플래그 등에 기초하여) 시스템 충돌 및/또는 전력 장애가 발생했는지를 결정할 수 있다.
일부 예들에서, 메모리 모듈 제어기(140)는 프로세서(110)로부터 수신된 정보(예로서, 상태 메시지, 복원 명령 등)에 기초하여, 메모리(150)의 상태(예로서, 로그 영역(160)이 불완전한 명령들을 포함함)에 기초하여, 수행되는 하드웨어 복원 동작들(예로서, 디스크 재구축)에 기초하여, 기타 등등에 기초하여 복원 프로세스를 수행할지를 결정한다. 예를 들어, 시스템 충돌 또는 전력 장애가 원자 기입 명령의 메모리 액세스 동작을 수행하기 위한 초기 시도를 인터럽션할 수 있다.
도 6의 도시된 예에서, 메모리 모듈 제어기(140)는 인터럽션된 기입 복원 프로세스를 수행하여 임의의 미처리 원자 기입(들)을 재실행 또는 취소함으로써 데이터를 복원한다. 일부 예들에서, 도 6의 프로세스(600)는 프로세서(110) 또는 다른 장치가 복원 프로세스를 수행하기 위한 명령들을 외부 메모리 버스(120)를 통해 메모리 모듈 제어기(140)로 전송함으로써 개시될 수 있다. 먼저, 도 6의 도시된 예에서, 메모리 모듈 제어기(140)가 인터럽션된 기입 복원을 수행하지 않아야 하는 경우(블록 610), 제어 논리(420)는 인터럽션된 기입 복원 프로세스(600)를 종료한다. 메모리 모듈 제어기(140)가 인터럽션된 기입 복원을 수행해야 하는 경우, 제어는 블록 620으로 진행한다.
도시된 예의 블록 620에서, 제어 논리(420)(도 4)는 로그(160)의 스캐닝을 시작한다. 일부 예들에서, 블록 620에서, 제어 논리(420)는 로그(160)의 가장 이른 또는 가장 늦은 로그 레코드(162)를 가리키기 위한 포인트를 설정한다. 기입들이 재실행되어야 하는 일부 예들에서, 로그(160)는 가장 오래된 것으로부터 가장 최근의 로그 레코드(162)로 스캐닝될 수 있다. 기입들이 취소되어야 하는 예들에서, 로그(160)는 가장 최신의 것으로부터 가장 오래된 로그 레코드(162)로 스캐닝될 수 있다.
도 6의 블록 630에서, 제어 논리(420)는 로그(160)를 검사하여, 처리될 로그(160)의 임의 로그 레코드(162)가 더 남았는지를 결정한다. 처리될 로그 레코드(162)가 남지 않은 경우, 제어는 블록 680으로 진행한다. 처리될 로그 레코드(162)가 남은 경우, 제어는 블록 640으로 진행한다.
도 6의 블록 640에서, 제어 논리(420)는 스캔의 현재 로그 레코드(162)를 검사하여, 현재의 로그 레코드(162)가 복원 정보를 갖는지를 결정한다. 현재의 로그 레코드(162)가 복원 정보를 갖지 않는 경우, 제어는 블록 670으로 진행한다. 현재의 로그 레코드(162)가 복원 정보를 포함하는 경우, 제어는 블록 650으로 진행한다.
도 6의 블록 650에서, 제어 논리(420)는 현재의 로그 레코드(162)가 커밋 레코드와 관련되는지를 검사한다. 현재의 로그 레코드(162)가 커밋 레코드와 관련되는 경우, 현재의 로그 레코드(162)는 더 이상 미처리가 아닌(예를 들어 완료된) 원자 기입과 관련되며, 제어는 블록 670으로 진행한다. 현재의 로그 레코드(162)가 커밋 레코드와 관련되지 않은 경우, 제어는 블록 660으로 진행한다. 일부 예들에서, 로그 레코드들(162)은 (커밋 레코드들을 포함하는) 각각의 로그 레코드(162)가 그 로그 레코드(162)와 관련된 명령의 수(예로서, 지금까지 수신된 명령들의 카운트)를 포함함으로써 커밋 레코드들과 관련될 수 있으며; 로그 레코드(162) 및 커밋 레코드가 동일 명령 수를 갖는 경우에 로그 레코드(162)는 커밋 레코드와 관련된 것으로 간주된다.
블록 660에서, 제어 논리(420)는 현재의 로그 레코드(162) 내의 복원 정보에 대응하는 인터럽션된 기입(또는 하위 기입)의 재실행을 수행할 수 있다(예를 들어, 제어 논리는 복원 정보 내에 포함된 새로운 데이터를 복원 정보 내에 포함된 목적지 어드레스에 기입한다). 대안으로서, 제어 논리(420)는 현재 로그 레코드(162) 내의 복원 정보에 대응하는 인터럽션된 기입(또는 하위 기입)의 취소를 수행할 수 있다(예로서, 제어 논리(420)는 복원 정보에 포함된 오래된 데이터를 복원 정보에 포함된 목적지 어드레스에 기입한다. 일부 예들에서, 재실행이 항상 사용되거나, 취소가 항상 사용된다.
도 6의 블록 670에서, 제어 논리(420)는 로그(160) 내의 다음 로그 레코드(162)로 진행한다. 이것은 로그(160)가 스캐닝되고 있는 방향에서 현재의 로그 레코드(162)로 포인터를 진행시키는 것을 포함할 수 있다. 이어서, 제어는 블록 630으로 복귀하여, 처리될 로그 레코드(162)가 더 남았는지를 결정한다. 처리될 로그 레코드(162)가 남지 않은 경우, 제어는 블록 680으로 진행한다.
(블록 630에서) 처리될 로그 레코드가 남지 않은 경우, 인터럽션되었을 수 있는 모든 미처리 원자 기입들이 재실행 또는 취소되었다. 따라서, 블록 680에서, 제어 논리(420)는 전체 로그(160)를 원자 방식으로 삭제할 수 있다. 그러한 프로세스는 모든 복원 정보를 삭제하며, 더 이상 미처리 원자 기입이 존재하지 않는다는 것을 나타낸다. 일부 예들에서, 제어 논리(420)는 대응하는 기입 명령에 대한 주어진 원자 기입(또는 복합 원자 기입) 명령과 관련된 모든 로그 레코드들(162)의 처리를 종료한 후에 로그(160)에 커밋 레코드를 기입한다. 그러한 프로세스는 복원 자체가 인터럽션되는 경우에 자원들을 절약할 수 있다.
일부 예들에서, 원자 기입의 인터럽션에 이어서(예로서, 도 1a의 P1과 관련된 복원 정보가 메모리(150)의 로그(160)(도 1b) 내에 기록되고/되거나 메모리 모듈 제어기(140)에 의해 수신되는 동안), 프로세서(110) 상에서 실행되는 펌웨어, 소프트웨어 및/또는 하드웨어가 메모리(150)의 로그(160)를 검사하도록 구성될 수 있다. 일부 예들에서, 프로세서(110)는 다수의 명령을 메모리 모듈 제어기(140)로 전송하여, 메모리 액세스 동작들을 수행함으로써, 인터럽션된 기입 복원 프로세스(예로서, 예시적인 프로세스(600))를 개시할 수 있다. 일부 예들에서, 메모리(150)의 하드웨어(예로서, 반도체 장치, 하드 디스크 드라이브 등) 및/또는 메모리(150)와 관련된 하드웨어 장치 내의 복원 도구들(예로서, 복원 소프트웨어, 펌웨어 등)은 메모리(150)에 대한 전력의 재개시에 또는 프로세서(110)에 의해 명령될 때 자동으로 기입 인터럽션으로부터의 복원 프로세스(예로서, 예시적인 프로세스(600))를 독립적으로 수행한다.
상이한 예에서, 프로세스(600)는 메모리 모듈 제어기(140)에 의해 비교적 자율적으로 수행되지 않는다. 대신, 프로세스(600)는 기입들을 취소 또는 재실행하는 데 사용하기 위해 프로세서(110)에 제공되는 복원 정보를 이용하여 프로세서(110)에 의해 수행된다. 즉, 프로세서(110)는 메모리 명령들을 이용하는 메모리 모듈 제어기(140)로부터의 도움을 이용하여 로그(160)를 판독하며, 프로세스(600)와 유사한 프로세스에 따라, 프로세서(110)는 각각의 미처리 원자 기입을 재실행 또는 취소하기 위한 적절한 비원자 기입 명령들을 메모리(150)에 대해 발한다. 이어서, 프로세서(110)는 다른 명령을 이용하여 로그(160)를 삭제할 수 있다. 프로세서(110)가 복원을 수행해야 하는 예들에서, 메모리 모듈 제어기(140)는 메모리 모듈 제어기(140)가 복원을 수행해야 하는 경우보다 적은 작업들을 수행하도록 구성될 수 있다.
프로세서(110)(도 1a, 1b, 3)로부터 수신된 COW 기입 명령을 수행하기 위해 도 1a, 1b, 3 또는 4의 메모리 모듈 제어기(140)에 의해 실행될 수 있는 예시적인 프로세스(700)가 도 7에 도시된 흐름도에 의해 표현된다. 도시된 예시적인 프로세스(700)에서, 프로세서(110)는 다중 메모리 액세스 동작을 수행하기 위한 단일 명령(예로서, COW 기입)을 메모리 모듈 제어기(140)로 전송한다. 예시적인 메모리 모듈 제어기(140)는 외부 메모리 버스(120)를 통해 프로세서(110)로부터 추가 명령들을 요구하지 않고서 프로세서(110)로부터의 단일 COW 기입 명령에 기초하여 다중 메모리 액세스 동작을 수행한다.
먼저, 도 7의 도시된 예의 블록 710에서, 제어 논리(420)(도 4)는 명령이 버스 인터페이스(410)(도 4)를 통해 프로세서(110)(도 1a, 1b 및 3)로부터 수신되었는지를 결정한다. 일부 예들에서, 제어 논리(420)는 명령이 버퍼(430)(도 4)의 큐 내에 대기중인지를 결정한다. 명령이 수신된 경우(블록 710), 제어는 블록 720으로 진행한다. 명령이 수신되지 않은 경우(블록 710), 제어는 블록 710에서 버스 인터페이스(410) 및/또는 버퍼(430)를 계속 모니터링하여, 명령이 프로세서(110)로부터 수신되었는지를 결정한다.
도시된 예의 블록 720에서, 제어 논리(420)는 수신된 명령이 COW 기입 명령인지를 결정한다. 예를 들어, 제어 논리(420)는 도 3과 관련하여 전술한 바와 같이 명령 메시지 내의 명령 지정자(예로서, 도 3의 COW 명령 포맷들(COW1 및 COW2) 내의 [cow-write] 지정자)에 기초하여, 수신된 명령의 타입을 결정할 수 있다. 수신된 명령이 COW 기입 명령이 아닌 경우(블록 720), 제어는 블록 725로 진행하며, 여기서 제어 논리(420) 및/또는 메모리 인터페이스(440)는 (예로서, 수신된 명령의 명령 지정자에 따라) 수신된 명령을 실행한다. 예를 들어, 제어 논리(420) 및/또는 메모리 인터페이스(440)는 판독 명령, 통상의 기입 명령 또는 원자 기입 명령, 저전력 전이 명령 등을 실행할 수 있다. 제어 논리(420)가 수신된 명령이 COW 기입 명령인 것으로 결정하는 경우(블록 720), 제어는 블록 730으로 진행한다.
도 7의 블록 730, 740 및 750에서, 제어 논리(420)는 프로세서(110)에 의한 추가 개입 없이 메모리 인터페이스(440)를 이용하여 COW 기입 명령을 실행한다. 예를 들어, 블록 730에서, 메모리 인터페이스(440)는 제1 어드레스 가능 위치(182)로부터 본래의 데이터를 판독한다. 제1 어드레스 가능 위치(182)(예로서, 도 1b의 ADDR[1])는 오래된 (또는 소스) 어드레스 파라미터(예로서, 도 3의 COW1 및 COW2 포맷들의 [addr-old] 파라미터)에서 지정된다. 본래의 데이터는 버퍼(430) 내에 유지되거나, 새로운 또는 목적지 어드레스 파라미터(예로서, 도 3의 COW1 및 COW2 포맷들의 [addr-new] 파라미터)에서 지정된 제2 어드레스 가능 위치(182)(예로서, 도 1b의 ADDR[3])에 복사될 수 있다.
블록 740에서, 메모리 인터페이스(440)는 수정 데이터를 이용하여 본래의 데이터를 갱신하여, 갱신된 데이터를 생성한다. 이러한 갱신은 버퍼(430) 내에 유지된 본래의 데이터에 대해 또는 제2 어드레스 가능 위치(182)에 있는 본래의 데이터의 사본에 대해 수행될 수 있다. 갱신은 제1 오프셋에서 시작하는 본래의 데이터의 일부를 새로운 데이터로 대체함으로써 수행될 수 있다.
도시된 예의 블록 750에서, 메모리 인터페이스(440)는 COW 기입 명령에 따라 메모리(150)의 제2 어드레스 가능 위치에 갱신된 데이터를 저장한다. 이것은 메모리 버퍼(430)로부터 갱신된 데이터를 복사하는 것을 포함할 수 있다. 일부 예들에서, 블록 740 및 750)은 먼저 본래의 데이터를 메모리(150)의 제2 어드레스 가능 위치에 복사하고 이를 그 자리에서 수정함으로써 동시에 수행된다. 다른 예들에서, 블록 740 및 750은 본래의 데이터를 수정하는 동안에 이를 메모리(150)의 제1 어드레스 가능 위치로부터 메모리(150)의 제2 어드레스 가능 위치로 복사함으로써 동시에 또는 실질적으로 동시에 수행된다. 예를 들어, 메모리 인터페이스(440)는 제1 오프셋(예로서, 변경되지 않아야 하는 본래 데이터의 부분(들))에 의해 커버되지 않는 제1 어드레스 가능 위치로부터 제2 어드레스 가능 위치로 본래의 데이터를 복사하고, 새로운 데이터를 제2 어드레스 가능 위치 + 제1 오프셋에 기입할 수 있다. 본래의 데이터를 판독하고, 수정하고/하거나, 저장하는 다른 적절한 기술들이 구현될 수 있다.
일부 예들에서, 본래의 데이터가 상당한 길이를 갖는 경우, 블록 730, 740 및 750은 여러 번 반복될 수 있다. 예를 들어, 본래 데이터의 제1 부분이 판독, 갱신 및 저장될 수 있고, 이어서 본래의 데이터의 제2 부분이 판독, 갱신 및 저장될 수 있다. 일부 예들에서, 이러한 블록들은 병렬로 수행된다.
블록 750 후에, 제어 논리(420)는 수신된 명령들을 위해 버스 인터페이스(410) 및/또는 버퍼(430)를 계속 모니터링할지를 결정한다(블록 760). 제어 논리(420)가 메모리 모듈(130)이 더 이상 명령들의 수신을 모니터링하지 않을 것으로 결정하는 경우(예로서, 시스템이 셧다운에 들어가는 경우, 메모리 모듈(130)이 프로세서(110)로부터 통신 분리된 경우 등), 예시적인 프로세스(700)는 종료된다. 그러나, 제어 논리(420)가 메모리 모듈이 명령들의 수신을 계속 모니터링할 것으로 결정하는 경우(블록 760), 제어는 블록 710으로 복귀하고, 여기서 제어 논리(420)는 외부 메모리 버스(120)를 통해 프로세서(110) 또는 다른 장치로부터 다음 명령을 기다린다.
도 5-7의 예시적인 프로세스들은 서로 독립적으로 도시되고 설명되지만, 일부 예들에서 도 5-7의 예시적인 프로세스들 중 어느 하나 이상은 동일하고/하거나 상이한 메모리 모듈들 또는 메모리 노드들을 이용하여 동일 시스템 상에서 병렬로 또는 순차적으로 함께 수행될 수 있다. 예를 들어, 도 5 및 도 7 양자는 단일 메모리 모듈 제어기(140)에 의해 구현될 수 있으며, 따라서 도 5는 원자 기입 명령들을 실행하도록 구현되고, 도 7은 COW 기입 명령들을 실행하도록 구현될 수 있다.
본 명세서에서 설명된 예시적인 방법들 및 장치들은 시스템의 외부 메모리 버스의 더 효율적인 사용을 가능하게 하며, 랜덤 액세스 메모리 및/또는 COW 내의 비휘발성 로그의 사용을 통해 메모리의 일관된 갱신들을 보증한다.
본 명세서에서는 소정의 예시적인 방법들, 장치들 및 제조물들이 설명되었지만, 본 특허의 보호 범위는 그에 한정되지 않는다. 이와 달리, 본 특허는 본 특허의 청구항들의 범위 내에 타당하게 속하는 모든 방법들, 장치들 및 제조물들을 포함한다.

Claims (22)

  1. 프로세서 개입 없이 기입 요청과 관련된 복원 정보를 메모리 내에 저장하는 단계 -상기 복원 정보는 상기 기입 요청에 의해 요청된 기입이 인터럽션되는 경우에 상기 기입의 재실행(redo) 또는 취소(undo)를 가능하게 하고, 상기 기입 요청은 프로세서로부터 수신되고 목적지 어드레스 및 새로운 데이터를 포함함- 와,
    상기 기입이 인터럽션되지 않은 경우, 프로세서 개입 없이 상기 새로운 데이터를 상기 메모리 내의 상기 목적지 어드레스에 기입하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 프로세서 개입 없이 복원 정보를 저장하는 단계는 프로세서 개입 없이 상기 복원 정보를 상기 메모리의 비휘발성 로그 내에 저장하는 단계를 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 기입을 인터럽션하는 시스템 충돌 또는 전력 장애 후에, 프로세서 개입 없이 상기 복원 정보에 기초하여 상기 기입의 재실행 또는 상기 기입의 취소 중 적어도 하나를 수행하는 단계를 더 포함하는
    방법.
  4. 제 2 항에 있어서,
    상기 기입이 인터럽션되는 경우, 프로세서 개입 없이 상기 복원 정보를 이용하여 상기 새로운 데이터를 상기 메모리 내의 상기 목적지 어드레스에 기입하는 단계를 더 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 기입의 인터럽션 후에, 상기 기입의 취소 또는 재실행에 사용하기 위해 상기 복원 정보를 상기 프로세서에 제공하는 단계를 더 포함하는
    방법.
  6. 메모리에 기입하기 위한, 목적지 어드레스 및 새로운 데이터를 포함하는 기입 요청을 프로세서로부터 수신하는 버스 인터페이스와,
    상기 기입 요청과 관련된 복원 정보의 저장을 유발하는 논리 회로를 포함하되,
    상기 복원 정보는 상기 기입 요청과 관련된 기입이 인터럽션되는 경우에 상기 기입의 재실행 또는 취소를 가능하게 하는
    장치.
  7. 제 6 항에 있어서,
    상기 기입이 인터럽션되지 않는 경우에, 상기 논리 회로는 또한
    상기 새로운 데이터를 상기 메모리 내의 상기 목적지 어드레스에 기입하고,
    상기 새로운 데이터가 상기 목적지 어드레스에 기입된 후에 프로세서 개입 없이 상기 복원 정보를 삭제하도록 구성되는
    장치.
  8. 제 6 항에 있어서,
    상기 논리 회로는 또한
    상기 목적지 어드레스 및 새로운 데이터를 상기 복원 정보로서 저장하고,
    상기 기입 요청의 메모리 액세스 동작을 수행하기 위한 시도의 인터럽션 후에, 상기 새로운 데이터를 상기 메모리 내의 상기 목적지 어드레스에 기입하도록 구성되는
    장치.
  9. 제 6 항에 있어서,
    상기 논리 회로는 또한
    상기 목적지 어드레스의 상기 메모리 내의 콘텐츠를 판독하고,
    상기 목적지 어드레스 및 상기 판독된 콘텐츠를 상기 복원 정보로서 저장하고,
    상기 기입의 인터럽션 후에, 상기 판독된 콘텐츠를 상기 메모리 내의 상기 목적지 어드레스에 기입하도록 구성되는
    장치.
  10. 제 6 항에 있어서,
    상기 논리 회로 및 상기 버스 인터페이스는 상기 메모리의 메모리 모듈 내에 나란히 배치되는
    장치.
  11. 제 6 항에 있어서,
    상기 복원 정보는 상기 메모리 내의 로그 내에 저장되는
    장치.
  12. 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는 실행될 때 머신으로 하여금 적어도
    목적지 어드레스 및 새로운 데이터를 포함하는 기입 요청을 메모리 모듈에 대해 발생시키게 하고,
    상기 기입 요청의 수신에 응답하여, 상기 메모리 모듈은 상기 기입의 인터럽션의 경우에 상기 기입의 재실행 또는 상기 기입의 취소를 가능하게 하기 위해 상기 기입 요청과 관련된 복원 정보를 저장하는
    컴퓨터 판독가능 저장 매체.
  13. 프로세서로부터 기입시 복사(copy-on-write) 기입 명령을 수신하기 위한 버스 인터페이스 -상기 기입시 복사 기입 명령은 제1 어드레스, 제2 어드레스 및 수정 데이터를 포함함- 와,
    메모리 내의 상기 제1 어드레스로부터 제1 데이터를 판독하고, 상기 수정 데이터를 이용하여 상기 제1 데이터를 갱신하고, 상기 갱신된 데이터를 상기 메모리 내의 상기 제2 어드레스에 저장하기 위한 논리 회로를 포함하는
    장치.
  14. 제 13 항에 있어서,
    상기 수정 데이터는 오프셋 및 새로운 데이터를 포함하고, 상기 논리 회로는 또한 상기 오프셋에서 제1 데이터를 상기 새로운 데이터로 대체함으로써 상기 수정 데이터를 이용하여 상기 제1 데이터를 갱신하는
    장치.
  15. 제 13 항에 있어서,
    상기 논리 회로는 또한 상기 제1 데이터의 제1 오프셋에 새로운 데이터를 삽입하거나 상기 제1 데이터의 제2 오프셋에서 데이터를 삭제하는 것 중 적어도 하나에 의해 상기 수정 데이터를 이용하여 상기 제1 데이터를 갱신하는
    장치.
  16. 제 13 항에 있어서,
    상기 제1 데이터의 길이는 사전결정된 값, 상기 기입시 복사 기입 명령의 길이 필드, 또는 상기 제1 어드레스와 상기 기입시 복사 기입 명령의 제3 어드레스의 차이 중 적어도 하나에 의해 결정되는
    장치.
  17. 제 13 항에 있어서,
    상기 논리 회로 및 상기 버스 인터페이스는 상기 메모리의 메모리 모듈 내에 나란히 배치되는
    장치.
  18. 프로세서 개입 없이 메모리 내의 제1 어드레스로부터 제1 데이터를 판독하는 단계 -상기 제1 어드레스는 프로세서로부터 수신된 기입시 복사 기입 명령에서 지정됨- 와,
    프로세서 개입 없이 상기 기입시 복사 기입 명령의 수정 데이터를 이용하여 상기 제1 데이터를 갱신하는 단계와,
    프로세서 개입 없이 상기 메모리 내의 상기 기입시 복사 기입 명령의 제2 어드레스에 상기 갱신된 데이터를 저장하는 단계를 포함하는
    방법.
  19. 제 18 항에 있어서,
    상기 수정 데이터는 오프셋 및 새로운 데이터를 포함하고, 상기 방법은 상기 오프셋에서 제1 데이터를 상기 새로운 데이터로 대체함으로써 상기 수정 데이터를 이용하여 상기 제1 데이터를 갱신하는 단계를 더 포함하는
    방법.
  20. 제 18 항에 있어서,
    상기 제1 데이터의 제1 오프셋에 새로운 데이터를 삽입하거나 상기 제1 데이터의 제2 오프셋에서 오래된 데이터를 삭제하는 것 중 적어도 하나에 의해 상기 수정 데이터를 이용하여 상기 제1 데이터를 갱신하는 단계를 더 포함하는
    방법.
  21. 제 18 항에 있어서,
    상기 제1 데이터의 길이는 사전결정된 값, 상기 기입시 복사 기입 명령의 길이 필드, 또는 상기 제1 어드레스와 상기 기입시 복사 기입 명령의 제3 어드레스의 차이 중 적어도 하나에 의해 결정되는
    방법.
  22. 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는 실행될 때 머신으로 하여금 적어도
    기입시 복사 기입 요청을 메모리 모듈로 전송하게 하고,
    상기 기입시 복사 기입 요청은 제1 어드레스, 제2 어드레스 및 수정 데이터를 포함하며,
    상기 기입 요청의 수신에 응답하여, 상기 메모리 모듈은 메모리 내의 상기 제1 어드레스로부터 제1 데이터를 판독하고, 상기 수정 데이터를 이용하여 상기 제1 데이터를 갱신하고, 상기 갱신된 데이터를 상기 메모리 내의 상기 제2 어드레스에 저장하는
    컴퓨터 판독가능 저장 매체.
KR1020157020802A 2013-03-15 2013-03-15 확장 기입을 지원하는 메모리 모듈 제어기 KR20150132101A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/032414 WO2014143023A1 (en) 2013-03-15 2013-03-15 Memory module controller supporting extended writes

Publications (1)

Publication Number Publication Date
KR20150132101A true KR20150132101A (ko) 2015-11-25

Family

ID=51537374

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157020802A KR20150132101A (ko) 2013-03-15 2013-03-15 확장 기입을 지원하는 메모리 모듈 제어기

Country Status (5)

Country Link
US (1) US20150370655A1 (ko)
KR (1) KR20150132101A (ko)
CN (1) CN104937577B (ko)
TW (1) TWI606343B (ko)
WO (1) WO2014143023A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10978116B2 (en) 2017-10-02 2021-04-13 Micron Technology, Inc. Multiple concurrent modulation schemes in a memory system
US11381432B2 (en) 2017-10-02 2022-07-05 Micron Technology, Inc. Multiplexing distinct signals on a single pin of a memory device
US11397679B2 (en) 2017-10-02 2022-07-26 Micron Technology, Inc. Variable modulation scheme for memory device access or operation
US11403241B2 (en) 2017-10-02 2022-08-02 Micron Technology, Inc. Communicating data with stacked memory dies

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2531011A (en) * 2014-10-07 2016-04-13 Ibm Initializing I/O Devices
TWI596612B (zh) 2015-12-04 2017-08-21 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
CN106873901B (zh) * 2015-12-11 2020-02-07 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US10296250B2 (en) * 2016-06-08 2019-05-21 Intel Corporation Method and apparatus for improving performance of sequential logging in a storage device
CN111897751A (zh) * 2017-01-26 2020-11-06 华为技术有限公司 一种数据传输的方法、装置、设备和系统
US10387261B2 (en) * 2017-05-05 2019-08-20 Dell Products L.P. System and method to capture stored data following system crash
KR102398201B1 (ko) * 2017-06-30 2022-05-17 삼성전자주식회사 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치
US10490245B2 (en) 2017-10-02 2019-11-26 Micron Technology, Inc. Memory system that supports dual-mode modulation
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
KR102415218B1 (ko) * 2017-11-24 2022-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US11500570B2 (en) * 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
CN111240581B (zh) * 2018-11-29 2023-08-08 北京地平线机器人技术研发有限公司 存储器访问控制方法、装置和电子设备
US10901734B2 (en) 2019-03-01 2021-01-26 Micron Technology, Inc. Memory mapping using commands to transfer data and/or perform logic operations
KR102674032B1 (ko) * 2019-12-26 2024-06-12 삼성전자주식회사 리페어 동작을 수행하는 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
CN112667161B (zh) * 2020-12-25 2023-11-10 北京科银京成技术有限公司 文件系统的数据处理方法、装置、设备及介质
US11947839B2 (en) 2021-05-10 2024-04-02 Samsung Electronics Co., Ltd. Storage device, system, and method for customizable metadata
US11704246B2 (en) * 2021-07-29 2023-07-18 Macronix International Co., Ltd. Memory system for maintaining data consistency and operation method thereof
JP2023037883A (ja) * 2021-09-06 2023-03-16 キオクシア株式会社 情報処理装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732238A (en) * 1996-06-12 1998-03-24 Storage Computer Corporation Non-volatile cache for providing data integrity in operation with a volatile demand paging cache in a data storage system
US7130958B2 (en) * 2003-12-02 2006-10-31 Super Talent Electronics, Inc. Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes
JP3754288B2 (ja) * 1999-12-27 2006-03-08 三洋電機株式会社 制御装置
JP4037605B2 (ja) * 2000-12-04 2008-01-23 株式会社東芝 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
JP4058322B2 (ja) * 2002-10-07 2008-03-05 株式会社ルネサステクノロジ メモリカード
US7930589B2 (en) * 2005-06-17 2011-04-19 Analog Devices, Inc. Interrupt-responsive non-volatile memory system and method
US7650459B2 (en) * 2006-12-21 2010-01-19 Intel Corporation High speed interface for non-volatile memory
KR100850515B1 (ko) * 2007-01-24 2008-08-05 삼성전자주식회사 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
US8200914B2 (en) * 2008-01-03 2012-06-12 International Business Machines Corporation Apparatus, system, and method for a read-before-write storage controller instruction
US20090193189A1 (en) * 2008-01-30 2009-07-30 Formation, Inc. Block-based Storage System Having Recovery Memory to Prevent Loss of Data from Volatile Write Cache
US7979626B2 (en) * 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
JP2010015197A (ja) * 2008-06-30 2010-01-21 Toshiba Corp ストレージ制御装置、データ復元装置およびストレージシステム
KR20110039416A (ko) * 2008-07-22 2011-04-18 엘에스아이 코포레이션 인터럽트된 기록 복구를 위한 데이터 저장 방법, 장치 및 시스템
KR20100091379A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법
JP4660605B2 (ja) * 2009-05-28 2011-03-30 株式会社東芝 復号装置、復号方法及び磁気ディスク装置
JP4660612B2 (ja) * 2009-07-09 2011-03-30 株式会社東芝 情報再生装置及び情報再生方法
US8381059B2 (en) * 2010-02-17 2013-02-19 Micron Technology, Inc. Error correction and recovery in chained memory architectures
US20110296131A1 (en) * 2010-05-31 2011-12-01 Samsung Electronics Co., Ltd Nonvolatile memory system and the operation method thereof
US9047178B2 (en) * 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9251005B2 (en) * 2010-12-20 2016-02-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Power isolation for memory backup
US9053809B2 (en) * 2011-11-09 2015-06-09 Apple Inc. Data protection from write failures in nonvolatile memory
TWI480733B (zh) * 2012-03-29 2015-04-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US8788880B1 (en) * 2012-08-22 2014-07-22 Western Digital Technologies, Inc. Efficient retry mechanism for solid-state memory failures
US9400744B2 (en) * 2012-10-30 2016-07-26 Mangstor, Inc. Magnetic random access memory journal for multi-level cell flash memory

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10978116B2 (en) 2017-10-02 2021-04-13 Micron Technology, Inc. Multiple concurrent modulation schemes in a memory system
US11381432B2 (en) 2017-10-02 2022-07-05 Micron Technology, Inc. Multiplexing distinct signals on a single pin of a memory device
US11397679B2 (en) 2017-10-02 2022-07-26 Micron Technology, Inc. Variable modulation scheme for memory device access or operation
US11403241B2 (en) 2017-10-02 2022-08-02 Micron Technology, Inc. Communicating data with stacked memory dies
US11610613B2 (en) 2017-10-02 2023-03-21 Micron Technology, Inc. Multiple concurrent modulation schemes in a memory system
US11775460B2 (en) 2017-10-02 2023-10-03 Micron Technology, Inc. Communicating data with stacked memory dies
US11971820B2 (en) 2017-10-02 2024-04-30 Lodestar Licensing Group Llc Variable modulation scheme for memory device access or operation

Also Published As

Publication number Publication date
CN104937577B (zh) 2018-11-30
TWI606343B (zh) 2017-11-21
WO2014143023A1 (en) 2014-09-18
CN104937577A (zh) 2015-09-23
TW201502788A (zh) 2015-01-16
US20150370655A1 (en) 2015-12-24

Similar Documents

Publication Publication Date Title
KR20150132101A (ko) 확장 기입을 지원하는 메모리 모듈 제어기
US9632932B1 (en) Backup-power-free cache memory system
US20130212321A1 (en) Apparatus, System, and Method for Auto-Commit Memory Management
KR20180097441A (ko) 비차단 제어 업데이트 동작을 수행하도록 구성되는 데이터 저장 디바이스
US9262344B2 (en) Local locking in a bi-directional synchronous mirroring environment
KR20170021287A (ko) 비휘발성 데이터 저장장치 내부에서 원자적으로 복수의 기록 트랜잭션을 수행하는 장치 제어기 및 방법
CN111448543B (zh) 内存访问技术及计算机系统
US10445236B2 (en) Method to consistently store large amounts of data at very high speed in persistent memory systems
US9990150B2 (en) Method to provide transactional semantics for updates to data structures stored in a non-volatile memory
EP3230846A1 (en) Performing an atomic write operation across multiple storage devices
CN105677511B (zh) 一种降低同步开销的数据写入方法和装置
EP3155531A1 (en) Replicating data using remote direct memory access (rdma)
US9703701B2 (en) Address range transfer from first node to second node
CN104798059A (zh) 在检查点外部处理写入数据的多个计算机系统
US9645738B2 (en) Direct memory access of remote data
US10649829B2 (en) Tracking errors associated with memory access operations
US20190042152A1 (en) Atomic cross-media writes on a storage device
KR101750744B1 (ko) 쓰기 전 로깅 연산 장치 및 방법
US10776192B2 (en) Memory store error check
CN110134322B (zh) 运用dram的储存装置及其相关数据处理方法
CN111048141B (zh) 一种错误处理方法、装置、设备及计算机可读存储介质
KR20170042522A (ko) 비식별 요청을 처리하는 저장 장치 및 그것의 동작 방법
KR20170114991A (ko) 비휘발성 메모리를 이용한 로깅 방법
WO2018107460A1 (zh) 对象复制方法、装置及对象存储设备
JPS59129997A (ja) バツフアメモリ装置

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid