KR100647160B1 - 컨트롤러 프로그래밍에 의한 하드웨어에서의 데이터마스크 매핑 - Google Patents

컨트롤러 프로그래밍에 의한 하드웨어에서의 데이터마스크 매핑 Download PDF

Info

Publication number
KR100647160B1
KR100647160B1 KR1020047015015A KR20047015015A KR100647160B1 KR 100647160 B1 KR100647160 B1 KR 100647160B1 KR 1020047015015 A KR1020047015015 A KR 1020047015015A KR 20047015015 A KR20047015015 A KR 20047015015A KR 100647160 B1 KR100647160 B1 KR 100647160B1
Authority
KR
South Korea
Prior art keywords
data
memory
data mask
mask
mapping
Prior art date
Application number
KR1020047015015A
Other languages
English (en)
Other versions
KR20040106302A (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 인텔 코오퍼레이션
Publication of KR20040106302A publication Critical patent/KR20040106302A/ko
Application granted granted Critical
Publication of KR100647160B1 publication Critical patent/KR100647160B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Image Processing (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

메모리 컨트롤러가 데이터 마스크 매핑 방식으로 프로그래밍될 수 있다. 메모리 컨트롤러 내의 선택 디바이스가 데이터와 데이터 마스크간의 데이터 마스크 매핑 방식으로 설정될 수 있다. 일 실시예에서, 저장 디바이스가 포함되고 상기 데이터 마스크 매핑 방식으로 프로그래밍될 수 있다.
컴퓨터 메모리, 데이터 마스크, 데이터 마스크 매핑, 데이터 청크, 변환 로직(translation logic)

Description

컨트롤러 프로그래밍에 의한 하드웨어에서의 데이터 마스크 매핑{MAPPING DATA MASKS IN HARDWARE BY CONTROLLER PROGRAMMING}
본 발명은 일반적으로 컴퓨터 메모리 분야에 관한 것이다. 보다 구체적으로, 본 발명은 메모리 데이터 마스크 분야에 관한 것이다.
전형적인 컴퓨터 시스템은 메모리를 포함한다. 메모리는 프로그램 코드 및 그 프로그램 코드가 필요로 하는 데이터를 저장하는 데 이용된다. 메모리는 하나 또는 그 이상의 집적 회로 기판 상에 포함될 수 있다. 전형적으로, 메모리는 메모리 컨트롤러와 결합된다. 메모리 컨트롤러와 메모리는 핀 접속을 통하여 데이터 버스를 통하여 통신한다.
데이터 마스크는 선택된 데이터가 메모리에 겹쳐쓰기되는(overwritten) 것을 방지한다. 따라서, 메모리 컨트롤러는 데이터 마스크를 이용하여 특정 데이터를 마스크하여 메모리에의 부분 기입(partial writes)을 허용할 수 있다. 데이터 마스크 비트들은 데이터의 하나 또는 그 이상의 비트들과 관련될 수 있다. 관련 데이터 마스크는 특정 메모리 위치들에의 기입을 차단하고 다른 특정 메모리 위치들에의 기입은 허용한다. 메모리에의 기입이 수행될 때, 마스크되어 있는 메모리 내의 선택된 데이터는 메모리에 잔류하고, 마스크되지 않은 선택된 데이터는 새로운 데이터로 대체된다. 만일 메모리 컨트롤러가 데이터 마스크를 이용하지 않으면, 부분 메모리 기입은 훨씬 더 오래 걸릴 것이다. 예를 들면, 메모리 컨트롤러는 전체 메모리 영역을 판독하고, 그것에 새로운 데이터를 합병하고, 그런 다음 전체 메모리 영역에 다시 기입(writing back)함으로써 부분 기입에 근사하게 할 수 있다.
일반적으로, 메모리 칩들은 데이터 마스크 비트들 용도 및 데이터 용도로 별개의 핀들을 이용하여 메모리 데이터 마스크들을 구현한다. 이것은 핀 총수를 상당히 증가시킨다. 핀 총수의 증가는 비용, 패키지 사이즈, 및, 몇몇 경우, 다이 사이즈를 증가시킨다. 데이터 마스크 비트들 용도 및 데이터 용도로 별개의 핀들을 이용할 경우 이들 매핑으로 레지스터들을 프로그래밍하지 않아도 된다.
본 발명의 실시예들은 이 실시예들을 예시하는 이하의 설명 및 첨부 도면을 참조함으로써 가장 잘 이해될 수 있다. 본 발명의 실시예들 및 그 이점들에 대한 보다 완전한 이해를 위하여, 첨부 도면들과 관련한 이하의 설명을 참조하기로 한다.
도 1은 본 발명의 일 실시예에 따른, 컨트롤러를 포함하는 시스템 예를 예시한다.
도 2는 본 발명의 일 실시예에 따른, 변환 로직(translation logic) 실시예의 블록 개략도를 예시한다.
도 3은 본 발명의 일 실시예에 따른, 데이터 라인들 상에 데이터 마스크들이 통합된 기입 전송의 파형을 예시한다.
도 4는 본 발명의 일 실시예에 따른, 프로세서와 메모리간에 인터페이스를 제공하는 방법에 대한 흐름도를 예시한다.
도 5는 본 발명의 일 실시예에 따른, 데이터 청크 라인 상에 데이터 마스크 라인을 통합하는 변환 로직의 블록 개략도를 예시한다.
도 6은 본 발명의 일 실시예에 따른, 데이터 마스크들의 데이터 청크들로의 매핑을 변경하는 변환 로직의 블록 개략도를 예시한다.
도 7은 본 발명의 일 실시예에 따른, 메모리 컨트롤러가 그 자신을 프로그래밍하는 방법에 대한 흐름도를 예시한다.
도 8은 본 발명의 일 실시예에 따른, 데이터 청크들의 특정 예들을 마스크하는 데이터 마스크 비트들의 특정 값 예들에 대한 표 및 블록 개략도를 예시한다.
도 9는 본 발명의 일 실시예에 따른, 디바이스에 다수의 비트를 전송하기 위해 엘리먼트들을 선택하는 멀티플렉서들에 대한 2개의 회로 예를 예시한다.
도 10은 본 발명의 일 실시예에 따른, 데이터 마스크 비트들과 데이터 청크들 간의 매핑을 선택하는 멀티플렉서들을 포함하는 어레이를 예시한다.
도 11은 본 발명의 일 실시예에 따른, 메모리 모듈 내의 직렬 존재 검출 회로(SPD : serial presence detect circuit)로부터 데이터 마스크 매핑 정보를 획득하는 방법에 대한 흐름도를 예시한다.
도 12는 본 발명의 일 실시예에 따른, 메모리 모듈의 각 메모리 랭크의 데이터 마스크 매핑 방식을 결정하기 위한 방법에 대한 흐름도를 예시한다.
다음의 기재에서, 다수의 특정 상세함들이 본 발명의 실시예들의 철저한 이해를 제공하기 위해 기재된다. 그러나, 본 발명의 실시예들은 이러한 특정 상세함들이 없이 실시될 수 있음을 이해할 것이다. 다른 예들에서, 잘 알려진 회로들, 구조들, 및 기술들은 본 발명의 실시예들을 모호하게 하지 않기 위해 상세히 기재되지 않는다.
다양한 실시예들에서, 본 발명은 데이터 마스크 비트와 데이터 청크 간의 매핑을 메모리 컨트롤러에 포함시키기 위해, 레지스터와 같은, 프로그램 가능한 저장 디바이스를 포함할 수 있고, 여기서 데이터 청크는 임의의 정의된 양의 데이터이다.
도 1은, 본 발명의 일 실시예에 따라, 컨트롤러(102), 프로세서(104), 메모리(108), 및 데이터 마스크들이 통합된 한 개 이상의 데이터 라인들을 포함할 수 있는 메모리 버스(110)를 포함하는 시스템(100)의 예를 도시한다. 시스템(100)과 관련하여 기재되지만, 본 발명의 실시예들은 임의의 한 개 이상의 집적 회로들을 포함하는 임의의 시스템에서 구현될 수 있다.
컨트롤러(102)는, 예를 들어 I/O 컨트롤러 허브(I/O Controller Hub(ICH))(140) 및 펌웨어 허브(Firmware Hub(FWH))(170)를 또한 포함하는 칩셋(174)의 일부일 수 있다. 컨트롤러(102), ICH(140), 및 FWH(170)는 각각 임의의 적절한 회로를 포함할 수 있고, 일 실시예에서 분리된 집적 회로 칩들로서 구현된다. 다른 실시예를 위해 칩셋(174)은 임의의 적절한 한 개 이상의 집적 회로 디바이스들을 포함할 수 있다.
컨트롤러(102)는 임의의 적절한 컨트롤러 아키텍처를 포함할 수 있다. 다양한 실시예들에서, 시스템(100)은 한 개 이상의 컨트롤러들을 포함할 수 있고, 그들 중 임의의 것은 본 발명의 한 실시예에 따라 인터페이스를 제공할 수 있다. 컨트롤러(102)는 메모리 버스(110), 및/또는 컨트롤러(102)와 통신하는 임의의 적절한 디바이스 또는 컴포넌트로의 임의의 적절한 링크를 제공하는 임의의 적절한 인터페이스 컨트롤러들을 포함할 수 있다. 일 실시예를 위한 컨트롤러(102)는 각 인터페이스에 대해 적절한 조정(arbitration), 버퍼링, 및 일관성 관리를 제공할 수 있다.
컨트롤러(102)는 프로세서 버스(122)와 연결되어 프로세서 버스(122)를 통해 프로세서(104)에 인터페이스를 제공할 수 있다. 프로세서(104)는 임의의 적절한 프로세서 아키텍처를 포함할 수 있다. 다양한 실시예들에서, 컴퓨터 시스템(100)은 한 개 이상의 프로세서들(104)을 포함할 수 있고, 그들 중의 임의의 것은 본 발명의 일 실시예에 따른 명령 세트를 실행할 수 있다. 한 개 이상의 프로세서들(104)은 컨트롤러(102)와 한 개의 칩으로 결합될 수 있다.
일 실시예에서, 컨트롤러(102)는 ICH(140)와 연결되어 허브 인터페이스를 통해 ICH(140)에 액세스를 제공할 수 있다. ICH(140)는 컴퓨터 시스템(100)을 위한 한 개 이상의 I/O 디바이스들 또는 주변 컴포넌트들에 인터페이스를 제공할 수 있다. ICH(140)는 임의의 적절한 인터페이스 컨트롤러들을 포함해서 메모리 컨트롤러(102) 및/또는 ICH(140)와 통신하는 임의의 적절한 디바이스 또는 컴포넌트에 임의의 적절한 링크를 제공한다. 일 실시예를 위한 ICH(140)는 각 인터페이스에 대 해 적절한 조정 및 버퍼링을 제공한다.
일 실시예를 위한 ICH(140)는, 키보드(151), 마우스(152), 마이크로폰(156), 스타일러스(157), 한 개 이상의 병렬 포트들(153)을 통해, 예를 들어 프린터와 같은, 한 개 이상의 적절한 디바이스들, 한 개 이상의 직렬 포트들(154)을 통해 한 개 이상의 적절한 디바이스들, 및 플로피 디스크 드라이브(155)에, 슈퍼 I/O 컨트롤러(150)를 통해 인터페이스를 제공할 수 있다. 다른 실시예들은 보여진 것보다 더 많은, 더 적은, 또는 상이한 디바이스들 및 인터페이스들을 제공할 수 있다.
ICH(140)는 FWH(170)와 또한 연결되어 FWH(170)에 인터페이스를 제공할 수 있다. FWH(170)는 임의의 적절한 인터페이스 컨트롤러를 포함하여 ICH(140)에 임의의 적절한 통신 링크를 제공할 수 있다. 일 실시예를 위한 FWH(170)는 ICH(140)와 슈퍼 I/O 컨트롤러(150) 간의 인터페이스의 적어도 일부를 공유할 수 있다. FWH(170)는 기본 입/출력 시스템(BIOS) 메모리(172)를 포함하여 적절한 시스템 및/또는 비디오 바이오스(BIOS) 소프트웨어를 저장할 수 있다. BIOS 메모리(172)는, 예를 들어 플래시 메모리와 같은, 임의의 적절한 비휘발성 메모리를 포함할 수 있다. 다른 실시예들은 보여진 것보다 더 많은, 더 적은, 또는 상이한 디바이스들 및 인터페이스들을 제공할 수 있다.
컨트롤러(102)는 메모리(108)와도 연결되어 메모리에 인터페이스를 제공한다. 메모리(108)는, 예를 들어 컴퓨터 시스템(100)과 함께 사용하기 위해, 데이터 및/또는 코드를 저장할 수 있다. 메모리(108)는, 예를 들어 랜덤 액세스 메모리("RAM"), 또는 그것의 변형, 또는 순차적 메모리와 같은 임의의 적절한 메모리를 포함할 수 있다. 컨트롤러(102)는 메모리 버스(110)를 통해 메모리와 연결될 수 있다. 메모리 버스(110)는 데이터 라인들, 어드레스 라인들, 컨트롤 라인들, 또는 그런 라인들의 다양한 조합을 포함할 수 있는 버스를 포함할 수 있다. 데이터 버스 상에 통합된 데이터 마스크들은 전용 데이터 마스크 버스에 대한 필요를 없앨 수 있지만, 연결된 디바이스 상의 데이터 마스크 핀에 대한 필요를 반드시 없앨 수 있는 것은 아니다. 핀 상의 데이터 마스크 비트들 및 데이터 청크들의 조합은 필요한 버스 라인들의 수를 감소시킬 수 있을 것이다. 또한, 전송된 데이터 마스크 비트들을 전송된 데이터 청크들에 매핑하기 위해, 완전히 결합적(fully associative)이거나 그렇지 않은 데이터 마스크 맵이 구현될 수 있다.
일 실시예에서, 약정들(stipulations)은 더 간략한 데이터 마스크 맵 세트를 허용할 수 있다. 예를 들어, 특정 마스크 비트가 다른 주어진 데이터 비트에 매핑되지 않을 것이라는 것은 시스템에 대해 잘 알려진 규칙이다. 그러므로, 그 시스템의 데이터 마스크 맵 또는 데이터 마스크 맵 세트는 그 가능성을 제외해서 감소될 수 있다. 다른 예에서, 데이터 마스크 맵들은 일-대-일 대응이 데이터 무결성을 보존하기 위해 데이터 마스크와 데이터 청크 간에 존재한다는 약정을 포함할 수 있다. 데이터 마스크 맵 또는 데이터 마스크 맵 세트에 병합 가능한 다른 약정은, 사용된 임의의 데이터 마스크 맵은 컨트롤러와 타깃 (메모리) 모두에 의해 알려질 수 있다는 것이다. 보여진 바와 같이, 데이터 마스크 맵은 메모리 벤더에게로부터 부과된 제한들을 통해 단순화될 수 있지만, 본 발명의 일 실시예는 또한 메모리 벤더의 그런 제한들 없이 구현될 수 있다.
일 실시예에서, 컨트롤러(102)는 공통 영역(112)을 포함한다. 공통 영역(112)은 복수 소스들로부터 데이터가 연결하는 회로, 예를 들어 버퍼일 수 있다. 프로세서(104), ICH(140) 등과 같은 송신 디바이스들은 데이터 마스크 맵 또는 데이터 마스크 맵 세트에 따라 재포맷된 데이터를 필요로 할 수 있다. 프로세서(104)로부터 공통 영역(112)으로 송출된 정보는, 변환 로직(114) 및 프로세서 인터페이스(116)와 같은, 프로그램 가능한 매핑 로직을 요구할 수 있다. 변환 로직(118) 및 I/O 인터페이스(120)는 공통 영역(112)으로부터 ICH(140)에 또는 ICH(140)를 통해 송출되는 정보를 위한 변환 및 인터페이싱에 기여할 수 있다.
도 1의 도시된 실시예에서, 변환 로직(114) 및 변환 로직(118)은 시스템(100)에서 분리된 유닛들로서 도시된다. 변환 로직(114) 및 변환 로직(118)의 분리된 유닛들은 동일 유닛들 또는 상이한 유닛들일 수 있다. 다른 실시예에서, 변환 논리(114) 및 변환 논리(118)는 프로세서(104) 및 ICH(140) 모두에 연결된 단일 변환 유닛일 수 있다. 다른 실시예에서, 변환 로직(114) 및 변환 로직(118)은 또한 공통 영역(112) 내로 다중화(multiplex)되고 재매핑될 수 있다. 변환 로직(118)의 I/O 포맷은 변환 로직(114)의 CPU 포맷으로부터 상이할 수 있다. 변환 로직(114) 또는 변환 로직(118)의 공통 영역(112)으로의 출력은, DRAM 포맷 등과 같은, 동일한 메모리 포맷일 수 있다.
변환 로직(114) 및/또는 변환 로직(118)은, 도 2 및 도 4에 더 설명된 바와 같이, 데이터 마스크 맵 또는 데이터 마스크 맵 세트를 포함할 수 있다. 데이터 마스크 맵 또는 데이터 마스크 맵 세트는 메모리(108) 내의 데이터 마스크 맵 또는 데이터 마스크 맵 세트와 일치할 수 있다. 도 1의 설명된 실시예에서, 메모리(108)는, 예를 들어 SPD(106)와 같은 메모리의 SPD 영역에 저장될 수 있는, 데이터 맵(124)을 포함할 수 있다. 다른 실시예들에서, 매핑은 BIOS 또는 객체 코드에 저장될 수 있다. 컨트롤러(102)는 또한 상술된 컴포넌트들 보다 더 적은 또는 더 많은 컴포넌트들 및/또는 상이한 배치를 포함할 수 있다.
본 발명의 일 실시예는 하드웨어, 펌웨어, 및 소프트웨어 중의 하나 또는 조합으로 구현될 수 있다. 본 발명의 실시예는 또한, 본 명세서에서 기재된 동작들을 수행하기 위해 적어도 한 개의 프로세서에 의해 판독되고 실행될 수 있는 기계 판독가능 매체 상에 저장되는 명령들로서 구현될 수 있다. 기계 판독가능 매체는 기계(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장하거나 전송하기 위한 임의의 메카니즘을 포함할 수 있다. 예를 들어, 기계 판독가능 매체는 판독 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 자기 디스크 저장 매체들; 광 저장 매체들; 플래시 메모리 디바이스들; 전기, 광학, 음향, 또는 기타 형태의 전파되는 신호들(예를 들어, 반송파들(carrier waves), 적외선 신호들, 디지털 신호들 등), 및 기타를 포함할 수 있다. 일부 실시예들에서, 시스템(100)은 도 1에 도시된 것보다 더 많은 컴포넌트들을 포함할 수 있는 한편, 다른 것들에서는 더 적게 포함할 수 있다.
도 2는 본 발명의 일 실시예에 따른, 변환 로직(201)의 한 예에 대한 블록 개략도이다. 변환 로직(201)은, 변환 로직(114) 또는 변환 로직(118) 또는 변환 로직들 (114) 및 (118) 둘 모두 중의 어느 하나에 대한 실시예일 수 있다. 변환 로직(201)의 출력은 공통 영역(112)이 본 실시예에 포함되었는지의 여부에 좌우되어 공통 영역(112) 또는 메모리 버스(110)로 보내질 수 있다.
변환 로직(201)은 데이터 마스크에 대한 데이터의 맵과 데이터에 대한 데이터 마스크의 맵 중의 하나 또는 둘 모두를 포함할 수 있다. 이 정보는 프로그램가능 선택 디바이스(204)와 결합할 수 있는 매핑 레지스터(203) 또는 그외의 디바이스에 저장될 수 있는데, 이 선택 디바이스는 예를 들어 하나 또는 그 이상의 멀티플렉서들을 포함할 수 있다. 만일 이 데이터 마스크 맵 또는 데이터 마스크 맵 세트가 선택 디바이스(204)에 대한 하나 또는 그 이상의 입력들로서 하드와이어드(hardwired) 된다면, 매핑 레지스터(203)에 대한 필요는 전혀 없을 수 있다. 매핑 레지스터(203)는 가변 또는 프로그램가능 매핑을 위해 사용될 수 있고 메모리 컨트롤러(102) 내에 배치된 하나 또는 그 이상의 레지스터들로서 구현될 수 있다. 데이터의 데이터 마스크에 대한 맵 또는 데이터 마스크의 데이터에 대한 맵의 원 출처는, SPD(106) 또는 메모리 모듈의 그밖의 저장 영역, BIOS, 오브젝트 코드, 또는 그밖의 저장 영역이 될 수 있다. 또다른 실시예에서, 매핑 레지스터들(203)은, 예를 들어, 소거와 프로그램 가능 판독 전용 메모리(EPROM)과 같은 것의 내의 메모리(108)에 배치될 수 있어서 레지스터 매핑 등식을 포함한다. 본 실시예에서, 메모리(108)는 메모리 컨트롤러(102)를 수용하기 위해 프로그램될 수 있다.
선택 디바이스(204)는 또한 데이터 마스크 비트들 또는 데이터 비트들을 재순서화하기 위해 사용될 수 있다. 예를 들어, 선택 디바이스(204)는 매핑 레지스터(203)의 데이터 마스크 맵 또는 데이터 마스크 맵 세트를 사용할 수 있다. 일 실시예에서, 매핑 레지스터(203)의 출력은 선택 디바이스(204)와 결합될 수 있다. 이런 식으로, 디자인할 때, 데이터 마스크 매핑이 알려질 필요가 없다.
도 3은 본 발명의 일 실시예에 따라서, 데이터 마스크들이 데이터 라인들 상에서 통합되는 기입 전송의 파형을 예시하였다. 이는 동일 핀 상에서 보내지고 있는 데이터 청크(chunk) 또는 데이터 마스크의 한 예로서 사용될 수 있다. 동일 핀 상에서 보내지고 있는 데이터 청크 및 데이터 마스크를 예시하면서, 도 3은 또한 데이터 마스크 매핑과 n개의 청크로의 데이터의 분할을 예시하였다. 도 3의 예에서, 데이터 마스크 워드들이 전송될 수 있는 횟수는 s0 내지 sx로 표시되고, 데이터 워드들이 전송될 수 있는 횟수는 S0 내지 Sy로 표시된다. 워드는 기억 장치로부터 프로세서 레지스터로의 단일 동작에서 이동될 수 있는 데이터 단위를 의미할 수 있다. 데이터 마스크는 DM0 내지 DMx에 의해 대표되고, 데이터는 D0 내지 Dy에 의해 대표된다. 그에 따라, 도 3의 데이터 청크들은 C0 내지 Cn에 의해 대표된다. 데이터는 임의의 크기, 예를 들어, 단일 비트만큼 작을 수도 있고, 전달될 데이터의 전체 전송량만큼 클 수도 있는 크기를 갖는 청크들로 분할될 수 있다. 데이터 청크의 크기는 예를 들어 일 워드는, 시스템에 따라 좌우될 수 있다. 예를 들어, 64 비트 버스를 갖는 시스템에서, 데이터 마스크 워드들 및 데이터 워드들은 64 비트들로서 전송되도록 선택될 수 있다. 청크 크기는 데이터 마스킹이 구현될 수 있는 세분성(granularity)으로서 정의될 수 있다. 예를 들어, 일 데이터 마스크는 일 바이트(8비트)의 데이터를 마스크할 수 있다. 이 경우에, 일 청크는 일 바이트의 데이터이다. 이 실시예에서, 64 비트 데이터 워드는 각각의 청크가 일 바이트의 데이터이기 때문에 8 청크들로 구성될 수 있다. 몇몇 실시예에서, 데이터 마스크 비트들은 데이터 청크들을 마스크할 수 있다. 일 실시예에서, 데이터 청크들은 다른 디바이스들과 병렬로 접속될 수 있고 데이터 마스크들은 데이터 청크들을 수신하는 디바이스들을 마스크할 수 있다.
또한, 도 3은 데이터 마스크 맵의 한 예를 도시하였다. 데이터 마스크 비트들과 데이터 간의 매핑은 메모리 컨트롤러와 타깃(예로 메모리 디바이스)이 매핑에 있어서 일치하는 한, 임의의 오리엔테이션에 있을 수 있다. 도 3의 데이터 마스크 매핑 방식들은 데이터 마스크 비트들의 데이터로의 몇몇 매핑들의 예들로 소용될 수 있다.
데이터 마스크들은 기입 전송 동안에, 임의의 순서로 데이터와 함께 전송될 수 있다. 데이터를 전송하는 동일한 데이터 라인들 상에 데이터 마스크들이 삽입되기 때문에 데이터 마스크들과 데이터 청크들 간의 어떠한 특정 타이밍 관계도 필요하지 않을 수 있다. 예를 들어, 데이터 마스크들은 데이터 후에, 데이터 중에, 또는 데이터 후에 전송될 수 있다. 도 3에 도시된 대로, 데이터 전에 데이터 마스크들을 전송하는 것은, 매핑 로직이 수신된 데이터에 대해 작용하기 전에 메모리 디바이스가 매핑 로직을 구성하도록 허용한다. 만일 데이터 마스크들이 데이터 후에 전송된다면, 데이터가 버퍼 내에 저장되어서 데이터 마스크 정보를 기다려야만 하기 때문에 기입 폐기(write retirement)의 지연이 있을 수 있다.
요구될 수 있는 데이터 마스크 전송들의 수는 시스템에서 고정될 수도 있고, 구현되는 기술에 좌우될 수도 있다. 일 실시예에서, 데이터 마스크 전송들의 최대 수는 각각의 전송에서의 데이터 청크들의 수에 의해 나누어진 데이터 전송들의 수와 동등하다. 이 관계는 각각의 데이터 전송이 동일 수의 청크들을 포함한다는 점을 전제로 한다. 그러나, 몇몇 실시예들에서는, 이 전제는 필요하지 않을 수 있고, 또한 본 발명에 대한 제한이 되지도 않는다.
기입 전송에 있어서의 데이터 마스크 워드들의 수는 기입 전송에 있어서의 데이터 워드들의 수와 청크 크기에 좌우될 수 있다. 예를 들어, 만일 청크 크기가 1 바이트의 데이터이고 8 데이터 워드들이 기입 전송에 있어서 요구된다면, 워드들이 64 비트일 때 기입 전송에 있어서 전체로는 64 청크들이 있을 것이다. 일 데이터 마스크 비트가 일 청크를 마스크한다면, 64 데이터 마스크 비트들이 기입 전송에 대해 필요할 것이다. 몇몇 시스템에서는 64 데이터 마스크 비트들이 일 데이터 마스크 워드를 구성할 수 있기 때문에, 일 데이터 마스크 워드가 기입 전송을 위해 이런 시스템들에서 필요할 것이다. 상기 예에서, 기입 전송은 8 데이터 워드들(D0 내지 D8)과 1 데이터 마스크 워드(DM0)를 가질 것이다.
어떤 상황에서는 2 이상의 데이터 마스크 워드가 기입 전송에서 요구될 수 있다. 예를 들어, 만일 청크 사이즈가 2 비트이고 8 데이터 워드가 기입 전송에서 요구된다면, 워드들이 64 비트일 때 기입 전송에 있어서 전체로 256 청크들이 있을 것이다. 일 데이터 마스크 비트가 일 청크를 마스크한다면, 기입 전송에 대해서 256 데이터 마스크 비트들이 필요할 것이다. 만일 64 데이터 마스크 비트들이 본 실시예에서 일 데이터 마스크 워드를 구성한다면, 4 데이터 마스크 워드들이 기입 전송에 대해 필요할 것이다. 상기 예에서, 기입 전송은 8 데이터 워드들 및 4 데이터 마스크 워드들을 가질 것이다.
청크 사이즈가 2 비트인 이전 단락의 예에서, 워드 내의 데이터 청크들의 수는 32가 될 것이다. 따라서, 도 3에서, 데이터 청크들은 C0 내지 C31로 그 번호가 매겨질 것이다. 기입 전송에서의 4 데이터 마스크 워드들은 DM0 내지 DM3으로 번호가 매겨지고, 기입 전송에서의 8 데이터 워드들은 D0 내지 D7로 번호가 매겨질 것이다. 도 3에서, 예시적 데이터 마스크 매핑 방식을 이용하면, DM0의 사선 표시된 데이터 마스크 비트는 D0의 데이터 청크 Cn을 마스크한다. DM0의 바둑판 무늬로 된 데이터 마스크 비트는 D1의 C0을 마스크하고, DM1의 사선 교차된 데이터 마스크 비트는 D2의 C2를 마스크한다.
매핑 방식은 하나의 데이터 마스크 비트가 하나의 청크와 관련될 수 있는 것을 표시하는 일대일 관계를 갖는다. n 데이터 청크들에 매핑될 수 있는 n 데이터 마스크 비트들이 있을 수 있기 때문에, 전체 n2 개의 가능한 매핑 방식들이 도출될 것이다. 예를 들어, 만일 64 데이터 청크들을 갖는 8 데이터 워드 전송들이 64 데이터 마스크 비트들을 요구한다면, 4,096 개의 가능한 매핑 방식들이 존재할 수 있다. 동일한 칩 선택과 결합된 메모리의 하나 또는 그 이상의 블록들 중의 하나인 메모리 랭크는 자신의 매핑 방식을 가질 수 있고, 메모리 모듈은 하나 또는 그 이상의 메모리 랭크들을 가질 수 있다. 따라서, 하나 또는 그 이상의 매핑 방식들이 각각의 메모리 모듈 내에서 수정된 데이터 마스크 매핑을 실행하는 데에 요구될 수 있다.
도 4는 프로세서와 메모리 간의 인터페이스를 제공하는 컨트롤러를 위한 한 방법을 예시하는 흐름도(400)인데, 여기서, 데이터 및 데이터 마스크는 본 발명의 일 실시예에 따라서, 동일 핀을 사용하여 메모리에 통신한다. 블록(402)은 본 방법을 개시한다. 다음으로, 블록(404)에서, 컨트롤러는 프로세서로부터 또는 I/O로부터 데이터 및 데이터 마스크들을 수신할 수 있다. 프로세서 또는 I/O는 메모리용으로 포맷될 필요가 있는 포맷으로 컨트롤러에게 정보를 준다. 컨트롤러는 데이터 마스크들의 데이터로의 내부 매핑을 가질 수 있다. 따라서, 블록(406)에서, 컨트롤러는 데이터의 데이터 마스크들로의 매핑에 따라서, 데이터의 포맷을 변환할 수 있다. 일 실시예에서, 컨트롤러는, 데이터의 포맷을 데이터 마스크들이 통합된 데이터 라인으로 변환할 수 있다. 다음으로, 블록(408)에서 컨트롤러는 통합된 데이터 마스크들을 갖는 데이터 라인을 메모리에 기입할 수 있다. 최종적으로, 블록(410)에서, 컨트롤러는 이 방법을 종료할 수 있다. 메모리로부터 프로세서 또는 I/O로 데이터 및/또는 데이터 마스크들을 전송하기 위해, 역 처리(reverse process)는, 두개의 라인들로부터 데이터 및 데이터 마스크들로 된 하나의 라인으로의 변환이 아니라 하나의 통합된 라인으로부터 데이터 마스크 비트들 및 데이터 청크들로 된 두개의 라인들로의 변환을 수반한다.
도 5는 하나 또는 그 이상의 데이터 마스크 비트들로 된 데이터 마스크 스트림(504)을 하나 또는 그 이상의 데이터 청크들로 된 데이터 청크 스트림(506)과 통합시키기 위한 변환 로직(201)을 사용하는 블록 개략도를 예시하였는 데, 이는 본 발명의 실시예의 하나 또는 그 이상의 특징을 통합하고 있다. 도 5의 좌측에서, 데이터 마스크 스트림(504)과 데이터 청크 스트림(506)은 예를 들어 프로세서에 의해 동일한 공간적(spatial) 시간에서 전달될 수 있다. 변환 로직(201)은 메모리가 인식가능한 포맷으로 데이터 마스크 스트림(504) 및 데이터 청크 스트림(506)을 포맷할 수 있다. S0 내지 Sy는 시스템 클록들을 대표할 수 있다. 데이터 청크 스트림(506)은, 도 3과 같이, 하나 또는 그 이상의 청크들인 D0 내지 Dy로 분할된 데이터를 포함할 수 있다. 데이터 마스크 스트림(504)은 하나 또는 그 이상의 데이터 청크들 D0 내지 Dy와 연관된 하나 또는 그 이상의 데이터 마스크 비트들 M0 내지 My를 포함할 수 있다. 데이터 청크 스트림(506) 및 데이터 마스크 스트림(504)은 데이터 마스크 라인(510)과 데이터 청크 라인(512)과 같이, 다른 라인들을 통해서 변환 로직(201) 내로 공급될 수 있다.
도 5의 변환 로직(201)의 출력은 데이터 및 데이터 마스크 스트림(508), 통합된 연관 데이터 마스크들을 갖는 데이터 청크 스트림일 수 있다. 데이터 청크들 및 데이터 마스크들이 출력 데이터 라인(524) 상에서 전달되는 순서는 실시예들에 따라서 달라질 수 있다. 몇몇 실시예들에서, 데이터 청크들은 데이터가 도착하는 대로 데이터 마스크들에 기초하여 처리될 수 있기 때문에 데이터 마스크들을 먼저 보내는 것은 저장 비용을 줄일 수 있게 한다. 본 실시예에서는, 클록 s0-sx 동안 데이터 마스크들이 먼저 송신되고, 그런 다음 클록 S0-Sy 동안 데이터 청크들이 송신된다. 본 발명의 실시예는 컨트롤러(102)와 메모리(108) 사이에 하나 혹은 그 이상의 데이터 마스크 라인들에 대한 필요를 제거할 수 있기 때문에, 일 실시예에 있어서, 데이터는 데이터 및 데이터 마스크 스트림(508)에 의해 도시된 바와 같은 포맷으로 컨트롤러(102)와 메모리(108) 사이를 이동할 수 있다. 그러나, 컨트롤러(102)와 프로세서(104) 혹은 컨트롤러(102)와 ICH(140) 사이에, 데이터는 데이터 청크 라인(506)과 데이터 마스크 라인(504)의 조합으로 이동할 수 있다.
도 6은 본 발명의 하나 혹은 그 이상의 특징을 통합하여, 데이터 청크로의 데이터 마스크들의 매핑을 변화시키는 변환 로직(201)의 예의 개략적인 블록도를 도시한다. 변환 로직(201)에 대한 입력으로서 도시된 바와 같이, 데이터 마스크 DM0Cn-DM0C0는 시간 s0=S0인 동안 데이터 청크 D0Cn-D0C0와 연관되고, 데이터 마스크 DM1Cn-DM1C0는 시간 s1=S1인 동안 데이터 청크 D1Cn-D1C0와 연관되고, 데이터 마스크 DMxCn-DMxC0는 시간 sx=Sy인 동안 데이터 청크 DyCn-DyC0와 연관된다. 변환 로직(201)은 데이터 마스크와 데이터 청크 사이의 연관을 변화시킬 수 있다. 예시된 실시예에서, 변환 로직(201)은 클록 s0 동안 데이터 마스크 DM0Cn-DM0C0와 연관된 데이터 청크의 순서를 역전시킬 수 있다. 변환 로직(201)으로부터의 출력으로서 도시된 바와 같이, 데이터 마스크 DM0Cn-DM0C0는 시간 s0=S0인 동안 데이터 청크 D0C0-D0Cn과 연관되고, 데이터 마스크 DM1Cn-DM1C0는 시간 s1=S1인 동안 데이터 청크 D1Cn-D1C0와 연관되고, 데이터 마스크 DMxCn-DMxC0는 시간 sx=Sy인 동안 데이터 청크 DyCn-DyC0와 연관된다. 데이터 마스크 비트들과 데이터 청크들을 연관시키는 가능성은 많이 있다.
변환 로직은 멀티플렉서들 혹은 매핑을 매치하기 위한 정보를 재순서화하는 다른 방법을 포함할 수 있다. 그리하여, 데이터 마스크들은 정확하게 대응하는 데 이터 청크들이 메모리 내에서 겹쳐쓰기되는 것을 방지할 수 있고, 메모리 컨트롤러 내의 하드웨어는 데이터 청크로의 데이터 마스크의 매핑이 일단 결정되면 프로그래밍될 수 있다. 메모리 컨트롤러의 하드웨어 내에 매핑을 프로그래밍하는 일 실시예는 매핑 레지스터(203) 및 선택 디바이스(204)와 관련하여 도 2에서 설명한 바와 같이, 하드웨어를 프래그래밍하기 위해 레지스터를 이용할 수 있다.
도 7은 본 발명의 일 실시예에 따라, 메모리 컨트롤러가 그 자신을 프래그래밍하기 위한 방법의 흐름도를 도시한다. 블록 702에서, 데이터 마스크와 데이터 청크의 알려진 매핑이 매핑 레지스터(203)에 삽입될 수 있다. 하나 이상의 매핑 레지스터들이 이 방법에 통합될 수 있다. 이 값들은 소프트웨어 혹은 BIOS와 같은 펌웨어를 통해 하드웨어에 의해 삽입될 수 있다. 일 실시예에 있어서, 블록 704에서, 매핑 레지스터(203)는 데이터 마스크 맵 혹은 데이터 마스크 맵 세트에 따라, 데이터 청크 혹은 데이터 마스크의 순서를 조작하기 위해 선택 디바이스(204)에 접속할 수 있다. 블록 702에서, 알려진 데이터 마스크 맵 혹은 데이터 마스크 맵 세트는, 정확하게 대응하는 데이터 청크가 메모리 내에서 겹쳐쓰기되는 것을 방지하는 방식으로, 데이터 마스크를 데이터 청크에 매핑하는 메모리(108)와 통신을 유지하기 위해, 매핑 값들로 회로 등에 프로그램될 수 있다.
도 8은 본 발명의 일 실시예에 따라, 특정한 예의 데이터 청크를 마스크하는 데이터 마스크 비트들의 특정한 예의 값의 표 및 블록을 개략적으로 도시하고, 어느 것의 데이터 마스크 맵 혹은 데이터 마스크 맵 세트가 메모리 컨트롤러에 프로그램될 수 있는지를 도시한다. 컬럼(802)은 컴퓨터 시스템에 의해 이용될 수 있는 데이터를 포함하는 반면에, 컬럼(804)은 선택된 데이터가 메모리를 겹쳐쓰기하는 것을 방지하기 위한 데이터 마스크를 포함한다. 본 예에서, 각각의 데이터 마스크 비트는 두개의 영숫자(alphanumeric) 데이터 혹은 한 바이트를 마스크한다. 데이터에 대한 데이터 마스크 비트들의 다른 할당들이 이용될 수도 있다. 로우(808), 컬럼(804)에서, 데이터 마스크 비트들 중 최하위 4 비트들은 이진수로 "1010"인 "A"일 수 있는데, 이것은 데이터 마스크 비트들이 데이터 청크들 "DE"와 "BE"에 대해 어써트됨을 의미한다. 로우(810), 컬럼(804)에서, 데이터 마스크 비트들은 "1" 혹은 "0001"인데, 이것은 데이터 청크 "CE"를 마스크한다. 로우(812), 컬럼(804)에서, 데이터 마스크 비트들은 "3" 혹은 "0011"인데, 이것은 데이터 청크 "45"와 "67"을 마스크한다. 로우(814), 컬럼(804)에서, 데이터 마스크 비트들은 "2" 혹은 "0010"인데, 이것은 데이터 청크 "CD"를 마스크한다. 로우(816), 컬럼(804)에서, 데이터 마스크 비트들은 "6" 혹은 "0110"인데, 이것은 데이터 청크 "46"와 "8A"를 마스크한다. 로우(818), 컬럼(804)에서, 데이터 마스크 비트들은 "F" 혹은 "1111"인데, 이것은 데이터 청크 "13", "57", "9B", 및 "DF"를 마스크한다. 로우(820), 컬럼(804)에서, 데이터 마스크 비트들은 "0"인데, 이것은 데이터 청크가 마스크되지 않음을 의미한다. 로우(820), 컬럼(804)에서, 데이터 마스크 비트들은 "4" 혹은 "0100"인데, 이것은 데이터 청크 "AA"를 마스크한다.
본 예에서, 데이터 전송은 4 바이트 길이이고, 데이터 청크는 1 바이트 길이이다. 데이터 청크의 사이즈와 선택된 데이터 엘리먼트들 및 라인들의 순서는 변화할 수 있고, 동일 라인 혹은 라인들 상에 데이터 청크들 및 그들 각각의 데이터 마스크들이 통합되어 전송되는 목적을 여전히 달성한다. 이 라인들은 메모리 컨트롤러로부터 메모리에 전송될 준비가 될 수 있는 값들을 전송한다. 라인(824) 상에서, 데이터 엘리먼트들 및 데이터 마스크들이 동일한 라인으로 송신된다. 이 예에서 송신된 데이터 엘리먼트들은 로우(806-822), 컬럼(802)로부터의 각각의 데이터 청크의 제1 바이트이다. 그러나, 라인(824) 상에 처음 송신된 것은 데이터 마스크 비트들(832)이다. 선택된 데이터 마스크 비트들 대 데이터 청크들의 순서도 역시 변화할 수 있고 여전히 본 발명의 목적을 달성하지만, 편의상, 한가지 옵션이 이 도면에 도시되도록 선택되었다. 라인(824) 상에 송신된 마스크 비트들은 16진수로 "21"이고 이진수로 "00100001"이다. 디바이스 D2, D1, 및 D0에 대한 나머지 세개의 라인들(826, 828, 830) 상에는, 각각, 컬럼(802)으로부터 제2, 제3, 및 제4 바이트 데이터가 송신된다. 그들 각각의 데이터 마스크 비트들(834, 836, 838)은 본 실시예에서 "B0", "3D", 및 "26", 혹은 "10110000", "00111101" 및 "00100110"이다. 전송된 상기 마스크 비트들은 로우(808-822), 컬럼(802, 804)로 지시된 바와 같이, 바이트 값 "13", "DE", "AA", "57", "46", "9B", "8A", "CD", "45", "BE", "DF", "67", 및 "CE"를 마스크하는 것에 대응할 수 있다.
데이터 라인(824, 826, 828, 830)은, 도 1의 메모리 버스(110)와 같은, 메모리 접속의 실시예에 이용될 수 있다. 메모리 버스(110)의 가능한 실시예는 하나 혹은 그 이상의 멀티플렉서들로 된 회로를 포함할 수 있는데, 멀티플렉서들의 출력은 출력 디바이스마다 일 비트와 연결될 수 있다. 도 9는 본 발명의 일 실시예에 따라, 다수의 비트들을 디바이스에 전송하기 위해 엘리먼트들을 선택하기 위한 멀 티플렉서 회로의 두가지 예들을 도시한다. 회로(900)는 도 8의 디바이스(D0)의 비트 0에 대응하는 라인 D0.0을 통해 디바이스 0에 비트 0을 출력하는 회로를 도시한다. 본 실시예에서, 총 32비트의 데이터 마스크 비트들이 있지만, 다른 실시예들에서, 그 숫자는 변화할 수 있다. 데이터 마스크 비트 0 내지 31은 멀티플렉서(902)에 연결된다. 멀티플렉서 선택(904)은 데이터 청크에 대한 데이터 마스크 비트들의 매핑에 기초하여 어느 데이터 마스크 비트가 송신되는 것이 적당할지를 지시할 수 있다. 본 실시예에서, 멀티플렉서 선택(904)은 디바이스 D0, 비트 0에 대한 데이터 마스크 비트와 데이터 청크 사이의 매핑에 대응하고, 16진수로 00 혹은 이진수로 00000000이다. 멀티플렉서 선택(904)은 그 값을 지시하기 위해 하드와이어될 수 있다. 일 실시예에서, 이진수 제로는 접지에 연결될 수 있고, 이진수 일은 매핑을 하드와이어하기 위해 전력에 접속될 수 있다. 다른 실시예에 있어서, 멀티플렉서 선택(904)은 도 2의 매핑 레지스터(203)와 같은 레지스터에 접속될 수 있다.
랭크 멀티플렉서(906)는 데이터가 기록될 메모리 랭크를 선택할 수 있다. 매핑이 임의의 메모리 랭크들 가운데서 동등하다면, 메모리 랭크도 역시 회로 내에서 요구될 수 있는 선택 개수들을 감소시킬 수 있다. 멀티플렉서(908)는 데이터 청크 혹은 데이터 마스크 비트가 라인 D0.0 상으로 전송될 수 있는지를 제어할 수 있다. 멀티플렉서(908)에 대한 하나의 데이터 입력은 데이터 입력(910)일 수 있다. 전송될 데이터 청크, 데이터 마스크, 랭크 등을 선택하기 위한 많은 다른 실시예들이 존재한다. 타겟 데이터 출력이 라인 D0.1 상의 디바이스 D0, 비트 1에 연결된다는 점을 제외하고, 회로(901)는 회로(900)와 유사하며, 멀티플렉서(912, 916, 918) 및 라인(914, 920)은 멀티플렉서(902, 906, 908) 및 라인(904, 910)에 각각 대응한다. 회로(900, 910) 및 추가의 디바이스 비트들에 대한 옵션의 추가적인 회로들을 포함하는 회로는, 도 10에서 더 설명되는 바와 같이, 일련의 멀티플렉서가, 적어도 하나의 데이터 마스크 비트와 적어도 하나의 데이터 청크를 동일한 라인 상에 로드하여 메모리에 공급할 수 있도록 해 줄 수 있다.
도 10은 본 발명의 실시예에 따라 데이터 마스크와 데이터 청크 사이의 매핑을 선택하기 위한 멀티플렉서들을 포함하는 어레이(1000)를 도시한다. 일 실시예에서, 이 멀티플렉서들은 컨트롤러(102) 내에 위치한다. 입력은 데이터 마스크 비트이고, 출력은 적용가능한 데이터 마스크 맵에 따라 입력 데이터 마스크 비트들 중에서 선택된 데이터 마스크 비트들일 수 있다. 표기 dmr[N]은 선택된 출력 데이터 마스크 비트이고, r은 랭크를 지시할 수 있고, N은 데이터 마스크 내의 어느 비트인지를 지시할 수 있다. 각각의 메모리 랭크가 상이한 매핑을 가질 수 있고, 상이한 어레이에 의해 제어될 수 있기 때문에, 도 10은 다수의 멀티플렉서 어레이들을 도시한다. 각각의 랭크가 동일한 매핑을 가진다면, N:1 멀티플렉서들의 개수는 메모리 랭크들의 전체 개수보다 적을 수 있다. N:1 멀티플렉서를 갖는 각각의 비트 대신에, N:1의 출력을 갖는 하나의 멀티플렉서와, 액세스하기 위한 랭크를 선택하기 위한 추가의 r:1 멀티플렉서면 충분할 수 있다. 도 10에 도시되지는 않았지만, 데이터 마스크 비트들의 데이터 청크로의 매핑은 어느 메모리 위치가 의도될 수 있는지를 추정할 수도 혹은 아닐 수도 있다. 일 실시예에 있어서, 매핑은 메모리 위치를 추정하지 않고, 또 다른 칩이 그 디바이스에 대한 데이터 청크 및 맵 위치를 수신할 수 있다. 다른 칩이 이용된다면, 메모리 위치 방식(memory location scheme)을 수용하기 위해 구현된 맞춤 규칙(tailored rules) 혹은 다른 지식-기반 입력들을 이용하여, 매핑, 저장, 및/또는 생성 로직이 최소화될 수 있다.
전술한 실시예에서, 도 9 및 도 10의 회로에서는, 메모리 컨트롤러가 멀티플렉서 선택 접속을 통해 데이터 마스크 맵 또는 데이터 마스크 맵 세트로 프로그래밍될 수 있음을 나타내었다. 메모리 컨트롤러 순서화(ordering)를 프로그래밍하는 일 실시예에서는, 멀티플렉서 선택(904) 또는 멀티플렉서 선택(914)과 같은 멀티플렉서 선택들을 접지 및/또는 전원에 하드와이어링할 수도 있다. 데이터 마스크 맵 또는 데이터 마스크 맵 세트로 메모리 컨트롤러를 프로그래밍하는 다른 실시예에서는, 메모리 내의 위치로부터 데이터 마스크 맵 데이터를 검색하고, 데이터 마스크 맵 또는 데이터 마스크 맵 세트를 생성하기 위해 소프트웨어 알고리즘을 이용할 수도 있다.
도 11은 본 발명의 실시예에 따른, 메모리 모듈 내의 SPD(106)로부터 데이터 마스크 매핑 정보를 얻기 위한 방법의 흐름도를 나타낸다. SPD(106)는, BIOS에 대한 동기적인 동적 랜덤 액세스 메모리 모듈 상의 전기적으로 소거가능한 프로그램가능 판독 전용 메모리 칩에 저장된 정보를 포함하여서 이러한 정보를 모듈의 크기, 데이터 폭, 속도, 및 전압으로서 검색할 수 있다. BIOS는 최대한의 신뢰성 및 성능을 위해 적절하게 메모리를 구성하기 위해 이 정보를 사용하기 때문에, BIOS는 또한, 메모리 컨트롤러를 프로그래밍하기 위해 SPD(106)에 저장된 데이터 마스크 맵 또는 데이터 마스크 맵 세트로부터 이득을 얻을 수 있다. 이 실시예에서의 SPD(106)는, 도 1의 데이터 맵(124)과 같은 메모리 영역 내에 데이터 마스크 맵 또는 데이터 마스크 맵 세트를 유지하기 위한 저장 영역을 포함할 수 있다.
도 11의 방법(1100)은, 처리 블록 1102에서, 하나 이상의 메모리 모듈 내의 SPD(106)로부터 데이터 마스크 매핑 정보를 얻는 것으로 개시될 수 있다. 시스템 내의 각 메모리 모듈은 하나 이상의 메모리 랭크를 포함하고 각 메모리 랭크는 서로 다른 데이터 마스크 매핑 방식을 가질 수 있다.
모듈의 메모리 랭크의 데이터 마스크 매핑 방식은, 처리 블록 1104에서 데이터 마스크 매핑 정보로부터 결정될 수 있다. 일 실시예에서, 데이터 마스크 매핑 정보는 각 메모리 랭크의 데이터 마스크 매핑 방식일 수 있다. 다른 실시예에서, 메모리 모듈로부터 얻어진 데이터 마스크 매핑 정보는 각 메모리 모듈의 매핑 방식의 표시자를 포함할 수 있다. 매핑 방식의 표시자는, "Vendor A"와 같은 단어, 혹은 "4865"와 같은 숫자일 수 있다. 이 단어 또는 숫자는 메모리 모듈의 매핑 방식과 연관될 수 있으며, 따라서 각 표시자가 수신될 때 이는 메모리 모듈의 각 메모리 랭크의 데이터 마스크 매핑 방식을 가리킬 수 있다. 예를 들면, "Vendor A"를 수신하는 것은, 메모리 모듈의 메모리의 하나의 랭크가 매핑 방식 X를 가지며, 이와 동일한 메모리 모듈의 다른 메모리 랭크가 매핑 방식 Y를 가지며, 이와 동일한 메모리 모듈의 다른 메모리 랭크가 매핑 방식 Z를 가지고 있음을 가리킬 수 있다.
데이터 마스크 매핑 방식이 얻어진 후, 메모리 컨트롤러는 매핑 방식으로 프 로그래밍될 수 있다. SPD(106)로부터 데이터 마스크 매핑 정보를 얻음으로써, 자신들의 테스트 방법 또는 레이아웃 제약을 완화시킬 수 있는 자신들 소유의 매핑을 정의하는 유연성을 메모리 벤더에게 제공할 수 있다. 메모리 제조자는 SPD(106) 내에서 명백한 메모리 매핑 정보를 배제시켜서, 대신에 벤더의 SPD 정보에 대응하는 발행된 맵에 의존하게 한다.
하드와이어링 및 메모리 위치 검색 외에도, 데이터 마스크 맵 또는 데이터 마스크 맵 세트로 메모리 컨트롤러를 프로그래밍하기 위한 다른 실시예에서는, 메모리 벤더의 메모리 특성을 조사하기 위해 소프트웨어 알고리즘을 이용함으로써 데이터 마스크 맵 또는 데이터 마스크 맵 세트를 추론(deduce)할 수도 있다. 도 12는 본 발명의 일 실시예에 따라 메모리 모듈의 각 메모리 랭크의 데이터 마스크 맵을 결정하는 방법의 흐름도이다. 데이터 마스크 맵 또는 데이터 마스크 맵 세트를 결정하기 위한 방법들마다 서로 다른 실시예들이 존재하며, 따라서 이하의 실시예는 하나의 방법의 예를 나타낸 것이다. 각 메모리 모듈은 하나 이상의 메모리 랭크를 포함하며, 각 메모리 랭크는 서로 다른 데이터 마스크 맵 또는 데이터 마스크 맵 세트를 가질 수 있으며, 이에 따라 각 메모리 모듈의 각 메모리 랭크는 데이터 마스크 맵 또는 데이터 마스크 맵 세트를 결정하기 위해 검사될 필요가 있을 수 있다.
도 12의 방법(1200)은 처리 블록 1202에서 메모리 모듈의 제1 메모리 랭크를 선택하는 것으로 개시된다. 모든 데이터 마스크 비트는 처리 블록 1204에서 어써트되며, 제1 기록 전송은, 처리 블록 1206에서 선택된 메모리 랭크의 메모리 구역을 제1 알려진 데이터 패턴으로 채우도록 수행될 수 있다. 예를 들면, 최대 데이터 전송 크기의 폭일 수 있는 기록 전송은 모두 1의 데이터 패턴으로 수행될 수 있으며, 어써트된 데이터 마스크 비트가, 그 연관된 데이터 청크가 마스크되지 않을 수 있음을 나타내기 때문에, 그 메모리 구역은 1의 패턴으로 채워질 수 있다. 약정에 따라, 때때로 디어써트(deassert)된 데이터 마스크 비트가, 그 관련 데이터 청크가 마스크될 수 있음을 나타낼 수 있다. 이 알고리즘은 어느 쪽의 약정이든 채택할 수 있으며, 본 실시예에서, 어써트된 데이터 마스크 비트는 그 연관된 데이터 청크가 마스크되지 않을 수 있음을 나타낼 수 있고, 디어써트된 데이터 마스크 비트는 그 연관된 데이터 청크가 마스크될 수 있음을 나타낼 수 있다.
어써트될 수 있는 하나의 데이터 마스크 비트를 포함하는 테스트 데이터 마스크 패턴은 처리 블록 1208에서 기록될 수 있다. 제2 기록 전송은, 처리 블록 1210에서 선택된 메모리 랭크의 메모리 구역을 제2 알려진 데이터 패턴으로 채우도록 수행될 수 있다. 예를 들면, 최대 데이터 전송 크기의 폭일 수 있는 기록 전송은 모두 0의 데이터 패턴으로 수행될 수 있으며, 하나의 데이터 마스크 비트가 어써트될 수 있기 때문에 그 메모리 구역의 데이터의 하나의 청크가 0의 패턴으로 채워질 수 있고 나머지 청크들이 마스크될 것이며, 이에 따라 1이 남게 될 것이다. 전술한 예에서, 0의 알려진 패턴은 "태그"로 기능하여서 그 메모리 구역 내의 변경된 청크를 식별하게 된다. 일 실시예에서, 제2 테스트 데이터 패턴이 처리 블록 1210에서 기록될 수 있다.
"태그"는, 어써트된 데이터 마스크 비트가 연관될 수 있는 데이터 청크를 식별하는 데에 이용될 수 있다. 데이터의 변경된 청크는 몇몇 방식으로 식별될 수 있으며 이하에 일 실시예의 예를 나타낸다. 메모리 구역 내의 데이터의 판독 요구가 블록 1211에서 수행될 수 있다. 데이터 패턴 내의 변경된 청크의 위치는, 판독된 데이터의 청크들을 처리 블록 1206에서 기록된 제1 알려진 데이터 패턴의 청크들과 비교함으로써 결정될 수 있으며, 이전의 예에서 모두 1의 패턴이 기록되었다. 불일치가 발생하면, 변경된 청크의 위치가 식별될 수 있다.
판독된 데이터의 청크들을, 처리 블록 1206에서 기록된 제1 알려진 데이터 패턴의 청크들과 비교하도록 선택된 방법은 사용되는 데이터 패턴에 따라 달라진다. 그 중 하나의 방법은, 판독된 데이터를, 처리 블록 1206에서 기록된 제1 알려진 데이터 패턴과 XOR 연산을 하는 것일 수 있다. 청크가 처리 블록 1208에서 사용된 "태그"(이전의 예에서는 "태그"가 모두 0이었음)와 일치할 때까지 XOR 연산의 결과를 청크 크기만큼 논리적으로 시프트시킨다. 수행된 논리적 시프트의 수는 변경된 청크의 위치를 가리킨다.
변경된 청크의 위치가 식별되었으면, 처리 블록 1208에서 선택된 데이터 마스크 비트의 매핑이 알려질 수 있다. 예를 들면, 선택된 데이터 마스크 비트가 처리 블록 1208에서 사용된 데이터 마스크 비트 패턴의 제1 데이터 마스크 비트이고, 변경된 청크가 판독된 데이터의 제5 청크일 경우, 제1 데이터 마스크 비트는 제5 데이터 청크로 마스크한다. 처리 블록 1208에서 선택된 데이터 마스크 비트의 매핑은 처리 블록 1210에서 기록될 수 있다. 그 밖의 다른 데이터 마스크 비트들의 매핑은, 블록 1214에서 결정된 바와 같이 마지막 데이터 청크가 사용될 때까지 블 록 1204-1216을 통한 루핑에 의해 유사한 방식으로 결정될 수 있다. 그 후 블록들(1218, 1220)은 나머지 랭크들을 위한 처리를 반복하는 데에 사용될 수 있다. 마지막 랭크가 블록 1218에서 결정된 바와 같인 처리되었으면, 처리는 블록 1222에서 종료할 수 있다. 이에 따라 결정된 매핑 방식은 전술한 바와 같이 컨트롤러(102) 내에 저장될 수 있다.
전술한 설명은 모든 관점에서 오직 예시용으로만 고려되며 본 발명의 실시예들의 범주를 제한하는 것으로 고려되어서는 안된다. 본 기술 분야에 통상의 지식을 가진 자라면 여러 다양한 변경을 실시할 수 있을 것이다. 본 발명은, 본 발명의 정신 또는 중심적인 특징으로부터 벗어나지 않고 그 밖의 다른 특정 형태들로 구현될 수 있다. 특허청구범위의 등가물의 의미 및 범위 내에 해당하는 모든 변경들은 본 발명의 범주 내에 포함된다. 본 발명의 여러 변경들은, 첨부된 특허청구범위의 정신 및 범주에 의해서만 제한되는 본 발명의 실시예들에 포함되는 것이다.

Claims (28)

  1. 데이터 마스크 매핑 방식을 내장하고 메모리에 결합될 수 있는 프로그램 가능 매핑 로직(programmable mapping logic) 회로와;
    상기 프로그램 가능 매핑 로직 회로에 결합되어, 데이터 청크와 데이터 마스크 비트간의 데이터 마스크 맵을 표시하는 저장 디바이스(storage device)
    를 포함하고,
    데이터 마스크 비트가 기입 동작 중에 해당 데이터 청크의 변경을 방지하는 장치.
  2. 제1항에 있어서, 상기 프로그램 가능 매핑 로직 회로는 상기 저장 디바이스에 결합된 변환 유닛(translation unit)을 포함하는 장치.
  3. 제1항에 있어서, 상기 프로그램 가능 매핑 로직 회로는 상기 저장 디바이스에 결합된 프로그램 가능 선택 디바이스를 포함하고, 상기 프로그램 가능 선택 디바이스는 상기 데이터 마스크 맵으로 프로그래밍되게 되어 있는 장치.
  4. 제3항에 있어서, 상기 프로그램 가능 선택 디바이스는 하나 이상의 멀티플렉서를 포함하는 장치.
  5. 제1항에 있어서, 상기 데이터 마스크 매핑 방식은 데이터 청크와 데이터 마스크 비트간의 일대일 연관(association)을 포함하는 장치.
  6. 제5항에 있어서, 상기 데이터 청크는 상기 데이터 마스크 비트에 매핑되게 되어 있는 장치.
  7. 제5항에 있어서, 상기 데이터 마스크 비트는 상기 데이터 청크에 매핑되게 되어 있는 장치.
  8. 값을 판독하는 단계와;
    상기 값에 응답하여, 데이터 마스크 비트를 데이터 청크에 매핑하도록 메모리 컨트롤러를 프로그래밍하는 단계
    를 포함하고,
    상기 데이터 마스크 비트에 의해 상기 메모리 컨트롤러는 상기 데이터 청크가 기입 동작 중에 변경되는 것을 방지하는 방법.
  9. 제8항에 있어서, 상기 메모리 컨트롤러를 프로그래밍하는 단계는 상기 메모리 컨트롤러 내의 변환 유닛을 프로그래밍하는 단계를 포함하는 방법.
  10. 제8항에 있어서, 상기 메모리 컨트롤러를 프로그래밍하는 단계는 상기 메모리 컨트롤러 내의 저장 디바이스를 로딩하는 단계를 포함하는 방법.
  11. 제8항에 있어서, 상기 메모리 컨트롤러를 프로그래밍하는 단계는 상기 데이터 마스크 비트와 상기 데이터 청크의 일대일 연관을 상기 메모리 컨트롤러에 로딩 하는 단계를 포함하는 방법.
  12. 기계에 의해 실행될 때 그 기계로 하여금,
    값을 판독하는 동작과;
    상기 값에 응답하여, 데이터 마스크를 데이터 청크에 매핑하도록 메모리 컨트롤러를 프로그래밍하는 동작
    을 수행하게 하는 명령들을 제공하는 기계 판독 가능 매체.
  13. 제12항에 있어서, 상기 메모리 컨트롤러를 프로그래밍하는 동작은 상기 메모리 컨트롤러 내의 변환 유닛을 프로그래밍하는 동작을 포함하는 기계 판독 가능 매체.
  14. 제12항에 있어서, 상기 메모리 컨트롤러를 프로그래밍하는 동작은 상기 메모리 컨트롤러 내의 저장 디바이스를 로딩하는 동작을 포함하는 기계 판독 가능 매체.
  15. 제12항에 있어서, 상기 메모리 컨트롤러를 프로그래밍하는 동작은 상기 데이터 마스크 비트와 상기 데이터 청크의 일대일 연관을 상기 메모리 컨트롤러에 로딩하는 동작을 포함하는 기계 판독 가능 매체.
  16. 프로세서와;
    상기 프로세서에 결합되어, 적어도 하나의 메모리 데이터 마스크 매핑 방식으로 프로그래밍되는 메모리 컨트롤러 - 상기 메모리 컨트롤러는 메모리 모듈에 결합될 수 있게 되어 있음 -
    를 포함하고,
    상기 메모리 컨트롤러는, 상기 적어도 하나의 메모리 데이터 마스크 매핑 방식에 따라, 상기 메모리 모듈에 기입된 데이터를 마스킹하는 시스템.
  17. 제16항에 있어서, 상기 메모리 컨트롤러는 상기 적어도 하나의 메모리 데이터 마스크 매핑 방식 중 하나를 선택하는 하나 이상의 멀티플렉서를 포함하는 시스템.
  18. 제17항에 있어서, 상기 하나 이상의 멀티플렉서 중 하나 이상이 완전히 결합적(fully associative)인 시스템.
  19. 제16항에 있어서, 상기 메모리 모듈은 상기 적어도 하나의 데이터 마스크 매핑 방식 중 적어도 하나를 이용하는 제1 및 제2 메모리 랭크를 포함하는 시스템.
  20. 제19항에 있어서, 상기 제1 메모리 랭크는 상기 제2 메모리 랭크와 상이한 데이터 마스크 매핑 방식을 이용하게 되어 있는 시스템.
  21. 제19항에 있어서, 상기 제1 메모리 랭크는 상기 제2 메모리 랭크와 동일한 데이터 마스크 매핑 방식을 이용하게 되어 있는 시스템.
  22. 제17항에 있어서, 상기 메모리 모듈은 하나 이상의 메모리 랭크를 포함하고, 상기 시스템은 상기 하나 이상의 멀티플렉서와는 별도로 랭크 멀티플렉서 입력들을 선택하는 랭크 멀티플렉서를 더 포함하는 시스템.
  23. 복수의 데이터 마스크 비트를 저장하는 제1 저장 위치와;
    데이터 마스크 비트의 매핑을 메모리에서의 데이터 비트에 저장하는 제2 저장 위치와;
    메모리에서의 상기 데이터에 데이터를 기입하는 메모리 제어 로직 회로
    를 포함하고,
    상기 매핑에 의해 데이터 마스크 비트에 매핑되는 메모리에서의 데이터의 값이 상기 메모리 제어 회로에 의해 보존되는 장치
  24. 제23항에 있어서, 하나의 데이터 마스크 비트는 메모리에서의 하나의 데이터 비트에 매핑되는 장치.
  25. 제23항에 있어서, 하나의 데이터 마스크 비트는 메모리에서의 복수의 데이터 비트에 매핑되는 장치.
  26. 데이터 마스크 매핑 장치에서 데이터 마스크 맵을 설정하는 단계와;
    제1 메모리 사이클에서 데이터 마스크를 데이터 메모리에 전송하는 단계와;
    제2 메모리 사이클에서 상기 데이터 메모리의 어드레스에 데이터를 기입하는 단계
    를 포함하고,
    상기 데이터 마스크 맵을 통해 상기 데이터 마스크의 마스크 비트에 매핑되는 상기 데이터 메모리의 데이터 비트는 상기 기입 동작에 의해 변경되지 않는 방법.
  27. 제26항에 있어서, 상기 데이터 메모리에 제2 데이터 마스크를 전송하기 전에, 제3 메모리 사이클에서의 상기 데이터 메모리의 제2 어드레스에 데이터를 기입하는 단계를 더 포함하는 방법.
  28. 제26항에 있어서,
    제2 데이터 마스크를 제3 메모리 사이클에서의 상기 데이터 메모리에 전송하는 단계와;
    제4 메모리 사이클에서의 상기 데이터 메모리의 어드레스에 데이터를 기입하는 단계
    를 포함하고,
    상기 제3 및 제4 메모리 사이클은, 상기 데이터 마스크 매핑 장치에서의 상기 데이터 마스크 맵을 설정한 후, 그리고 상기 데이터 마스크 매핑 장치에서의 제2 데이터 마스크 맵을 설정하기 전에 발생하는 방법.
KR1020047015015A 2002-03-22 2003-03-13 컨트롤러 프로그래밍에 의한 하드웨어에서의 데이터마스크 매핑 KR100647160B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/104,412 US6957307B2 (en) 2002-03-22 2002-03-22 Mapping data masks in hardware by controller programming
US10/104,412 2002-03-22
PCT/US2003/007913 WO2003083664A2 (en) 2002-03-22 2003-03-13 Mapping data masks in hardware by controller programming

Publications (2)

Publication Number Publication Date
KR20040106302A KR20040106302A (ko) 2004-12-17
KR100647160B1 true KR100647160B1 (ko) 2006-11-23

Family

ID=28040583

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047015015A KR100647160B1 (ko) 2002-03-22 2003-03-13 컨트롤러 프로그래밍에 의한 하드웨어에서의 데이터마스크 매핑

Country Status (11)

Country Link
US (1) US6957307B2 (ko)
EP (1) EP1488322B1 (ko)
JP (1) JP2006507555A (ko)
KR (1) KR100647160B1 (ko)
CN (1) CN1653435B (ko)
AT (1) ATE442626T1 (ko)
AU (1) AU2003218166A1 (ko)
DE (1) DE60329172D1 (ko)
HK (1) HK1068971A1 (ko)
TW (1) TWI260496B (ko)
WO (1) WO2003083664A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826663B2 (en) * 2003-01-13 2004-11-30 Rambus Inc. Coded write masking
DE112004000140T5 (de) * 2003-01-13 2006-02-09 Rambus Inc., Los Altos Kodierte Schreibmaske
KR100546387B1 (ko) * 2003-10-13 2006-01-26 삼성전자주식회사 마스크 비트 전송방법 및 장치
US7610417B2 (en) 2005-11-30 2009-10-27 Rambus Inc. Data-width translator coupled between variable-width and fixed-width data ports and supporting multiple data-width configurations
JP5103823B2 (ja) * 2006-08-18 2012-12-19 富士通株式会社 情報処理装置および入出力要求制御方法
US8275972B2 (en) 2006-08-23 2012-09-25 Ati Technologies, Inc. Write data mask method and system
US8006033B2 (en) * 2008-09-09 2011-08-23 Intel Corporation Systems, methods, and apparatuses for in-band data mask bit transmission
CN101488920B (zh) * 2009-02-23 2011-12-28 北京星网锐捷网络技术有限公司 交换机、生成硬件表项匹配域的方法及系统
US8433950B2 (en) * 2009-03-17 2013-04-30 International Business Machines Corporation System to determine fault tolerance in an integrated circuit and associated methods
US9489294B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
JP6187841B2 (ja) * 2013-09-27 2017-08-30 インテル・コーポレーション デバイス、システム、方法、および装置
US9390008B2 (en) 2013-12-11 2016-07-12 Sandisk Technologies Llc Data encoding for non-volatile memory
US9792965B2 (en) 2014-06-17 2017-10-17 Rambus Inc. Memory module and system supporting parallel and serial access modes
KR102456582B1 (ko) * 2017-12-19 2022-10-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4473878A (en) * 1981-11-23 1984-09-25 Motorola, Inc. Memory management unit
JPS61159686A (ja) * 1985-01-07 1986-07-19 株式会社日立製作所 画像表示装置
US5907512A (en) * 1989-08-14 1999-05-25 Micron Technology, Inc. Mask write enablement for memory devices which permits selective masked enablement of plural segments
US5491806A (en) * 1990-06-26 1996-02-13 Lsi Logic Corporation Optimized translation lookaside buffer slice having stored mask bits
US5526504A (en) * 1993-12-15 1996-06-11 Silicon Graphics, Inc. Variable page size translation lookaside buffer
US5627991A (en) 1993-12-28 1997-05-06 Intel Corporation Cache memory having a multiplexor assembly for ordering output on a data chunk basis
US6348978B1 (en) 1997-07-24 2002-02-19 Electronics For Imaging, Inc. Method and system for image format conversion
US6223268B1 (en) * 1999-01-08 2001-04-24 Sony Corporation System and method for writing specific bytes in a wide-word memory
FR2798217B1 (fr) * 1999-09-08 2002-03-29 Nortel Matra Cellular Circuit de commande d'une memoire synchrone
KR100394347B1 (ko) * 2000-04-19 2003-08-09 삼성전자주식회사 인터페이스 기판 및 이를 이용한 반도체 집적회로 소자테스트 방법
US6418068B1 (en) * 2001-01-19 2002-07-09 Hewlett-Packard Co. Self-healing memory
US6523104B2 (en) * 2001-07-13 2003-02-18 Mips Technologies, Inc. Mechanism for programmable modification of memory mapping granularity
US6771553B2 (en) * 2001-10-18 2004-08-03 Micron Technology, Inc. Low power auto-refresh circuit and method for dynamic random access memories

Also Published As

Publication number Publication date
AU2003218166A8 (en) 2003-10-13
TW200404204A (en) 2004-03-16
EP1488322B1 (en) 2009-09-09
DE60329172D1 (de) 2009-10-22
WO2003083664A2 (en) 2003-10-09
US6957307B2 (en) 2005-10-18
CN1653435A (zh) 2005-08-10
WO2003083664A3 (en) 2003-12-04
AU2003218166A1 (en) 2003-10-13
US20030182519A1 (en) 2003-09-25
EP1488322A2 (en) 2004-12-22
JP2006507555A (ja) 2006-03-02
HK1068971A1 (en) 2005-05-06
CN1653435B (zh) 2010-05-26
ATE442626T1 (de) 2009-09-15
KR20040106302A (ko) 2004-12-17
TWI260496B (en) 2006-08-21

Similar Documents

Publication Publication Date Title
EP1488321B1 (en) Obtaining data mask mapping information
KR100647160B1 (ko) 컨트롤러 프로그래밍에 의한 하드웨어에서의 데이터마스크 매핑
CN102084428B (zh) 多模式存储器装置和方法
KR100840140B1 (ko) 메모리 허브 메모리 모듈들을 사용하여 데이터 전송들을조직화하는 시스템 및 방법
CN1828511B (zh) 固态盘控制器装置及操作方法
KR100633828B1 (ko) 프리페치 길이보다 짧은 버스트 길이를 갖는 메모리 시스템
US4899272A (en) Addressing multiple types of memory devices
US11862236B1 (en) Memory component for deployment in a dynamic stripe width memory system
US5369651A (en) Multiplexed byte enable bus for partial word writes to ECC protected memory
US6789179B2 (en) Method and system for fast data access using a memory array
KR20070051930A (ko) 메모리 디바이스 및 모듈과, 컴퓨팅 디바이스와, 메모리시스템과 디바이스 및 컨트롤러의 작동 방법
KR20060010849A (ko) 메모리 소자에서의 워드 순서지정 방법
US20230297474A1 (en) Energy efficient storage of error-correction-detection information
US4796222A (en) Memory structure for nonsequential storage of block bytes in multi-bit chips
US20050180240A1 (en) Method and system for fast memory access
US5586300A (en) Flexible addressing memory controller wherein multiple memory modules may be accessed according to comparison of configuration addresses
US4992979A (en) Memory structure for nonsequential storage of block bytes in multi bit chips
US5551009A (en) Expandable high performance FIFO design which includes memory cells having respective cell multiplexors
US20090248919A1 (en) Method for external fifo acceleration
KR20230141396A (ko) 메모리 내 데이터 계산 및 분석

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121019

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131101

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee