KR20200003709A - 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조 - Google Patents

고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조 Download PDF

Info

Publication number
KR20200003709A
KR20200003709A KR1020190039290A KR20190039290A KR20200003709A KR 20200003709 A KR20200003709 A KR 20200003709A KR 1020190039290 A KR1020190039290 A KR 1020190039290A KR 20190039290 A KR20190039290 A KR 20190039290A KR 20200003709 A KR20200003709 A KR 20200003709A
Authority
KR
South Korea
Prior art keywords
memory
error
address
data
memory address
Prior art date
Application number
KR1020190039290A
Other languages
English (en)
Other versions
KR102420098B1 (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 KR20200003709A publication Critical patent/KR20200003709A/ko
Application granted granted Critical
Publication of KR102420098B1 publication Critical patent/KR102420098B1/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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
    • G06F13/1678Details of memory controller using bus width
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)
  • Detection And Correction Of Errors (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 실시 예에 따르면, 장치는 메모리 셀 다이 및 로직 다이를 포함하는 복수의 적층된 집적 회로 다이들을 포함할 수 있다. 메모리 셀 다이는 메모리 어드레스를 기반으로 랜덤 액세스 방식으로 데이터를 저장하도록 구성될 수 있다. 로직 다이는 복수의 적층된 집적 회로 다이들과 연결되고, 메모리 셀 다이 및 적어도 하나의 외부 장치 사이에서 메모리 액세스들을 통신하도록 구성된 인터페이스, 및 메모리 셀 다이 내의 데이터 에러들을 개선하도록 구성된 신뢰성 회로를 포함할 수 있다. 신뢰성 회로는 랜덤 액세스 방식으로 데이터를 저장하도록 구성된 보조 메모리, 및 에러와 연관된 메모리 어드레스를 보조 메모리의 부분으로 맵핑하도록 구성된 어드레스 테이블을 포함할 수 있다. 신뢰성 회로는, 복수의 적층된 집적 회로 다이들로의 메모리 액세스가 발생한 경우, 메모리 액세스가 에러와 연관되는지 판별하고, 메모리 액세스가 에러와 연관된 경우, 보조 메모리를 사용하여 메모리 액세스를 완료하도록 구성될 수 있다.

Description

고-대역폭 메모리 신뢰성, 접근성 및 유용성(RAS) 캐시 구조{HIGH BANDWIDTH MEMORY RELIABILITY, ACCESSIBILITY, AND SEVICEABILITY CACHE ARCHITECTURE}
본 발명은 메모리 에러 정정에 관한 것으로 좀 더 상세하게는 HBM(high-bandwidth memory) 신뢰성, 접근성, 및 유용성(RAS; reliability, accessibility, and serviceability) 캐시 구조에 관한 것이다.
HBM(High Bandwidth Memory)는 적층된 동적 랜덤 액세스 메모리(stacked DRAM; stacked dynamic random access memory)를 위한 고성능 RAM 인터페이스이다. HBM은 일반적으로 고성능 그래픽 가속기들 및 네트워크 장치들과 함께 사용된다. HBM을 사용한 첫 번째 장치는 GPU(graphical processing unit)이다.
HBM은 DDR4(double data rate fourth-generation synchronous DRAM) 또는 GDDR5(double data rate type five synchronous graphics random-access memory)보다 실질적으로 더 작은 폼-팩터에서 더 적은 전력을 사용하면서 더 높은 대역폭을 달성한다. 이는 다수(예를 들어, 8개)의 DRAM 다이들을 적층하고, 메모리 컨트롤러를 갖는 선택적인 기본 다이를 추가시킴으로써 달성된다. 이들은 TVS(through-silicon vias) 및 마이크로 범프들에 의해 연결된다.
HBM 메모리 버스는 DDR4 또는 GDDR5와 같은 다른 DRAM 메모리들과 비교하여 매우 넓다. 4개의 DRAM 다이들의 HBM 스택(4-Hi)은 일반적으로 다이 당 2개의 128-비트 채널인 총 8개의 채널들을 갖고, 전체에서 1024 비트의 폭을 갖는다. 그러므로 4개의 4-Hi HBM 스택들을 갖는 그래픽 카드/GPU는 4096 비트의 폭을 갖는 메모리 버스를 포함한다. 이에 비해, GDDR 메모리들의 버스 폭은 32비트이고, 512-비트 메모리 인터페이스를 갖는 그래픽 카드에 대하여 16 채널이다.
DD4 또는 GDDR5보다 상대적으로 메모리로의 더 많은 연결들은 HBM 메모리를 GPU(또는 다른 프로세서)로 연결하는 새로운 방법을 필요로 한다. 일부 회사들은 인터포저(interposer)라 불리는 특수 제작된 실리콘 칩(purpose built silicon chips)을 사용하여 메모리와 GPU를 연결한다. 이러한 인터포저는 메모리 및 프로세서가 물리적으로 가까워지고 메모리 경로들을 감소시키는 이점을 갖는다. 그러나 반도체 장치 제조는 인쇄 회로 기판 제조보다 매우 비싸기 때문에, 이는 최종 제품에 비용으로 추가된다.
본 발명의 목적은 향상된 신뢰성을 갖는 HBM(high-bandwidth memory) 신뢰성, 접근성, 및 유용성(RAS; reliability, accessibility, and serviceability) 캐시 구조를 제공하는데 있다.
본 발명의 실시 예에 따르면, 장치는 복수의 적층된 집적 회로 다이들을 포함할 수 있다. 상기 복수의 적층된 집적 회로 다이들은 메모리 셀 다이 및 로직 다이를 포함할 수 있다. 상기 메모리 셀 다이는 메모리 어드레스를 기반으로 랜덤 액세스 방식으로 데이터를 저장하도록 구성될 수 있다. 상기 로직 다이는 상기 복수의 적층된 집적 회로 다이들과 연결되고, 상기 메모리 셀 다이 및 적어도 하나의 외부 장치 사이에서 메모리 액세스들을 통신하도록 구성될 수 있다. 상기 로직 다이는 상기 메모리 셀 다이 내의 데이터 에러들을 개선하도록 구성된 신뢰성 회로를 포함할 수 있다. 상기 신뢰성 회로는 랜덤 액세스 방식으로 데이터를 저장하도록 구성된 보조 메모리 및 에러와 연관된 메모리 어드레스를 상기 보조 메모리의 부분으로 맵핑하도록 구성된 어드레스 테이블을 포함할 수 있다. 상기 신뢰성 회로는, 상기 복수의 적층된 집적 회로 다이들로의 메모리 액세스가 발생한 경우, 상기 메모리 액세스가 에러와 연관되는지 판별하고, 만약 그렇다면, 상기 보조 메모리를 적어도 부분적으로 사용하여 상기 메모리 액세스를 완료하도록 구성될 수 있다.
본 발명의 다른 실시 예에 따르면, 시스템은 프로세서로의 데이터의 흐름을 관리하도록 구성된 메모리 컨트롤러를 포함하는 상기 프로세서, 및 저장된 데이터에 에러가 발생했는지 검출하도록 구성된 에러 정정 회로를 포함할 수 있다. 상기 시스템은 메모리 어드레스를 기반으로 데이터를 저장하도록 구성된 고-대역 메모리 셀들; 및 상기 고-대역 메모리 셀들 내의 데이터 에러들을 개선하도록 구성된 신뢰성 회로를 포함하는 고-대역 메모리 스택의 집적 회로들을 포함할 수 있다. 상기 신뢰성 회로는 데이터를 저장하도록 구성된 보조 메모리, 및 상기 에러와 연관된 메모리 어드레스를 상기 보조 메모리의 부분으로 맵핑하도록 구성된 어드레스 테이블을 포함할 수 있다. 상기 신뢰성 회로는, 상기 고-대역 메모리 스택의 집적 회로들로의 메모리 액세스가 발생한 경우, 상기 메모리 액세스가 에러와 연관되는지 판별하고, 만약 그렇다면, 상기 보조 메모리를 적어도 부분적으로 사용하여 상기 메모리 액세스를 완료하도록 구성될 수 있다.
본 발명의 다른 실시 예에 따르면, 장치는 메모리 어드레스를 기반으로 데이터를 저장하도록 구성된 고-대역 메모리 다이들과 연결된 내부 인터페이스를 포함하는 로직 다이를 포함할 수 있다. 상기 로직 다이는 상기 고-대역 메모리 다이들 및 적어도 하나의 외부 장치 사이에서 메모리 액세스들을 통신하도록 구성된 외부 인터페이스를 포함할 수 있다. 상기 로직 다이는 상기 고-대역 메모리 다이들 내의 데이터 에러들을 개선하도록 구성된 신뢰성 회로를 포함할 수 있다. 신뢰성 회로는 데이터를 저장하도록 구성된 보조 메모리, 및 에러와 연관된 메모리 어드레스를 상기 보조 메모리의 부분으로 맵핑하도록 구성된 어드레스 테이블을 포함할 수 있다. 상기 신뢰성 회로는, 상기 고-대역 메모리 다이들로의 메모리 액세스가 발생한 경우, 상기 메모리 액세스가 에러와 연관되는지 판별하고, 만약 그렇다면, 상기 보조 메모리를 적어도 부분적으로 사용하여 상기 메모리 액세스를 완료하도록 구성될 수 있다.
하나 또는 그 이상의 구현들은 이하의 상세한 설명 및 첨부된 도면들에서 게시된다. 다른 특징들은 상세한 설명 및 도면들, 그리고 특허청구범위로부터 명백해 질 것이다.
본 발명은, 실질적으로 적어도 하나의 도면들과 연관되어 설명되거나 또는 도시되고, 특허청구범위에서 좀 더 명확하게 게시되는 바와 같이, 메모리 에러 정정을 위한 시스템 및/또는 방법에 관한 것이며, 좀 더 상세하게는 고-대역 메모리(HBM; high-bandwidth memory) 신뢰성, 접근성 및 유용성(RAS; reliability, accessibility, and serviceability) 캐시 구조에 관한 것이다.
본 발명의 실시 예들에 따르면, 향상된 신뢰성을 갖는 HBM(high-bandwidth memory) 신뢰성, 접근성, 및 유용성(RAS; reliability, accessibility, and serviceability) 캐시 구조가 제공된다.
도 1은 본 발명의 실시 예에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 2a는 본 발명의 실시 예에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 2b는 본 발명의 실시 예에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 2c는 본 발명의 실시 예에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 3은 본 발명의 실시 예에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 4a는 본 발명의 실시 예에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 4b는 본 발명의 실시 예에 따른 시스템의 예시적인 실시 예의 블록도이다.
도 5는 본 발명의 실시 예의 원리들에 따라 형성된 장치들을 포함할 수 있는 정보 처리 시스템의 개념적인 블록도이다.
다양한 도면들에서 유사한 참조 번호들은 유사한 구성 요소들을 가리킨다.
다양한 예시적인 실시 예들이 일부 예시적인 실시 예들을 보여주는 첨부된 도면들을 참조하여 더욱 상세하게 설명된다. 그러나, 본문에 게시된 내용은 다양한 다른 형태로 구현될 수 있고, 본문에 설명된 예시적인 실시 예들에 제한되는 것으로 해석되어서는 안 된다. 대신에, 이러한 예시적인 실시 예들은 상세한 설명이 완전하며, 당업자에 의해 본 발명의 기술적 사상이 완전하게 전달될 수 있도록 제공된다. 도면들에서, 계층들 및 영역들의 크기들 및 상대적인 크기들은 명확성을 위하여, 과장된다.
구성 또는 계층이 다른 구성 또는 계층과 "연결된(on, connected to, or coupled to)" 것으로 지칭되는 경우, 이는 직접적으로(directly) 다른 구성 또는 계층과 연결될 수 있거나 또는 하나 또는 그 이상의 중간(intervening) 구성들 또는 계층들이 존재할 수 있음이 이해될 것이다. 대조적으로, 구성이 다른 구성 또는 계층과 "직접적으로 연결된(directly on, directly connected to, or directly coupled to)" 것으로 지칭되는 경우, 중간 구성들 또는 계층들이 존재하지 않는다. 유사한 참조 번호는 전체적으로 유사한 구성들을 지칭한다. 본문에서 사용되는 바와 같이 "및/또는(and/or)"는 연관되어 나열된 목록들 중 하나 또는 그 이상의 조합들의 일부 및 전부를 포함한다.
"제1(first)", "제2(second)", "제3(third)" 등과 같은 용어들은 다양한 요소들, 구성들, 영역들, 계층들, 및/또는 구역들을 설명하기 위하여 본문에서 사용되나, 이러한 요소들, 구성들, 영역들, 계층들, 및/또는 구역들은 이러한 용어들에 한정되지 않음이 잘 이해될 것이다. 이러한 용어들은 하나의 요소, 구성, 영역, 계층, 또는 구역을 다른 하나의 요소, 구성, 영역, 계층, 또는 구역으로부터 구분하기 위해서만 사용된다. 즉, 이하에서 기재되는 제1 요소, 구성, 영역, 계층, 또는 구역은 본 발명의 사상 및 범위로부터 벗어남 없이, 제2 요소, 구성, 영역, 계층, 또는 구역으로 불릴 수 있다.
"~의 아래(beneath, below, lower, under)", "~의 위(above, upper)" 등과 같은 공간적으로 상대적인 용어들(spatially relative terms)은 도면들에서 도시된 다른 하나의 요소(들) 또는 특징(들)과 하나의 요소 또는 특징들과의 관련성을 용이하게 설명하기 위하여 본문에서 사용될 수 있다. 공간적으로 상대적인 용어들은 도면에 도시된 지향성에 추가적으로 동작 또는 사용에서 장치의 다른 지향성(orientations)을 포함하는 것으로 의도됨이 잘 이해될 것이다. 예를 들어, 도면들에서 장치가 뒤집어지는 경우, 다른 요소들 또는 특징들의 "아래(below or beneath or under)"로 설명된 요소들은 다른 요소들 또는 특징들의 "상부(above)"로 향할 것이다. 즉, "아래(below, under)"의 예시적인 용어들은 위 및 아래의 방향들을 모두 포함할 수 있다. 장치가 다른 방향(예를 들어, 90도로 회전하거나 또는 다른 방향)을 지향할 수 있고, 본문에서 사용되는 공간적으로 상대적인 설명들은 이에 따라 해석되어야 한다.
마찬가지로, "하이(high)", "로우(low)", "풀-업(pull up), "풀 다운(pull down), "1", 및 "0" 등과 같은 전기적인 용어들 도면에서 도시된 바와 같이, 다른 전압 레벨들 또는 다른 구성들 또는 특징들과 상대적인 전압 레벨 및 전류를 나타내는 설명의 편의를 위하여 상세한 설명에서 사용될 수 있다. 전기적으로 상대적인 용어들은 도면들에 도시된 전압들 또는 전류들에 추가적으로 사용 또는 동작에서 장치의 다른 기준 전압들을 포함하는 것으로 의도된다. 예를 들어, 도면들에서 장치 또는 신호들이 반전되거나 또는 다른 기준 전압들, 전류들, 또는 전하들을 사용하는 경우, "하이(high)" 또는 "풀 업(pull up)"으로 설명되는 구성들은 새로운 기준 전압 또는 전류와 비교하여 "로우(low)" 또는 풀 다운(pull down)"일 수 있다. 즉, "하이(high)"의 예시적인 용어는 상대적으로 낮거나 또는 높은 전압 또는 전류를 모두 포함할 수 있다. 장치는 다른 전기적은 프레임들의 기준에 기반될 수 있고, 상세한 설명에서 사용되는 전기적으로 상대적인 설명들에 따라 해석될 수 있다.
상세한 설명에서 사용되는 용어들은 오직 특정 실시 예에 대한 설명의 목적을 위한 것이며, 본 발명의 한정을 의도하는 것은 아니다. 상세한 설명에서 사용되는 바와 같이, 단수 형태들(singular forms)은, 명확히 다르게 정의되지 않는 한, 복수 형태들(plural forms)을 포함하도록 의도된다. "포함하다(comprise)" 용어는, 상세한 설명에 사용되는 경우, 열거된 특징들, 단계들, 동작들, 요소들, 및/또는 구성들의 존재를 특정하나, 하나 또는 그 이상의 다른 특징들, 단계들, 동작들, 요소들, 구성들, 및/또는 그것들의 그룹들의 추가 또는 존재를 배제하지 않는다.
예시적인 실시 예들이 이상적인 실시 예들(및 중간 구조들)의 예시적인 도면인 단면도를 참조하여 상세한 설명에서 설명된다. 이와 같이, 예를 들어 제조 기술 및/또는 허용 오차와 같은 결과로서의 도면들의 형상으로부터의 변형이 예상되어야 한다. 즉, 예시적인 실시 예들은 상세한 설명에에 도시된 특정 형상의 영역들에 한정되는 것으로 해석되어서는 안되며, 예를 들어 제조로부터 초래되는 형상의 편차를 포함해야 한다. 예를 들어, 직사각형으로 도시된 주입된 영역은 일반적으로, 주입된 영역에서부터 주입되지 않은 영역으로의 이진 변화 라기보다는, 둥근 또는 곡선의 피쳐 및/또는 모서리에서의 주입 농도의 기울기를 가질 것이다. 마찬가지로, 주입에 의해 형성된 매립 영역은 매립 영역과 주입이 일어나는 표면 사이의 영역에 약간의 주입을 초래할 수 있다. 따라서, 도면들에 도시 된 영역들은 본질적으로 개략적이며, 그 형상들은 디바이스의 영역의 실제 형상을 설명하기 위한 것이 아니며 본 발명의 범위를 제한하려는 것이 아니다.
다르게 정의되지 않는 한, 본문에서 사용되는 모든 용어들(기술적 및 과학적 용어들을 포함함)은 당업자에 의해 공통적으로 이해될 수 있는 의미를 갖는다. 또한, 일반적으로 사용되는 사전에서 정의된 용어와 같은 용어는 관련 기술 및/또는 본 명세서와 관련하여 그 의미와 일치하는 의미를 갖는 것으로 해석되어야하며, 본문에서 정의되지 않는 한 이상적이거나 지나치게 형식적인 의미로 해석되지 않아야 한다.
이하에서, 예시적인 실시 예들이 첨부된 도면들을 참조하여 상세하게 설명될 것이다.
도 1은 본 발명의 실시 예에 따른 시스템(100)의 예시적인 실시 예의 사시도이다. 도시된 실시 예에서, 다수의 집적 회로 다이들이 적층되거나 또는 집적되어 멀티-칩 시스템을 형성할 수 있다. 다양한 실시 예들에서, 멀티-칩 시스템(100)은 이하에서 설명되는 바와 같이, RAS 캐시 또는 회로를 포함할 수 있다.
다양한 실시 예에서, HBM(High Bandwidth Memory)는 고성능 형태의 RAM(high-performance form of random access memory)을 포함할 수 있다. 일부 실시 예들에서, HBM은 TSV(through-silicon via)를 사용하여 통신하는 적층된 DRAM(stacked dynamic RAM) 메모리를 포함할 수 있다. 일반적으로, HBM은 TSV(through-silicon via) 및 마이크로범프들을 조합하여 복수(예를 들어, 4개, 8개 등)의 다이들의 메모리 셀 어레이들을 서로의 상부에서 연결한다. 일부 실시 예들에서, 메모리 컨트롤러는 적층의 최하단에 위치한 별도의 다이에 포함될 수 있다.
도시된 실시 예에서, 시스템(100)은 하나 또는 그 이상의 메모리(예를 들어, DRAM 등) 다이들(104) 및 로직 다이(102)를 포함할 수 있다. 일 실시 예에서, 메모리 다이(들)(104) 및 로직 다이(102)는 동일한 제조 공정을 사용하여 제조되거나 또는 생성될 수 있으며, 그렇지 않을 수도 있다.
도시된 실시 예에서, 메모리 다이(104)는 복수의 메모리 에러이들(114)을 포함할 수 있다. 이러한 실시 예에서, 메모리 어레이들(114)은 데이터의 다양한 부분들을 저장하도록 구성될 수 있다. 일부 실시 예들에서, 데이터는 로직 다이(102) 또는 외부 장치(예를 들어, 이하에서 설명되는 바와 같이, 외부 프로세서 또는 호스트)에 의해 액세스될 수 있다.
도시된 실시 예들에서, 로직 다이(102)는 하나 또는 그 이상의 로직 회로들(112)을 포함할 수 있다. 이러한 실시 예에서, 로직 회로들(112)은 읽기/쓰기 요청들 또는 좀 더 일반적으로 메모리들(114)내에 데이터를 저장하거나 또는 읽는 메모리 액세스들을 수신하기 위한 인터페이스를 포함할 수 있다. 다양한 실시 예들에서, 로직 다이(102)는, 이하에서 설명되는 바와 같이, RAS 캐시 또는 회로(113)를 포함할 수 있다.
다양한 실시 예들에서, 로직 회로들(112)은 하나 또는 그 이상의 비아들(126)(또는 마이크로범프들 등)을 사용하여 메모리(114)와 통신할 수 있다. 이러한 실시 예에서, 이는 버스 또는 외부 인터페이스를 통한 통신에 대한 요구 없이 처리 구성 요소(예를 들어, 로직 회로들(112)) 및 저장된 데이터(메모리 114) 사이의 고속 통신을 가능하게 할 수 있다.
다양한 실시 예들에서, 시스템(100)은 라우팅 다이(106)를 포함할 수 있다. 라우팅 다이(106)는 로직 다이(112) 및 메모리 다이(들)(104) 사이에서 신호들을 동적으로 전송하도록 구성될 수 있다. 다양한 실시 예들에서, 라우팅 다이(106)는 하나 또는 그 이상의 비아들(126)에 의해 로직 다이(102)와 연결될 수 있다. 비아들(126)(또는 그것들의 부분)은 입력/출력(I/O; input/output) 단자들 또는 인터페이스(123)에서 끝날 수 있다. 이러한 실시 예에서, 라우팅 다이(106)는 I/O 인터페이스(123) 및 의도된 데이터를 저장하는 메모리들(114) 사이에서 신호들을 동적으로 라우팅할 수 있다.
다양한 실시 예들에서, 라우팅은 라우팅 구조체(126)에 의해 달성될 수 있다. 다양한 실시 예들에서, 라우팅 구조체(126)는, 예를 들어, 멀티플렉서들, 디-멀티플렉서들, 크로스바 스위치들, 스위치들, 로터리 스위치, 메모리 스위치, 크로스오버 스위치 등과 같은 다양한 라우팅 장치들을 포함할 수 있다. 상술된 구성은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되는 것은 아님이 이해될 것이다.
일부 실시 예들에서, 라우팅 구조체(126)는 로직 회로들(112)의 I/O 인터페이스들(123) 및 메모리들(114)의 유사한 I/O 인터페이스들(123a 또는 123b) 사이의 입력/출력 신호들을 라우팅하도록 구성될 수 있다. 도시된 실시 예에서, 2개의 가능한 라우팅 방식들이 도시된다. 예를 들어, 실선들은 로직 회로들(112)을 제1 메모리(메모리 다이(104)의 좌측 하단 코너에 도시됨)의 I/O 인터페이스들(123a)와 연결하는데 사용될 수 있는 제1 라우팅을 보여준다. 다른 실시 예에서, 점선들은 로직 회로들(112)을 제2 메모리(메모리 다이(104)의 우측에 도시됨)의 I/O 인터페이스들(123b)로 연결하는데 사용될 수 있는 제2 라우팅을 보여준다. 그러나, 다양한 실시 예들에서, 메모리들(114)은 도시된 바와 같이 분할되지 않고, 모놀리식(monolithic)일 수 있다. 상술된 내용들은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되는 것은 아님이 이해될 것이다.
도 2a는 본 발명의 실시 예에 따른 시스템(200)의 예시적인 실시 예의 블록도이다. 다양한 실시 예들에서, 시스템(200)은 다수의 구분된 집적 회로들, MCM, 및 또는 시스템-온-칩(SoC; system-on-chip)의 일부일 수 있다. 다양한 실시 예들에서, 시스템(200)은, 예를 들어, 랩탑, 데스크탑, 워크스테이션, PDA(personal digital assistant), 스마트폰, 태블릿, 다른 적절한 컴퓨터들, 또는 가상 머신, 또는 그것들의 가상 컴퓨팅 장치에서 사용될 수 있다.
일 실시 예에서, 시스템(200)은 호스트 장치(206)를 포함할 수 있다. 다양한 실시 예들에서, 이러한 호스트 장치는 중앙 처리 유닛(CPU; central processing unit), 마더보드(motherboard), 컴퓨팅 시스템을 포함할 수 있다. 다양한 실시 예들에서, 호스트 장치(206)는 명령어들을 실행하고 일반적으로 데이터를 읽고 쓰는 프로세서(미도시)를 포함할 수 있다. 이것의 일부로서, 호스트 장치(206)는 드라이버 소프트웨어 또는 펌웨어(242)를 실행할 수 있다. 도시된 실시 예에서, 장치 드라이버(242)는 컴퓨터에 부착된 특정 타입의 장치(예를 들어, 프로세서(204) 또는 HBM 다이들(202))을 제어하거나 또는 구동시키는 컴퓨터 프로그램을 포함할 수 있다. 이러한 실시 예에서, 드라이버(242)는 하드웨어 장치들로 소프트웨어 인터페이스를 제공하여, 사용되는 하드웨어에 대한 세세한 항목을 알 필요없이, 운영 체제들(operating systems) 및 다른 컴퓨텅 프로그램들이 하드웨어 기능들을 액세스할 수 있도록 한다.
도시된 실시 예에서, 시스템(200)은 프로세서(204)를 포함할 수 있다. 다양한 실시 예들에서, 프로세서(204)는 다양한 타입들의 프로세서들(예를 들어, 그래픽 프로세서(graphic processor), 중앙 프로세서(central processor), 장치 특정 프로세서(device specific processor), 물리 프로세서(physics processor) 등) 중 하나를 포함할 수 있다. 설명의 편의를 위하여, 프로세서(204)는 그래픽 처리 유닛(GPU; graphic processing unit)인 것으로 설명될 것이나, 이는 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되는 것은 아님이 이해될 것이다. 다양한 실시 예들에서, GPU(204)는 그래픽 데이터를 생성하거나 또는 작업들을 대량으로 병렬 연산하기 위해 사용될 수 있다.
다양한 실시 예들에서, 프로세서(204)는 메모리 컨트롤러(232)를 포함할 수 있다. 이러한 실시 예에서, 메모리 컨트롤러(232)는 프로세서(204)로부터의 그리고 프로세서(204)로의 데이터의 흐름을 관리하도록 구성될 수 있다. 특히, 도시된 실시 예에서, 메모리 컨트롤러(232)는 프로세서(204) 및 HBM 다이들(202) 사이에서의 데이터의 흐름을 관리하도록 구성될 수 있다.
도시된 실시 예에서, 프로세서(204)는 ECC(error correcting or correction) 엔진 또는 회로(234)를 포함할 수 있다. 이러한 실시 예에서, ECC 엔진 또는 회로(234)는 HBM 다이들(202)로부터 수신된 데이터의 일부에서 에러가 발생하였는지 검출하도록 구성될 수 있다. 다양한 실시 예들에서, ECC 엔진(234)은 메모리 컨트롤러(232)의 일부이거나 또는 메모리 컨트롤러(232)와 함께 집적될 수 있다. 다양한 실시 예들에서, ECC 엔진(234) 싱글 또는 더블 비트 에러들(single or double bit errors)을 검출하도록 구성될 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며 본 발명이 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에서, 프로세서(204)는 불휘발성 메모리(236)를 포함할 수 있다. 다양한 실시 예들에서, 메모리는, 이하에서 설명되는 바와 같이, 휘발성이거나 또는 프로세서(204)의 외부에 위치할 수 있다. 이러한 실시 예에서, 불휘발성 메모리(236)는 에러가 어떤 메모리 어드레스들과 연관되는지에 대한 정보를 저장하도록 구성될 수 있다. 일부 실시 예들에서, 배드 또는 에러가 난 메모리 어드레스들은 회피(avoid)될 수 있다. 다른 실시 예들에서, 배드 또는 에러 가 난 메모리 어드레스들은 굿 또는 동작 메모리 셀들로 리맵될 수 있다.
상술된 바와 같이, 도시된 실시 예에서, 불휘발성 메모리(236)에 의해, 이러한 배드 또는 에러가 난 메모리 어드레스들은 프로세서(204)의 파워 싸이클링 동안 기억될 수 있다. 다른 실시 예에서, 휘발성 메모리가 사용될 수 있고, 배드 또는 에러가 난 메모리 어레드스들은 각 파워 싸이클에서 재검색되어야 할 수 있다. 다른 실시 예에서, 프로세서(204)는 로컬 또는 집적된 휘발성 메모리를 포함할 수 있으나, 프로세서(204)의 파워 싸이클이 종료된 경우, 프로세서(204)의 외부에 위치하거나 또는 원격인 불휘발성 메모리(예를 들어, 하드 드라이브)에 데이터를 저장할 수 있고, 프로세서(204)가 재부팅된 경우, 데이터를 회수할 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에서, 시스템(100)은, 상술된 바와 같이, HBM 다이 또는 좀 더 정확하게는 다이들의 스택(202)을 포함할 수 있다. 다양한 실시 예들에서, HBM 다이들(202)은, 상술된 바와 같이, 복수의 메모리 셀들(214)을 포함할 수 있다. 다양한 실시 예들에서, 메모리 셀들(214)은 복수의 집적 회로(IC; integrated circuit) 다이들 상에 분산될 수 있고, 각각의 메모리 어드레스들에서 데이터를 저장하도록 구성될 수 있다.
다양한 실시 예들에서, HBM 다이들(202)은 메모리 셀들(216)의 ECC 스토리지를 포함할 수 있다. 이러한 실시 예에서, ECC 스토리지(216)는 메모리 셀들(214)에 저장된 데이터 내의 에러의 검출을 허용하거나 또는 가능하게 하는 추가 비트들의 정보(예를 들어, 패리티)를 포함할 수 있다. 다양한 실시 예들에서, ECC 스토리지(216)는 메모리 셀들(214)의 일부일 수 있고, 물리적으로 분리되더라도, 앞서 서명된 바와 마찬가지로 복수의 집적 회로(IC) 다이들 상에서 분산될 수 있다. 이러한 실시 예에서, 이러한 ECC 데이터는 에러들을 검출하기 위해 ECC 엔진(234)에 의해 사용될 수 있다.
다양한 실시 예들에서, HBM 다이들(202)은 프로세서(204) 및/또는 호스트 장치(206) 사이에서 또는 그것들과 통신하도록 구성된 HBM 인터페이스(218)를 포함할 수 있다. 다양한 실시 예들에서, 시스템(200)은 내부-다이(예를 들어, 프로세서(204) 및 HBM 다이들(202) 사이) 통신을 가능하게 하는 하나 또는 그 이상의 통신 버스들(미도시)을 포함할 수 있다. 이러한 실시 예에서, 이것은 요청들 및 응답들과 같은 메모리 액세스들의 전송(transmission of memory accesses)을 포함할 수 있다.
다양한 실시 예들에서, HBM 다이들(202)은 RAS(reliability, accessibility, and serviceability) 캐시 또는 회로(212)(또는 신뢰성 회로(212))를 포함할 수 있다. 이러한 실시 예에서, RAS 회로(212)는 빠른 액세스 방식으로 소량의 데이터를 저장하는 종래의 캐시처럼 동작하도록 구성되지 않을 수 있으며, 더 큰 메모리는 추가 스토리지를 제공한다. 대신에, RAS 캐시 또는 회로(212)는 메모리 셀들(214) 내에 발견된 에러들을 정정하거나(또는 정정된 것으로 보이도록) 또는 개선하기 위한 백업 또는 보조 메모리로서 동작하도록 구성될 수 있다. 이하에서 설명되는 바와 같이, 종래에, 에러가 메모리 셀들(214) 내에서 검출된 경우, 광범위하고 시간 소모적인 동작을 취하는 것 없이 에러가 정정되거나 또는 복구되지 않을 수 있다. RAS 캐시 또는 회로(212)를 사용하면, 이러한 복구 또는 정정이 좀 더 빠르고 효율적으로 달성될 수 있다.
다양한 실시 예들에서, RAS 회로(212)는 RAS 또는 보조 메모리 또는 스토리지(222)를 포함할 수 있다. 다양한 실시 예들에서, 보조 스토리지(222)는 에러와 연관되거나 또는 파손된 메모리 셀들(214)의 부분들에 대한 데이터를 저장하도록 구성될 수 있다. 이러한 구성들의 동작은 이하에서 설명될 것이다.
다양한 실시 예들에서, RAS 회로(212)는 에러와 연관된 메모리 어드레스들(메모리 셀들(214) 내의) 리스트를 저장하고 이러한 메모리 어드레스 에러를 보조 메모리(222)의 부분에 맵핑하도록 구성된 어드레스 테이블(220)을 포함할 수 있다.
도 2b는 본 발명의 실시 예에 따른 시스템(200)의 예시적인 실시 예의 블록도이다. 도 2b의 시스템(200)은 시스템이 에러를 검출함에 따른 시스템(200)은 정보의 흐름 및 이벤트들의 상대적인 타이밍을 보여준다. 상술된 내용은 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
에러 관리 및 검출에 관하여, 종래의 GPU의 메모리 에러 관리는 일반적으로 아래와 같이 처리한다. 먼저, ECC 엔진(234)에 의해 복구될 수 없는 에러(non-recoverable error)가 검출된다. 이러한 에러는 메모리 셀들(214)의 특정 메모리 어드레스와 연관되고, 일반적으로 더블 비트 에러 또는 2개의 싱글 비트 에러들을 포함한다. 이러한 에러는 드라이버(242)로 보고될 수 있다.
이러한 실시 예에서, 드라이버(242)는, 차례대로 에러를 애플리케이션(미도시) 또는 호스트 장치(206)의 일부로 보고할 수 있다. 드라이버(242)는 메모리 에러를 GPU의 불휘발성 메모리(236)에 기입(log)할 수 있다. 종래에, 현재 GPU 상호작용이 발행하는 동안, 시스템은 이러한 오류의 재발을 방지하거나 또는 개선할 수 없었다.
그러나, 시스템의 다음 재부착(reattachment), 리셋(reset), 재부팅(reboot), 또는 GPU 상호작용의 다음 시퀀스 또는 시리즈에서, 프레임버퍼 관리자(미도시, 그러나 프로세서(204)의 일부)는 에러들을 포함하는 리타이어된 페이지들(retired pages)을 블랙리스트에 올릴 수 있다. 이러한 실시 예에서, 메모리 어드레스들 또는 페이지들은 더 이상 스토리지를 위해 사용되지 않을 수 있다. 이와 같이, 메모리 어데르스들 또는 페이지들은 영구적으로 리타이어되고, 메모리의 기능적인 용량이 감소된다.
이러한 종래의 처리는 일부 문제점들을 갖는다. 먼저, 클라이언트들(예를 들어, 호스트 장치들 또는 그것들에서 구동하는 소프트웨어)가 동작을 유지하는 동안, 페이지들을 블랙리스트에 올리는 것이 불가능하다. 두 번째, 부분적으로 GPU들의 현재 NVM 용량들로 인해, 현재 GPU들에서 리타이어된 페이지들 또는 메모리 어드레스들의 개수가 제한된다. 세 번째, 큰 리타이어 단위(large retire granularity)가 존재한다. 즉, 2-비트 에러는 4KB(kilobyte) 페이지의 리타이어를 야기한다. 더욱이, 이러한 종래의 처리는 결과적으로 메모리 셀들(214)의 더 많은 부분들이 블랙 리스트에 올라갈수록, 더 많은 메모리 용량의 감소를 일으킨다.
도시된 실시 예에서, 시스템(200)은 HBM 모듈 또는 다이들(202) 상에 추가 로직 및 메모리를 제공하여 에러들을 캐싱하고 복구함으로써 이러한 상황을 개선한다. 상세하게는, RAS 회로(212)는 적어도 수 킬로-바이트의 크기로 HBM 로직 다이에 구현될 수 있다. 이는 단순히 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다. 이러한 RAS 회로(212)는 호스트(206) 또는 프로세서(204)에 의해 수신된 어드레스들을 저장하는 인덱스 영역(index region) 또는 어드레스 테이블(220)을 포함할 수 있고, HBM 다이들(202)의 내부 에러 정정 메커니즘에 의해 보호될 수 있다. RAS 회로(212)는 복구된 데이터(주어진 크기일 수 있음.)를 저장하도록 구성된 데이터 영역(data region) 또는 보조 스토리지(222)를 포함할 수 있다. 테이블(220) 및 스토리지(222) 영역은 1 대 1 맵핑을 포함할 수 있다. 더욱이, 이러한 영역들은 HBM 로직 다이에 호환되는 기술(DRAM, SRAM, 플래시 등과 같은 기술)로 구현될 수 있다.
도시된 실시 예에서, 에러 검출 처리는 주어진 메모리 어드레스에서 에러가 발생함을 검출하는 ECC 엔진(234)으로 시작할 수 있다. 화살표(282)에 의해 도시된 바와 같이, ECC 엔진(234)은, 상술된 바와 같이, 드라이버(242)로 알릴 수 있다. 다시, 화살표(284)에 의해 도시된 바와 같이, 드라이버(242)는 이를 불휘발성 메모리(236)에 기록할 수 있다.
그러나, 메모리 어드레스 또는 페이지를 블랙리스트에 올리고, 프로세서(204)가 더 이상 즉시 사용되지 않을 때까지 그렇게 하는 것을 기다리는 대신에, 프로세서(204)는 HBM 다이(202)(또는 HBM 다이들(202)의 로직 다이)로 주어진 어드레스가 배드임을 알릴 수 있다(화살표(286)을 통해 도시됨). HBM 다이들(202), 좀 더 상세하게는 RAS 회로(212)는 정정 동작을 수행할 수 있다.
도시된 실시 예에서, RAS 회로(212)는 배드 메모리 어드레스를 어드레스 테이블(220)에 기록하거나 또는 입력할 수 있다. 배드 메모리 어드레스는 보조 스토리지(222)의 일부 또는 메모리 어드레스로 맵핑될 수 있다. 다양한 실시 예들에서, 메모리 어드레스에서 메모리 셀들(214)에 포함된 데이터는 보조 스토리지(222)의 맵핑된 부분으로 복사(에러 및 전체)될 수 있다. 다양한 실시 예들에서, 이는 데이터가 에러를 포함하므로 바람직하지 않을 수 있다. 이러한 실시 예에서, 프로세서(204)는 새로운 데이터(에러가 없는 데이터)가 다시 읽어지기 전에, HBM 다이(202)로 기입되는 것을 요구할 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
이러한 실시 예에서, 새로운 메모리 액세스(예를 들어, 읽기 또는 쓰기)가 메모리 어드레스로 발생한 경우, RAS 회로(212)는 메모리 어드레스가 어드레스 테이블(202)에 포함되었는지(따라서 에러와 연관되는지)를 체크한다. 만약 그렇지 않다면, 메모리 액세스는 정상적으로 처리된다. 메모리 액세스는 메모리 셀들(214)에 의해 이행된다. 메모리 어드레스가 에러와 연관된 경우, 메모리 액세스는 보조 스토리지(222), 특히 어드레스 테이블(220)에 의해 맵핑된 어드레스의 부분에 의해 이행된다.
이러한 실시 예에서, 배드 메모리 어드레스로의 모든 메모리 액세스들은 보조 스트로지(222)에 의해 (프로세서(204) 또는 호스트 장치(206))로 매끄럽게 이행될 수 있다. 이러한 실시 예에서, 프로세서(204)가 클라이언트와 결합된 도중이더라도 이것이 달성될 수 있다. 프로세서(204)가 결합해제되거나, 사용되지 않거나, 또는 재부착의 일부일 때까지 기다릴 필요가 없다. 두 번째로, 특정 메모리 어드레스들을 보조 스토리지(222)로 리맵핑함으로써, HBM 다이들(202)의 스토리지 용량이 감소되지 않는다. 블랙리스트에 올리는 것 없이, HBM 다이들(202)은 동일한 크기의 스토리지 용량을 갖는 것으로 나타난다. 세 번째로, RAS 회로(212)는 다양한 메모리 맵핑의 단위들을 제공할 수 있다. 종래의 방법이 4KB 페이지의 블랙리스팅 및 리타이어를 필요로 하는 반면에, RAS 회로(212)는 캐시라인들, 페이지들, 또는 메모리의 다른 크기들의 맵핑을 허용할 수 있다.
다양한 실시 예들에서, 어드레스 테이블(220)로의 새로운 메모리 어드레스의 추가(화살표(286))는 미리 정해진 또는 예비 메모리 어드레스(predefined or reserved memory address)로의 쓰기 메모리 액세스를 수행하는 프로세서(204)(또는 호스트 장치(206))를 포함할 수 있다. 이러한 실시 예에서, RAS 회로(212)는 이런 메모리 어드레스로 어떤 쓰기들이 새로운 엔트리가 어드레스 테이블(220)에 위치될 것임을 의미하는 것을 알 수 있다. 이러한 실시 예에서, 쓰기 메모리 액세스의 데이터 부분은 배드 메모리 어드레스를 포함할 수 있다. 다른 실시 예에서, 어드레스 테이블(220)로의 새로운 메모리 어드레스의 추가(화살표(286))는 새로운 메시지 타입 또는 프로토콜의 사용을 수반할 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
다양한 실시 예들에서, 프로세서(204) 또는 호스트 장치(242)는 다른 미리 정해진 또는 예비 메모리 어드레스로의 읽기 메모리 액세스를 수행함으로써, 리맵핑을 위해 가용한 또는 사용되는 보조 스토리지(222)가 얼마나 많은지 체크할 수 있다. 이러한 실시 예에서, RAS 스토리지는 보조 스토리지(222)의 현재 스토리지 용량 또는 사용 레벨로 레지스터 또는 메모리 어드레스를 업데이트할 수 있고, 원할 때마다, 프로세서(204) 또는 호스트 장치(206)는 메모리 어드레스로부터 읽을 수 있다. 다양한 실시 예들에서, 이것은, 이러한 공간이 가용한 것을 확인하기 위하여 화살표(286)의 동작 이전에 행해질 수 있다. 일부 실시 예들에서, 보조 스토리지(222)가 가득 차거나 또는 모두 사용 중인 경우, 프로세서(204) 및 호스트 장치(206)는 종래의 블랙리스팅/리타이어 기법을 사용할 수 있다. 다른 실시 예에서, 보조 스토리지(222)의 자유 용량을 체크하는 것은 새로운 메지시 타입 또는 프로토콜의 사용을 수반할 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
다양한 실시 예들에서, 시스템(200)이 초기화 될 때(예를 들어, 부트 업될 때), 정보가 HBM 다이들(202)로부터 (호스트 장치(206) 또는 프로세서(204) 중 어느 하나에 의해) 읽어질 수 있다. 일 실시 예에서, HBM 다이(202)가 RAS 회로(212)를 지원하거나 또는 포함하는지 판별될 수 있다. 일 실시 예에서, 사용되는 리맵핑 단위의 레벨(예를 들어, 256 비트, 512 비트 등)이 무엇인지 판별될 수 있다. 다른 실시 예에서, 캐시 또는 보조 스토리지(222) 엔트리들 및/또는 어드레스 테이블 엔트리들(220)이 어떻게 지원되지는지 판별될 수 있다. 다양한 실시 예들에서, 이러한 확인들은 미리 정해진 또는 예비 어드레스들로의 읽기 메모리 액세스들에 의해 또는 특정 메시지 또는 프로토콜들에 의해 행해질 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
마찬가지로, 다양한 실시 예들에서, 시스템(200)이 초기화 될 때(예를 들어, 부트 업될 때), 정보 또는 셋팅들이 HBM 다이들(220)로 (호스트 장치(206) 또는 프로세서(204) 중 어느 하나에 의해) 기입될 수 있다. 일 실시 예에서, 배드 메모리 어드레스들의 기존 리스트가 (예를 들어, 불휘발성 메모리(236)로부터) 어드레스 테이블(220)로 기입될 수 있다. 다른 실시 예에서, 리맵핑 단위의 레벨(예를 들어, 256 비트, 512 비트 등)이 보조 스토리지(222)에 대하여 설정될 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
도 2c는 본 발명의 실시 예에 따른 시스템(201)의 예시적인 실시 예의 블록도이다. 다양한 실시 예들에서, 시스템(201)은 기재된 실시 예들의 다른 변형을 보여준다.
이러한 실시 예에서, 호스트 장치(206) 및 프로세서(204)는 앞서 설명된 바와 동일한 구성 요소들을 포함할 수 있다. HBM 다이들(202), 특히 로직 다이는 자체 ECC 엔진(294)을 포함할 수 있다. 이러한 실시 예에서, HBM 다이들(202)은, 호스트 장치(206) 및 프로세서(204)의 도움 없이, 메모리 셀들(214) 내의 에러를 검출하고, 보조 스토리지(222)로 배드 메모리 어드레스(들)을 리맵핑할 수 있다. 다양한 실시 예들에서, 불휘발성 메모리들의 사용을 통해, 리맵핑된 것이 실질적으로 영구적으로 유지될 수 있다. 다른 실시 예들에서, 비록 이것이 덜 효율적이거나 바람직하지 않을 수 있으나, 리맵핑이 매 리부팅 이후에 발행될 수 있다.
이러한 실시 예에서, ECC 엔진(294)은 ECC 엔진(234) 대신에 에러를 검출할 수 있다. 이러한 실시 예에서, 호스트 장치(206) 및 프로세서(204)는 이러한 에러를 인식하지 못할 수 있다. 다양한 실시 예들에서, 호스트 장치(206) 및 프로세서(204)는 상술된 종래의 블랙리스팅/리타이어 기법을 계속 사용할 수 있으나, HBM 다이들(202)의 내부 개선 활동들로 인하여, 블랙리스팅/리타이어가 발생하지 않거나 또는 매주 드물게 나타날 수 있다.
다양한 실시 예들에서, 화살표(292)에 의해 도시된 바와 같이, HBM 다이들(202)의 ECC 엔진(294)은 배드 메모리 어드레스를 어드레스 테이블(220)로 추가할 수 있다. 배드 메모리 어드레스는, 이후에, 보조 스토리지(222)의 부분에 맵핑될 수 있고, 향후 메모리 액세스는 상술된 바와 같이 발생할 수 있다.
도 3은 본 발명의 실시 예에 따른 데이터 구조들(300, 302)의 예시적인 실시 예의 블록도이다. 도시된 실시 예에서, 데이터 구조들(300, 302)은, 상술된 바와 같이, RAS 회로의 테이블들 및 스토리지를 나타낼 수 있다.
도시된 실시 예에서, 데이터 구조(300)는 상술된 어드레스 테이블 또는 인덱스 영역의 하나의 가능한 실시 예를 나타낼 수 있다. 이러한 실시 예에서, 데이터 구조(300)(어드레스 테이블 또는 인덱스 테이블)는 배드 또는 에러난 메모리 어드레스(또는 페이지와 같은 메모리 영역)을 저장하도록 구성될 수 있다. 다양한 실시 예들에서, 이러한 배드 메모리 어드레스들은 호스트 장치 또는 프로세서로부터 수신될 수 있다. 다양한 실시 예들에서, 데이터 구조(300)는 ECC의 자체 형태에 의해 보호될 수 있다.
도시된 실시 예에서, 데이터 구조(300)의 각 행은 메모리 어드레스 엔트리로 간주될 수 있다. 이러한 실시 예에서, 데이터 구조(300)는 어느 메모리 어드레스가 배드인지를 가리키는 열(312)을 포함할 수 있다. 이는 메모리 액세스가 발생 할 때 체크되어 상술된 바와 같이, 메모리 액세스가 HBM 메모리 셀들에 의해 이행될 수 있는지 또는 보조 스토리지에 의해 이행될 수 있는지를 판별하는 열(312)일 수 있다.
도시된 실시 예에서, 각 메모리 어드레스 엔트리는 유효 비트 또는 플래그 열(314)을 포함할 수 있다. 이러한 실시 예에서, 유효 플래그(314)는 각각의 메모리 어드레스 엔트리가 사용 중인지를 가리킬 수 있다. 이러한 실시 예에서, 호스트 또는 프로세서가 데이터 구조(300)로 엔트리를 기입할 때, 유효 플래그(314)가 설정될 수 있다. 다른 실시 예에서, 데이터 구조(300)는 주기적으로(예를 들어, 재부팅의 일부로서) 소거될 수 있고, 유효 플래그(314)를 포함하지 않을 수 있다.
다양한 실시 예들에서, 각 메모리 어드레스 엔트리는 타입 필트의 열(미도시)을 포함할 수 있다. 이러한 실시 예에서, 에러 개선이 모든 어드레스들을 통해 균일하거나 또는 동일한 크기(예를 들어, 워드 또는 행 기반)기 때문에, 타입 필트의 열은 포함되지 않을 수 있다. 그러나, 도시된 실시 예에서, 각 어드레스는 1-비트, 1-워드, 또는 다양한 개수의 비트들과 같이 에러 개선의 다른 레벨, 크기, 또는 타입과 연관될 수 있다. 일부 실시 예에서, 타입 필트의 열은 교정된 메모리 어드레스를 지난 비트 수를 포함할 수 있다. 그러나, 도시된 실시 예에서, 1 비트의 경우 값1, 1 워드의 경우 값2, 등등과 같이 미리 정해진 값이 사용될 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에서, 각 메모리 어드레스 엔트리는 맵핑된 어드레스 열(316)을 포함할 수 있다. 이러한 실시 예에서, 맵핑된 어드레스(316)는 배드 메모리 어드레스(열(312))와 연관된 데이터가 실제 저장되는 보조 스토리지내의 메모리 어드레스 또는 위치일 수 있다. 이러한 실시 예에서, 메모리 액세스가 배드 메모리 어드레스에 발생하는 경우, 액세스는 예비 스토리지로 리디렉션 될 뿐 아니라 매핑된 메모리 어드레스(316)에 다시 주소 지정된다. 다양한 실시 예들에서, 이는 고정 맵핑일 수 있다. 도시된 실시 예에서, 맵핑은 1 대 1일 수 있다. 그러나 다른 실시 예에서, 맵핑은 연관성을 갖도록 설정되거나 또는 다른 방식을 사용할 수 있다.
도시된 실시 예에서, 데이터 구조(300)는 1 또는 Set의 유효 플래그를 갖고, 어드레스(#M1)으로 맵핑된 메모리 어드레스 엔트리(Address #1)를 포함할 수 있다. 마찬가지로, 메모리 어드레스 엔트리(Address #2)는 1 또는 Set의 유효 플래그를 포함할 수 있고, 어드레스(#M2)로 맵핑될 수 있다. 다수의 다른 메모리 어드레스 엔트리들이 존재할 수 있다. 마지막으로, 메모리 어드레스 엔트리(Address #N)는 0 또는 Cleared의 유효 플래그를 포함할 수 있고, 어드레스(#MN)로 맵핑될 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에서, 데이터 구조(302)는 복수의 메모리 셀들을 포함할 수 있고, 복수의 메모리 셀들 각각은 각각의 메모리 어드레스에서 데이터를 저장하도록 구성될 수 있다. 다양한 실시 예들에서, 데이터 구조(302)는 ECC 보호를 사용할 수 있다. 상술된 바와 같이, 배드 메모리 어드레스들로의 쓰기 메모리 액세스들이 발생한 경우, 새로운 데이터는 보조 스토리지 또는 데이터 구조(302)(예를 들어, Data #1, Data #2, Data #N)에 저장될 수 있다. 상술된 바와 같이, 데이터가 저장되는 위치는 메모리 어드레스 엔트리들에 기반될 수 있다.
다양한 실시 예들에서, 데이터 구조(302)는 임의의 크기일 수 있다. 이러한 실시 예에서, 데이터 구조(302)는 150KB를 포함할 수 있으나, 이는 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다. 다양한 실시 예들에서, 단위의 레벨은 가변되는 크기(예를 들어, 256 비트)일 수 있다.
일부 실시 예들에서, RAS 회로는 다른 크기들 또는 에러 패턴들을 수용하기 위한 복수의 데이터 구조(302, 300)를 포함할 수 있다. 예를 들어, 다양한 실시 예들에서, RAS 회로는 싱글 비트 데이터 에러들, 싱글 워드 데이터 에러들, 싱글 로우 데이터 에러들, 및/또는 싱글 컬럼 데이터 에러들의 에러 패턴들을 수용하고 그것들을 위한 데이터 구조들을 포함할 수 있다. 이는 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
도 4a는 본 발명의 실시 예에 따른 시스템(400)의 예시적인 실시 예의 블록도이다. 도시된 실시 예에서, 쓰기 메모리 액세스가 도시된다. 이는 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에서, 시스템(400)은, 상술된 바와 같이, 프로세서(204) 및 HBM 다이들(202)을 포함할 수 있다. 다양한 실시 예들에서, 프로세서(204)는 메모리 컨트롤러(232)를 포함할 수 있다. HBM 다이들(202)은, 상술된 바와 같이, HBM 어레이 또는 메모리 셀들(214)(ECC 스토리지를 포함할 수 있음), 및 RAS 회로(212)를 포함할 수 있다. 도시된 실시 예에서, RAS 회로(212)는, 상술된 바와 같이, 인덱스 영역 또는 어드레스 테이블(220), 및 RAS 또는 보조 스토리지(222)를 포함할 수 있다. 도시된 실시 예에서, 시스템(400)은 커맨드 버스(412) 및 데이터 버스(414)를 더 포함할 수 있다.
도시된 실시 예에서, 메모리 컨트롤러(232)는 HBM 다이들(202)로의 쓰기 메모리 액세스를 발행할 수 있다. 이러한 실시 예에서, 커맨드 자체(및 메모리 어드레스)는 커맨드 버스(412)에 의해 전송될 수 있고, 기입될 데이터는 데이터 버스(414)에 의해 전송될 수 있다. 이는 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
쓰기 메모리 액세스가 수신된 경우, RAS 회로(212)는 메모리 액세스와 연관된 메모리 어드레스가 어드레스 테이블(220)에 기입되었는지 (그리고 유효한지)를 판별할 수 있다. 어드레스 테이블(220)은 어드레스 테이블 히트(어드레스가 기입된 경우), 또는 어드레스 테이블 미스(어드레스가 기입되지 않은 경우)를 생성할 수 있다. 이는 신호(424)에 의해 도시된다.
도시된 실시 예에서, RAS 회로(212)는 디-멀티플렉서(DeMUX; demultiplexer) 또는 라우팅 회로(420)를 포함할 수 있다. 라우팅 회로(420)는, 어드레스 테이블 히트/미스(424)에 따라, 데이터를 메모리 셀들(214) 또는 보조 스토리지(222) 중 어느 하나로 전송하도록 구성될 수 있다. 상술된 바와 같이, 어드레스 테이블 히트가 발생한 경우, 라우팅 회로(420)는 기입될 데이터를 보조 스토리지로 전송할 수 있다(화살표(434)에 의해 도시됨). 마찬가지로, 어드레스 테이블(220)은 맵핑된 메모리 어드레스(432)를 생성하고, 그것을 보조 스토리지(222)로 전송할 수 있다. 반대로 또한 상술한 바와 같이, 어드레스 테이블 미스가 발생한 경우, 라우팅 회로(420)는 기입될 데이터를 메모리 셀들(214)로 전송할 수 있다(화살표(436)에 의해 도시됨). 마찬가지로, 도시되지는 않았으나, 커맨드 버스(412)로부터의 메모리 어드레스는 데이터를 저장하는데 메모리 셀들(214)에 의해 사용될 수 있다.
다양한 실시 예들에서, 어드레스 테이블 히트/미스 발생과 무관하게, 데이터는 메모리 셀들에 항상 기입될 수 있다. 이러한 실시 예에서, 메모리 셀들(214)로의 메모리 액세스들을 수행하는 로직은 RAS 회로(212)의 추가를 수용하도록 변경 될 필요가 없다. 이러한 실시 예들에서, 어드레스 테이블 히트가 발생한 경우, 데이터는 메모리 셀들(214) 및 보조 스토리지(222) 모두에 기입될 수 있으나, 메모리 셀들(214)의 데이터는 이하에서 도시된 바와 같이 무시될 수 있다. 이는 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
도 4b는 본 발명의 실시 예에 따른 시스템(401)의 예시적인 실시 예의 블록도이다. 도시된 실시 예에서, 읽기 메모리 액세스가 도시된다. 이는 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
도시된 실시 예에서, 시스템(401)은 상술된 바와 같이, 프로세서(204) 및 HBM 다이들(202)을 포함할 수 있다. 다양한 실시 예들에서, 프로세서(204)는 메모리 컨트롤러(232)를 포함할 수 있다. HBM 다이들(202)은, 상술된 바와 같이, HBM 어레이 또는 메모리 셀들(214)(ECC 스토리지를 포함할 수 있음), 및 RAS 회로(212)를 포함할 수 있다. 도시된 실시 예에서, RAS 회로(212)는, 상술된 바와 같이, 인덱스 영역 또는 어드레스 테이블(220), 및 RAS 또는 보조 스토리지(222)를 포함할 수 있다. 도시된 실시 예에서, 시스템(400)은 커맨드 버스(412) 및 데이터 버스(414)를 더 포함할 수 있다.
도시된 실시 예에서, 메모리 컨트롤러(232)는 HBM 다이들(202)로의 읽기 메모리 액세스를 발행할 수 있다. 이러한 실시 예에서, 커맨드 자체(및 메모리 어드레스)는 커맨드 버스(412)에 의해 전송될 수 있고, 데이터는 데이터 버스(414)에 의해 반환될 것이다. 이는 단순히 하나의 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
읽기 메모리 액세스가 수신된 경우, RAS 회로(212)는 메모리 액세스와 연관된 메모리 어드레스가 어드레스 테이블(220)에 기입되었는지(그리고 유효한지)를 판별할 수 있다. 어드레스 테이블(220)은 어드레스 테이블 히트(어드레스가 기입된 경우), 또는 어드레스 테이블 미스(어드레스가 기입되지 않은 경우)를 생성할 수 있다. 이는 신호(424)에 의해 도시된다.
도시된 실시 예에서, RAS 회로(212)는 멀티플렉서(MUX; multiplexer), 게이팅, 또는 라우팅 회로(470)를 포함할 수 있다. 라우팅 회로(470)는 어드레스 테이블 히트/미스(424)에 따라 메모리 셀들(214) 또는 보조 스토리지(222) 중 하나로부터의 데이터를 데이터 버스(414)로 전송하도록 구성될 수 있다. 상술된 바와 같이, 어드레스 히트가 발생한 경우, 라우팅 회로(470)는 보조 스토리지로부터 회수된 데이터(화살표(474)에 의해 도시됨)를 데이터 버스(414)로 전송할 수 있다. 마찬가지로, 어드레스 테이블(220)은 맵핑된 메모리 어드레스(432)를 생성하고, 그것을 보조 스토리지(222)로 전송할 수 있다. 반대로 또한 상술된 바와 같이, 어드레스 테이블 미스가 발생한 경우, 라우팅 회로(470)는 메모리 셀들(214)로부터 회수된 데이터(화살표(476)에 의해 도시됨)를 데이터 버스(414)로 전송할 수 있다. 마찬가지로, 도시되지는 않았으나, 커맨드 버스(412)로부터의 메모리 어드레스는 데이터를 회수하는데 메모리 셀들(214)에 의해 사용될 수 있다.
다양한 실시 예들에서, 상술된 바와 같이, 어드레스 테이블 히트/미스 발생과 무관하게, 데이터는 메모리 셀들에 항상 기입될 수 있다. 이러한 실시 예에서, 데이터가 메모리 셀들(214) 중 배드 또는 에러가 난 메모리 어드레스에 저장되더라도, 라우팅 회로(470)는 배드 또는 에러가 난 데이터가 데이터 버스(414)에 존재하는 것을 방지할 수 있다. 대신에, 보조 스토리지(222)로부터의 유용한 데이터(good data)가 사용될 수 있다. 이러한 실시 예에서, 데이터는 메모리 셀들(214)로부터 항상 읽어질 수 있고, 이후에, 라우팅 회로(470)에 의해 게이팅될 수 있다.
도 5는 본 발명의 실시 예의 원리들에 따라 형성된 반도체 장치들을 포함할 수 있는 정보 처리 시스템(500)의 개념적인 블록도이다.
도 5를 참조하면, 정보 처리 시스템(500)은 본 발명의 실시 예들의 원리들에 따라 구성된 하나 또는 그 이상의 장치들을 포함할 수 있다. 다른 실시 예에서, 정보 처리 시스템(500)은 본 발명의 실시 예들의 원리들에 따른 하나 또는 그 이상의 기법들을 사용하거나 또는 실행할 수 있다.
다양한 실시 예들에서, 정보 처리 시스템(500)은, 예를 들어, 랩탑, 데스크탑, 워크스테이션, 서버, 블레이드 서버, PDA(personal digital assistant), 스마트폰, 태블릿, 및 다른 적절한 컴퓨터들과 같은 컴퓨팅 장치, 또는 가상 머신, 또는 그것들의 가상 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예들에서, 정보 처리 시스템(500)은 사용자(미도시)에 의해 사용될 수 있다.
본 발명에 따른 정보 처리 시스템(500)은 중앙 처리 유닛(CPU; central processing unit), 로직, 또는 프로세서(510)를 더 포함할 수 있다. 일부 실시 예들에서, 프로세서(510)는 하나 또는 그 이상의 기능 유닛 블록들(FUBs) 또는 조합 로직 블록들(CLBs)(515)을 포함할 수 있다. 이러한 실시 예들에서, 조합 로직 블록은 다양한 불 방식의 로직 동작들(예를 들어, NAND, NOR, NOT, XOR), 안정화 로직 장치들(예를 들어, 플립-플롭들, 래치들), 다른 로직 장치들, 또는 그것들의 조합을 포함할 수 있다. 이러한 조합 로직 동작들은 단순하거나 또는 복잡한 방식으로 입력 신호들을 처리하여 의도된 결과를 달성하도록 구성될 수 있다. 동기식 조합 로직 동작들의 일부 예시적인 실시 예들이 설명되었으나, 본 발명이 이에 한정되는 것은 아니며, 비동기식 동작들, 또는 그것들의 조합을 포함할 수 있음이 이해될 것이다. 일 실시 예에서, 조합 로직 동작들은 복수의 CMOS(complementary metal oxide semiconductors) 트랜지스터들을 포함할 수 있다. 다양한 실시 예들에서, 이러한 CMOS 트랜지스터들은 로직 동작들을 수행하는 게이트들로 정렬될 수 있으나, 단, 본 발명의 범위에 속하는 다른 기술들이 사용될 수 있음이 이해된다.
본 발명에 따른 정보 처리 시스템(500)은 휘발성 메모리(520)(예를 들어, 랜덤 액세스 메모리(RAM; random access memory))를 더 포함할 수 있다. 본 발명에 따른 정보 처리 시스템(500)은 불휘발성 메모리(530)(예를 들어, 하드 드라이브, 광 메모리, NAND 또는 플래시 메모리)를 더 포함할 수 있다. 일부 실시 예들에서, 휘발성 메모리(520), 불휘발성 메모리(530), 또는 그것들의 조합 또는 일부들은 "저장 매체(storage medium)"으로 지칭될 수 있다. 다양한 실시 예들에서, 휘발성 메모리(520) 및/또는 불휘발성 메모리(530)는 반-영구적인 또는 실질적으로 영구적인 형태로 데이터를 저장하도록 구성될 수 있다.
다양한 실시 예들에서, 정보 처리 시스템(500)은 정보 처리 시스템(500)이 통신 네트워크의 일부가 되고 이 통신 네트워크를 통해 통신하도록 구성된 하나 또는 그 이상의 네트워크 인터페이스(540)를 포함할 수 있다. Wi-Fi 프로토콜의 예시들은 IEEE(Institute of Electrical and Electronics Engineers) 802.11g, IEEE 802.11n을 포함할 수 있으나, 이에 한정되지 않는다. 셀룰러 프로토콜의 예시들은 IEEE 802.16m (일명, Wireless-MAN (Metropolitan Area Network) Advanced), LTE(Long Term Evolution) Advanced, Enhanced Data rates for GSM(Global System for Mobile Communications) Evolution (EDGE), Evolved High-Speed Packet Access(HSPA+)을 포함할 수 있으나, 이에 한정되지 않는다. 유선 프로토콜의 예시들은 IEEE 802.3(일명, Ethernet), 파이버 채널(Fibre Channel), 전력 라인 통신(Power Line communication)(예를 들어, 홈 플러그, IEEE 1901)를 포함할 수 있으나, 이에 한정되지 않는다. 상술된 내용은 단순히 일부 예시적인 실시 예들이며, 본 발명이 이에 한정되지 않음은 이해될 것이다.
본 발명에 따른 정보 처리 시스템(500)은 사용자 인터페이스 유닛(550)(예를 들어, 디스플레이 어댑터, 햅틱 인터페이스, 휴먼 인터페이스 장치)를 더 포함할 수 있다. 다양한 실시 예들에서, 이러한 사용자 인터페이스 유닛(550)은 사용자로부터 입력을 수신하거나 또는 사용자로 출력을 제공하도록 구성될 수 있다. 다른 종류의 장치들이 사용자와의 상호 작용을 제공하는데 사용될 수 있으며, 예를 들어, 사용자로 제공되는 피드백은 감각 피드백(sensory feedback)의 형태(예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백)일 수 있고, 사용자로부터의 입력은 소리, 음성, 또는 촉각 입력의 형태로 수신될 수 있다.
다양한 실시 예들에서, 정보 처리 시스템(500)은 하나 또는 그 이상의 다른 장치들 또는 하드웨어 구성들(560)(예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 프로세서)를 포함할 수 있다. 상술된 내용은 단순히 일부 예시적인 실시 예이며, 본 발명이 이에 한정되지 않음이 이해될 것이다.
본 발명에 따른 정보 처리 시스템(500)은 하나 또는 그 이상의 시스템 버스들(505)을 더 포함할 수 있다. 이러한 실시 예에서, 시스템 버스(505)는 프로세서(510), 휘발성 메모리(520), 불휘발성 메모리(530), 네트워크 인터페이스(540), 사용자 인터페이스 유닛(550), 및 하나 또는 그 이상의 하드웨어 구성들(560)을 통신적으로 연결하도록 구성될 수 있다. 프로세서(510)에 의해 처리된 데이터 또는 불휘발성 메모리(530)의 외부로부터 입력된 데이터는 불휘발성 메모리(530) 또는 휘발성 메모리(520) 중 어느 하나에 저장될 수 있다.
다양한 실시 예들에서, 정보 처리 시스템(500)은 하나 또는 그 이상의 소프트웨어 구성들(570)을 포함하거나 또는 실행할 수 있다. 일부 실시 예들에서, 소프트웨어 구성들(570)은 운영 체제(OS; operating system) 및/또는 애플리케이션을 포함할 수 있다. 일부 실시 예들에서, OS는 하나 또는 그 이상의 서비스들을 애플리케이션으로 제공하고, 애플리케이션 및 정보 처리 시스템(500)의 다양한 하드웨어 구성들(예를 들어, 프로세서(510, 네트워크 인터페이스(540)) 사이의 중재자(intermediary)로서 관리하거나 또는 동작할 수 있다. 이러한 실시 예에서, 정보 처리 시스템(500)은 지역적으로(예를 들어, 불휘발성 메모리(530) 내에) 설치될 수 있고 프로세서(510)에 의해 직접적을 실행되고 OS와 직접적으로 상호 작용하도록 구성된 하나 또는 그 이상의 네이티브 애플리케이션들을 포함할 수 있다. 이러한 실시 예들에서, 네이티브 애플리케이션들은 미리-컴파일된 머신 실행 가능한 코드(pre-compiled machine executable code)를 포함할 수 있다. 일부 실시 예들에서, 네이티브 애플리케이션들은 소스 또는 객체 코드를 프로세서(510)에 의해 실행되는 실행 가능한 코드로 변환하도록 구성된 VM(virtual execution machine)(예를 들어, the Java Virtual Machine, the Microsoft Common Language Runtime) 또는 스크립트 해석기(script interpreter)(예를 들어, csh(C shell), AppleScript, AutoHotkey) 포함할 수 있다.
상술된 반도체 장치들은 다양한 패키징 기법들을 사용하여 캡슐화될 수 있다. 예를 들어, 본 발명의 기술적 사상에 따라 구성된 반도체 장치들은 POP(package on package) 기법, BGA(ball grid array) 기법, CSP(chip scale package) 기법, PLCC(plastic leaded chip carrier) 기법, PDIP(plastic dual in-line package) 기법, 다이 인 와플 팩 기법(die in waffle pack technique), 다이 인 웨이퍼 형성 기법(die in wafer form technique), COB(chip on board) 기법, CERDIP(ceramic dual in-line package) 기법, PMQFP(plastic metric quad flat package) 기법, PQFP(plastic quad flat package) 기법, SOIC(small outline package) 기법, SSOP(shrink small outline package) 기법, TSOP(thin small outline package) 기법, TQFP(thin quad flat package) 기법, SIP(system in package) 기법, MCP(multi-chip package) 기법, WFP(wafer-level fabricated package) 기법, WSP(wafer-level processed stack package) 기법, 또는 당업자에 의해 잘 알려진 다른 기법들 중 어느 하나를 사용하여 캡슐화될 수 있다.
방법의 단계들은 컴퓨터 프로그램을 실행하여 입력 데이터 에 대해 동작하거나 또는 출력을 생성함으로써 기능들을 수행하는 하나 또는 그 이상의 프로그램 가능상 프로세서들에 의해 수행될 수 있다. 방법의 단계들은 또한 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)같은 특정 목적 로직 회로에 의해 수행될 수 있으며, 장치들은 특정 목적 로직 회로로 구현될 수 있다. .
다양한 실시 예들에서, 컴퓨터 판독 가능한 매체는 명령어들을 포함할 수 있고, 명령어들이 실행되는 경우, 장치는 방법의 단계들의 적어도 일부를 수행할 수 있다. 일부 실시 예들에서, 컴퓨터 판독 가능한 매체는 자기 매체(magnetic medium), 광 매체(optical medium), 다른 매체, 또는 그것들의 조합(예를 들어, CD-ROM, 하드 드라이브, 읽기-전용-메모리, 플래시 드라이브)에 포함될 수 있다. 이러한 실시 예에서, 컴퓨터 판독 가능한 매체는 명확하게 그리고 비-일시적으로 형상화된 제조품일 수 있다.
본 발명의 기술적 사상이 예시적인 실시 예들을 참조하여 설명되었으나, 당업자는 본 발명의 사상 및 범위로부터의 벗어남 없이 다양한 변형들 및 변화들을 행할 수 있을 것이다. 그러므로 상술된 실시 예들은 오직 설명을 위한 것이며, 제한되지 않음이 이해될 것이다. 본 발명의 범위은 이하의 특허청구범위 및 그것의 균등물들의 가장 넓게 허용되는 해석에 의해 결정되어야 하고, 앞선 설명들에 의해 제한되거나 또는 한정되어서는 안된다. 그러므로 첨부된 특허청구범위는 실시 예들의 범위 내에서 이러한 변형들 및 수정들 모두를 포함하는 것으로 의도됨이 이해될 것이다.

Claims (20)

  1. 장치에 있어서,
    복수의 적층된 집적 회로 다이들을 포함하고,
    상기 복수의 적층된 집적 회로 다이들은:
    메모리 어드레스를 기반으로 랜덤 액세스 방식으로 데이터를 저장하도록 구성된 메모리 셀 다이; 및
    로직 다이를 포함하고,
    상기 로직 다이는:
    상기 복수의 적층된 집적 회로 다이들과 연결되고, 상기 메모리 셀 다이 및 적어도 하나의 외부 장치 사이에서 메모리 액세스들을 통신하도록 구성된 인터페이스; 및
    상기 메모리 셀 다이 내의 데이터 에러들을 개선하도록 구성된 신뢰성 회로를 포함하고,
    상기 신뢰성 회로는:
    랜덤 액세스 방식으로 데이터를 저장하도록 구성된 보조 메모리; 및
    에러와 연관된 메모리 어드레스를 상기 보조 메모리의 부분으로 맵핑하도록 구성된 어드레스 테이블을 포함하고,
    상기 신뢰성 회로는, 상기 복수의 적층된 집적 회로 다이들로의 메모리 액세스가 발생한 경우, 상기 메모리 액세스가 에러와 연관되는지 판별하고, 상기 메모리 액세스가 상기 에러와 연관된 경우, 적어도 부분적으로 상기 보조 메모리를 사용하여 상기 메모리 액세스를 완료하도록 구성된 장치.
  2. 제 1 항에 있어서,
    상기 어드레스 테이블은:
    상기 어드레스 테이블에 에러들로부터 보호하는 에러 정정 코드 부분; 및
    각 메모리 어드레스 엔트리에 대하여, 상기 메모리 어드레스 엔트리가 활성 상태인지를 가리키도록 구성된 유효 플래그를 포함하는 장치.
  3. 제 1 항에 있어서,
    상기 신뢰성 회로는:
    데이터가 메모리 어드레스에서 저장됨을 가리키는 쓰기 메모리 액세스를 외부 장치로부터 수신하고;
    상기 메모리 어드레스가 에러와 연관되는지 판별하고;
    상기 메모리 어드레스가 에러와 연관되는 경우, 상기 데이터를 상기 보조 메모리의 부분에 기입하고;
    상기 메모리 어드레스가 에러와 연관되지 않는 경우, 상기 데이터를 상기 어드레스에서 상기 메모리 셀 다이에 기입하도록 구성된 장치.
  4. 제 3 항에 있어서,
    상기 신뢰성 회로는 상기 메모리 어드레스가 메모리 어드레스 엔트리로서 상기 어드레스 테이블에 저장되었는지 판별하고, 유효 플래그가 상기 메모리 어드레스 엔트리가 활성화되었음을 가리키는지 판별함으로써, 상기 메모리 어드레스가 에러와 연관되는지 판별하도록 구성된 장치.
  5. 제 1 항에 있어서,
    상기 신뢰성 회로는:
    데이터가 메모리 어드레스로부터 읽어짐을 가리키는 읽기 메모리 액세스를 외부 장치로부터 수신하고;
    상기 메모리 어드레스가 에러와 연관되는지 판별하고;
    상기 메모리 어드레스가 에러와 연관되는 경우, 상기 보조 메모리의 부분으로부터 상기 데이터를 회수하고;
    상기 메모리 어드레스가 에러와 연관되지 않는 경우, 상기 메모리 어드레스에서 상기 메모리 셀 다이로부터 상기 데이터를 회수하도록 구성된 장치.
  6. 제 1 항에 있어서,
    상기 신뢰성 회로는:
    메모리 어드레스가 에러와 연관됨을 가리키는 메시지를 외부 장치로부터 수신하고;
    상기 어드레스 테이블에 상기 메모리 어드레스를 위치시키고;
    상기 메모리 어드레스를 상기 보조 메모리의 상기 부분과 연관시키도록 구성된 장치.
  7. 제 6 항에 있어서,
    상기 신뢰성 회로는 미리 정해진 메모리 어드레스로의 쓰기 메모리 액세스를 수신함으로써, 상기 메모리 어드레스가 에러와 연관됨을 가리키는 메시지를 외부 장치로부터 수신하도록 구성되고,
    상기 미리 정해진 메모리 어드레스는 상기 어드레스 테이블과 연관된 장치.
  8. 제 1 항에 있어서,
    상기 신뢰성 회로는:
    상기 보조 메모리의 사용 레벨을 감시하고;
    미리 정해진 메모리 어드레스에 상기 사용 레벨의 지시기를 저장하도록 구성되고,
    상기 인터페이스는:
    상기 미리 정해진 메모리 어드레스로의 읽기 메모리 액세스를 수신하고;
    상기 보조 메모리의 상기 사용 레벨의 상기 지시기로 상기 읽기 메모리 액세스에 응답하도록 구성되는 장치.
  9. 장치에 있어서,
    프로세서; 및
    고-대역 메모리 스택의 집적 회로들을 포함하고,
    상기 프로세서는:
    상기 프로세서로의 데이터의 흐름을 관리하도록 구성된 메모리 컨트롤러; 및
    저장된 데이터에 대하여 에러가 발생하였는지 검출하도록 구성된 에러 정정 회로를 포함하고,
    상기 고-대역 메모리 스택의 집적 회로들은:
    메모리 어드레스를 기반으로 데이터를 저장하도록 구성된 고-대역 메모리 셀들; 및
    상기 고-대역 메모리 셀들 내의 데이터 에러들을 개선하도록 구성된 신뢰성 회로를 포함하고,
    상기 신뢰성 회로는:
    데이터를 저장하도록 구성된 보조 메모리; 및
    상기 에러와 연관된 메모리 어드레스를 상기 보조 메모리의 부분으로 맵핑하도록 구성된 어드레스 테이블을 포함하고,
    상기 신뢰성 회로는, 상기 고-대역 메모리 스택의 집적 회로들로의 메모리 액세스가 발생한 경우, 상기 메모리 액세스가 에러와 연관되는지 판별하고, 상기 메모리 액세스가 상기 에러와 연관된 경우, 적어도 부분적으로, 상기 보조 메모리를 사용하여 상기 메모리 액세스를 완료하도록 구성된 시스템.
  10. 제 9 항에 있어서,
    저장된 데이터에 에러가 발생한 경우, 상기 프로세서는:
    상기 보조 메모리가 상기 에러를 개선하는데 충분한 자유 용량을 포함하는지 판별하고;
    상기 보조 메모리가 상기 에러를 개선하는데 충분한 자유 용량을 포함하지 않는 경우, 상기 에러와 연관된 상기 메모리 어드레스를 블랙리스트에 올리고;
    상기 보조 메모리가 상기 에러를 개선하는데 충분한 자유 용량을 포함하는 경우, 상기 신뢰성 회로가 상기 에러와 연관된 상기 메모리 어드레스를 상기 보조 메모리의 부분으로 맵핑하도록 하는 시스템.
  11. 제 9 항에 있어서,
    상기 신뢰성 회로는:
    데이터가 메모리 어드레스에서 저장됨을 가리키는 쓰기 메모리 액세스를 상기 프로세서로부터 수신하고;
    상기 메모리 어드레스가 에러와 연관되는지 판별하고;
    상기 메모리 어드레스가 에러와 연관되는 경우, 상기 데이터를 상기 보조 메모리의 맵핑된 부분에 기입하고;
    상기 메모리 어드레스가 에러와 연관되지 않은 경우, 상기 데이터를 상기 메모리 어드레스에서 상기 고-대역 메모리 셀들에 기입하도록 구성된 시스템.
  12. 제 9 항에 있어서,
    상기 신뢰성 회로는:
    데이터가 메모리 어드레스로부터 읽어짐을 가리키는 읽기 메모리 액세스를 상기 프로세서로부터 수신하고;
    상기 메모리 어드레스가 에러와 연관되는지 판별하고;
    상기 메모리 어드레스가 에러와 연관되는 경우, 상기 데이터를 상기 보조 메모리의 맵핑된 부분으로부터 회수하고;
    상기 메모리 어드레스가 에러와 연관되지 않는 경우, 상기 데이터를 상기 메모리 어드레스에서 상기 고-대역 메모리 셀들로부터 회수하도록 구성된 시스템.
  13. 제 9 항에 있어서,
    상기 프로세서는 미리 정해진 메모리 어드레스로의 쓰기 메모리 액세스를 발행하도록 구성되고,
    상기 미리 정해진 메모리 어드레스는 상기 어드레스 테이블과 연관되고,
    상기 쓰기 메모리 액세스는 데이터의 일부로서 상기 에러와 연관된 상기 메모리 어드레스를 포함하고,
    상기 신뢰성 회로는:
    메모리 어드레스가 에러와 연관됨을 가리키는 메시지를 상기 프로세서로부터 수신하고;
    상기 메모리 어드레스를 상기 어드레스 테이블에 위치시키고;
    상기 메모리 어드레스를 상기 보조 메모리의 상기 부분과 연관시키도록 구성된 시스템.
  14. 제 9 항에 있어서,
    상기 신뢰성 회로는:
    상기 보조 메모리의 사용 레벨을 감시하고;
    미리 정해진 메모리 어드레스에서 상기 사용 레벨의 지시기를 저장하도록 구성되고,
    상기 프로세서는:
    상기 미리 정해진 메모리 어드레스로의 읽기 메모리 액세스를 발행하고;
    상기 읽기 메모리 액세스에 응답하여, 상기 보조 메모리의 상기 사용 레벨의 상기 지시기를 수신하도록 구성된 시스템.
  15. 제 9 항에 있어서,
    상기 프로세서는 각각의 에러들과 연관된 메모리 어드레스들의 리스트를 저장하도록 구성된 불휘발성 메모리를 포함하고,
    상기 에러 정정 회로가 에러가 저장된 데이터에 대하여 발생한 것을 검출한 경우, 상기 에러 정정 회로는 상기 에러와 연관된 상기 메모리 어드레스가 상기 불휘발성 메모리 및 상기 어드레스 테이블 모두에 의해 저장되도록 하는 시스템.
  16. 제 15 항에 있어서,
    상기 불휘발성 메모리는, 상기 시스템이 초기화될 때, 각각의 에러들과 연관된 상기 메모리 어드레스들의 상기 리스트의 각각을 상기 어드레스 테이블에 추가하도록 구성되고,
    상기 신뢰성 회로는 상기 메모리 어드레스들 각각을 상기 보조 메모리의 각각의 부분들로 맵핑하도록 구성된 시스템.
  17. 제 9 항에 있어서,
    상기 신뢰성 회로는 상기 프로세서를 리셋하는 것 없이 상기 고-대역 메모리 셀들 내의 데이터 에러들을 개선하도록 구성된 시스템.
  18. 장치에 있어서,
    로직 다이를 포함하고,
    상기 로직 다이는:
    메모리 어드레스를 기반으로 데이터를 저장하도록 구성된 고-대역 메모리 다이들과 연결된 내부 인터페이스;
    상기 고-대역 메모리 다이들 및 적어도 하나의 외부 장치 사이에서 메모리 액세스들을 통신하도록 구성된 외부 인터페이스; 및
    상기 고-대역 메모리 다이들 내의 데이터 에러들을 개선하도록 구성된 신뢰성 회로를 포함하고,
    상기 신뢰성 회로는:
    데이터를 저장하도록 구성된 보조 메모리; 및
    에러와 연관된 메모리 어드레스를 상기 보조 메모리의 부분과 맵핑시키도록 구성된 어드레스 테이블을 포함하고,
    상기 신뢰성 회로는, 상기 고-대역 메모리 다이들로의 메모리 액세스가 발생할 때, 상기 메모리 액세스가 에러와 연관되는지 판별하고, 상기 메모리 액세스가 에러와 연관되는 경우, 적어도 부분적으로, 상기 보조 메모리를 사용하여 상기 메모리 액세스를 완료하도록 구성된 장치.
  19. 제 18 항에 있어서,
    상기 신뢰성 회로는:
    데이터가 메모리 어드레스에서 저장됨을 가리키는 쓰기 메모리 액세스를 상기 적어도 하나의 외부 장치로부터 수신하고;
    상기 메모리 어드레스가 에러와 연관되는지 판별하고;
    상기 메모리 어드레스가 에러와 연관되는 경우, 상기 보조 메모리의 부분에 상기 데이터를 기입하고,
    상기 메모리 어드레스가 에러와 연관되지 않는 경우, 상기 메모리 어드레스에서 상기 고-대역 메모리 다이들로 상기 데이터를 기입하도록 구성된 장치.
  20. 제 18 항에 있어서,
    상기 신뢰성 회로는:
    데이터가 메모리 어드레스로부터 읽어짐을 가리키는 읽기 메모리 액세스를 상기 적어도 하나의 외부 장치로부터 수신하고;
    상기 메모리 어드레스가 에러와 연관되는지 판별하고;
    상기 메모리 어드레스가 에러와 연관되는 경우, 상기 보조 메모리의 맵핑된 부분으로부터 상기 데이터를 회수하고,
    상기 메모리 어드레스가 에러와 연관되지 않는 경우, 상기 메모리 어드레스에서 상기 고-대역 메모리 다이들로부터 상기 데이터를 회수하도록 구성된 장치.

KR1020190039290A 2018-07-02 2019-04-03 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조 KR102420098B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862692960P 2018-07-02 2018-07-02
US62/692,960 2018-07-02
US16/150,239 US11151006B2 (en) 2018-07-02 2018-10-02 HBM RAS cache architecture
US16/150,239 2018-10-02

Publications (2)

Publication Number Publication Date
KR20200003709A true KR20200003709A (ko) 2020-01-10
KR102420098B1 KR102420098B1 (ko) 2022-07-12

Family

ID=69055272

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190039290A KR102420098B1 (ko) 2018-07-02 2019-04-03 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조

Country Status (5)

Country Link
US (2) US11151006B2 (ko)
JP (1) JP7252845B2 (ko)
KR (1) KR102420098B1 (ko)
CN (1) CN110673980A (ko)
TW (1) TWI768200B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108511017B (zh) * 2018-04-02 2021-08-20 郑州云海信息技术有限公司 一种光媒介存储光媒介机构及系统
US11151006B2 (en) * 2018-07-02 2021-10-19 Samsung Electronics Co., Ltd. HBM RAS cache architecture
US10802967B1 (en) * 2019-06-28 2020-10-13 Intel Corporation Partial write management in a multi-tiled compute engine
EP3964940A4 (en) 2020-04-01 2022-08-17 Changxin Memory Technologies, Inc. READ/WRITE METHOD AND STORAGE DEVICE
CN113495671B (zh) 2020-04-01 2023-10-17 长鑫存储技术有限公司 读写方法及存储器装置
CN113495672B (zh) * 2020-04-01 2023-08-11 长鑫存储技术有限公司 读写方法及存储器装置
EP3964941B1 (en) 2020-04-01 2024-02-28 Changxin Memory Technologies, Inc. Read-write method and memory device
EP3936996A4 (en) 2020-04-01 2022-07-06 Changxin Memory Technologies, Inc. READ-WRITE METHOD AND STORAGE DEVICE
CN113495675B (zh) 2020-04-01 2023-08-11 长鑫存储技术有限公司 读写方法及存储器装置
CN113495674B (zh) * 2020-04-01 2023-10-10 长鑫存储技术有限公司 读写方法及存储器装置
EP3985494B1 (en) 2020-04-01 2024-01-17 Changxin Memory Technologies, Inc. Read-write method and memory device
KR20220034542A (ko) 2020-09-11 2022-03-18 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US11573905B2 (en) * 2021-01-21 2023-02-07 Vmware, Inc. Saving page retire information persistently across operating system reboots
US20240078195A1 (en) * 2022-09-01 2024-03-07 Advanced Micro Devices, Inc. Systems, methods, and devices for advanced memory technology

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070070121A (ko) * 2005-12-28 2007-07-03 실리콘 스토리지 테크놀로지 인크 통합 메모리 및 컨트롤러
US20140376320A1 (en) * 2013-06-25 2014-12-25 Advanced Micro Devices, Inc. Spare memory external to protected memory
US20150199126A1 (en) * 2014-01-10 2015-07-16 Advanced Micro Devices, Inc. Page migration in a 3d stacked hybrid memory
US20150199246A1 (en) * 2014-01-16 2015-07-16 Fujitsu Limited Memory device, storage method and control device
KR20160061899A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법
KR20160068305A (ko) * 2014-12-05 2016-06-15 삼성전자주식회사 어드레스 리매핑을 위한 적층형 메모리 장치, 이를 포함하는 메모리 시스템 및 어드레스 리매핑 방법
KR20170064626A (ko) * 2015-12-01 2017-06-12 삼성전자주식회사 불휘발성 메모리 모듈
KR20180051706A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139152A (ja) * 1992-10-27 1994-05-20 Kawasaki Steel Corp 記憶装置用入出力回路
JP3242890B2 (ja) * 1998-12-16 2001-12-25 株式会社ハギワラシスコム 記憶装置
DE102004047813A1 (de) * 2004-09-29 2006-03-30 Infineon Technologies Ag Halbleiterbaustein mit einer Umlenkschaltung
US20060080572A1 (en) 2004-09-30 2006-04-13 Fong John Y Set associative repair cache systems and methods
JP2006323739A (ja) * 2005-05-20 2006-11-30 Renesas Technology Corp メモリモジュール、メモリシステム、及び情報機器
US7647536B2 (en) 2005-12-30 2010-01-12 Intel Corporation Repair bits for a low voltage cache
US8898437B2 (en) 2007-11-02 2014-11-25 Qualcomm Incorporated Predecode repair cache for instructions that cross an instruction cache line
US8756486B2 (en) * 2008-07-02 2014-06-17 Micron Technology, Inc. Method and apparatus for repairing high capacity/high bandwidth memory devices
US9042191B2 (en) 2009-08-12 2015-05-26 Taiwan Semiconductor Manufacturing Company, Ltd. Self-repairing memory
US9292392B2 (en) 2011-06-30 2016-03-22 Hewlett Packard Enterprise Development Lp Memory module that includes a memory module copy engine for copying data from an active memory die to a spare memory die
US8867286B2 (en) * 2011-12-20 2014-10-21 Industrial Technology Research Institute Repairable multi-layer memory chip stack and method thereof
CN103377143B (zh) * 2012-04-27 2016-12-21 群联电子股份有限公司 存储器管理方法、存储器控制器与存储器存储装置
US9230609B2 (en) * 2012-06-05 2016-01-05 Rambus Inc. Memory bandwidth aggregation using simultaneous access of stacked semiconductor memory die
KR102025080B1 (ko) * 2013-01-02 2019-09-25 삼성전자 주식회사 스토리지 시스템 및 스토리지 시스템의 여분 공간 조절 방법
US9372750B2 (en) * 2013-11-01 2016-06-21 Qualcomm Incorporated Method and apparatus for non-volatile RAM error re-mapping
US9632867B2 (en) * 2014-12-08 2017-04-25 Cypress Semiconductor Corporation Methods, circuits, devices, systems and machine executable code for reading from a non-volatile memory array
CN106055420B (zh) * 2016-05-18 2019-07-16 东软医疗系统股份有限公司 一种数据校验方法、装置及设备
US10395748B2 (en) * 2016-06-15 2019-08-27 Micron Technology, Inc. Shared error detection and correction memory
US20180137005A1 (en) * 2016-11-15 2018-05-17 Intel Corporation Increased redundancy in multi-device memory package to improve reliability
US11151006B2 (en) * 2018-07-02 2021-10-19 Samsung Electronics Co., Ltd. HBM RAS cache architecture

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070070121A (ko) * 2005-12-28 2007-07-03 실리콘 스토리지 테크놀로지 인크 통합 메모리 및 컨트롤러
US20140376320A1 (en) * 2013-06-25 2014-12-25 Advanced Micro Devices, Inc. Spare memory external to protected memory
US20150199126A1 (en) * 2014-01-10 2015-07-16 Advanced Micro Devices, Inc. Page migration in a 3d stacked hybrid memory
US20150199246A1 (en) * 2014-01-16 2015-07-16 Fujitsu Limited Memory device, storage method and control device
KR20160061899A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법
KR20160068305A (ko) * 2014-12-05 2016-06-15 삼성전자주식회사 어드레스 리매핑을 위한 적층형 메모리 장치, 이를 포함하는 메모리 시스템 및 어드레스 리매핑 방법
KR20170064626A (ko) * 2015-12-01 2017-06-12 삼성전자주식회사 불휘발성 메모리 모듈
KR20180051706A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템

Also Published As

Publication number Publication date
JP2020009441A (ja) 2020-01-16
KR102420098B1 (ko) 2022-07-12
US11151006B2 (en) 2021-10-19
US20220035719A1 (en) 2022-02-03
US20200004652A1 (en) 2020-01-02
TWI768200B (zh) 2022-06-21
TW202006548A (zh) 2020-02-01
JP7252845B2 (ja) 2023-04-05
CN110673980A (zh) 2020-01-10

Similar Documents

Publication Publication Date Title
KR102420098B1 (ko) 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조
US11954363B2 (en) Quasi-volatile memory device with a back-channel usage
US9009580B2 (en) System and method for selective error checking
US9905314B2 (en) Storage module and method for datapath bypass
US20210286667A1 (en) Cloud scale server reliability management
US20180276161A1 (en) PCIe VIRTUAL SWITCHES AND AN OPERATING METHOD THEREOF
US11467902B2 (en) Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM)
US20170315860A1 (en) Device and system including adaptive repair circuit
US11748112B2 (en) Configurable media structure
JP7402798B2 (ja) データセンタにおけるプログラマブルデバイス向けのセキュリティ
CN113778328B (zh) 在半导体封装之间引导控制数据
CN114546435A (zh) 基于smm信任根的无缝smm全局驱动程序更新
US20150199201A1 (en) Memory system operating method providing hardware initialization
CN116457761A (zh) 一种存储装置、存储控制装置及片上系统
US20220350500A1 (en) Embedded controller and memory to store memory error information
US20150128000A1 (en) Method of operating memory system
US20210110043A1 (en) Platform firmware boot mechanism
US20210191811A1 (en) Memory striping approach that interleaves sub protected data words
US11429496B2 (en) Platform data resiliency mechanism
US20230318825A1 (en) Separately storing encryption keys and encrypted data in a hybrid memory
WO2022133873A1 (en) Configurable fault tolerant mechanism
US11960770B2 (en) Access request management using sub-commands
EP4202939A1 (en) Memory system and method of operating the same
US9715345B2 (en) Apparatuses and methods for memory management

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant