KR20160035044A - 대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법 - Google Patents

대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20160035044A
KR20160035044A KR1020167004854A KR20167004854A KR20160035044A KR 20160035044 A KR20160035044 A KR 20160035044A KR 1020167004854 A KR1020167004854 A KR 1020167004854A KR 20167004854 A KR20167004854 A KR 20167004854A KR 20160035044 A KR20160035044 A KR 20160035044A
Authority
KR
South Korea
Prior art keywords
lba
memory
crc
extended
payload data
Prior art date
Application number
KR1020167004854A
Other languages
English (en)
Other versions
KR101720676B1 (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 KR20160035044A publication Critical patent/KR20160035044A/ko
Application granted granted Critical
Publication of KR101720676B1 publication Critical patent/KR101720676B1/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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

대용량 메모리 디바이스들을 관리하기 위한 장치, 시스템들 및 방법들이 기술된다. 한 예에서, 컨트롤러는 페이로드 데이터, 명칭 공간 식별자(ID) 및 제1 확장된 논리 블록 어드레스(LBA)를 포함하는 기입 동작을 수신하고, 페이로드 CRC, 명칭 공간 ID와 제1 확장된 LBA를 이용하여 제1 시스템 순환 중복 검사(CRC)를 계산하고, 로컬 메모리에 제1 확장된 LBA와 연관하여 제1 시스템 CRC를 저장하고, 및 메모리에 페이로드 데이터, 제1 시스템 CRC와 제1 확장된 LBA로부터 도출된 트렁케이트된 LBA를 기입하기 위한 로직을 포함한다. 다른 예들도 개시되고 청구된다.

Description

대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법{APPARATUS AND METHOD TO MANAGE HIGH CAPACITY STORAGE DEVICES}
본 개시 내용은 일반적으로 전자 장치 분야에 관한 것이다. 보다 상세하게는, 양태들은 일반적으로 대용량 메모리를 관리하기 위한 장치 및 방법들과 관련된다.
SSD(solid state drive) 메모리 디바이스들은 이동부들에 대한 필요 없이 고속의 비휘발성 메모리 용량을 제공한다. SSD 메모리 디바이스들은 흔히 메모리 및 로컬 제어기를 포함하고, 전자 디바이스의 메모리 시스템에 결합될 수 있다. SSD 기술은 급속히 진보하고 있고, 이것은 대용량 SSD 메모리 디바이스들의 도입을 가능하게 할 것이다. 따라서, 대용량 메모리 디바이스들을 관리하기 위한 기술은 예를 들어 전자 디바이스들을 위한 메모리 시스템들에서 유용성을 발견할 수 있다.
상세한 설명이 첨부 도면들을 참조하여 제공된다. 도면들에서, 참조 번호의 최좌측 숫자(들)는 이 참조 번호가 처음 등장하는 도면을 식별한다. 상이한 도면들에서의 동일한 참조 번호들의 이용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 대용량 메모리 디바이스들이 본 명세서에서 논의되는 다양한 예들에 따라 구현될 수 있는 장치의 컴포넌트들의 도식적 블록도 도해이다.
도 2a-2b는 본 명세서에서 논의되는 다양한 예들에 따라서 대용량 메모리 디바이스들을 관리하기 위한 방법들에서의 동작들을 설명하는 흐름도이다.
도 3은 본 명세서에서 논의되는 다양한 예들에 따라서 대용량 메모리 디바이스들을 관리하기 위한 방법들에서의 순환 중복 검사(cyclical redundancy check)(CRC) 계산의 도식적 도해이다.
도 4a-4b와 도 5는 본 명세서에서 논의되는 다양한 예들에 따라서 대용량 메모리 디바이스들을 관리하기 위한 시스템들에 구조화된 데이터 스토리지의 도식적 도해들이다.
도 6-10은 본 명세서에서 논의되는 다양한 예들에 따라서 부분 기입들에 대한 전력 전달 잡음을 감소시키기 위한 방법들을 구현하기 위해 구성될 수 있는 전자 디바이스들의 도식적 블록도 도해들이다.
다음의 설명에서, 다양한 실시예들의 철저한 이해를 제공하기 위해서 수많은 특정 상세 사항들이 제시된다. 그러나, 다양한 실시예들은 이러한 특정 상세 사항들 없이 실시될 수 있다. 다른 경우에, 특정 실시예들을 가리지 않도록 잘 알려진 방법들, 절차들, 컴포넌트들, 및 회로들은 상세하게 설명되지 않았다. 또한, 실시예들의 다양한 양태들은 다양한 수단, 예컨대 집적 반도체 회로들("하드웨어"), 하나 이상의 프로그램들이 되도록 조직되는 컴퓨터 판독가능 명령어들("소프트웨어"), 또는 하드웨어와 소프트웨어의 몇몇 조합을 이용하여 실행될 수 있다. 본 개시의 목적을 위해, "로직"을 언급하는 것은 하드웨어, 소프트웨어, 또는 이들의 몇몇 조합을 의미한다.
도 1은 대용량 메모리 디바이스들이 본 명세서에서 논의되는 다양한 예들에 따라 구현될 수 있는 장치의 컴포넌트들의 도식적 블록도 도해이다. 도 1을 참조하면, 몇몇 예들에서, 중앙 처리 장치(CPU) 패키지(100)는 제어 허브(120)에 결합되는 하나 이상의 CPU들(110), 및 로컬 메모리(130)를 포함할 수 있다. 제어 허브(120)는 메모리 컨트롤러(122) 및 메모리 인터페이스(124)를 포함한다. 몇몇 예들에서, 제어 허브(120)는 프로세서(들)(110)와 통합될 수 있다.
메모리 인터페이스(124)는 통신 버스(160)에 의해 하나 이상의 원격 메모리 디바이스들(140)에 결합된다. 메모리 디바이스(들)(140)는 로컬 메모리(146)를 포함할 수 있는 컨트롤러(142) 및 메모리(150)를 포함할 수 있다. 다양한 예들에서, 메모리(150) 중 적어도 일부는, 예를 들어 상 변화 메모리, NAND(플래시) 메모리, FeTRAM(ferroelectric random-access memory), 나노 와이어 기반 비휘발성 메모리, 멤리스터 기술을 수용한 메모리와 같은 비휘발성 메모리, SRAM(static random access memory), PCM(phase change memory)과 같은 3차원(3D) 크로스포인트 메모리, STT-RAM(spin-transfer torque memory) 또는 NAND 메모리를 포함하는 SSD를 이용하여 구현될 수 있다. 메모리 디바이스(들)(140)에서의 메모리(150)의 특정 구성이 결정적인 것은 아니다. 그와 같은 실시예들에서, 메모리 인터페이스는 직렬 ATA 인터페이스, PCI 익스프레스(PCIE) 내지 100 인터페이스, 또는 그와 유사한 것을 포함할 수 있다.
앞서 논의한 바와 같이, 몇몇 예들에서, 메모리 컨트롤러(122)의 로직은 메모리(150)를 소비하는 애플리케이션들을 대신하여 메모리 디바이스(들)(140)에 대한 기입 동작들을 관리한다. 보다 상세하게는, 몇몇 예들에서, 메모리 컨트롤러(122)의 로직은 CPU(들)(110)상에서 실행되는 애플리케이션들로부터 메모리 접근 요청들을 수신하고, 메모리 디바이스들(140)에게 향하는 메모리 동작들을 구현한다.
본 명세서에서 설명되는 몇몇 예들에서, 메모리 컨트롤러(142)는, 컨트롤러(142)로 하여금 보통은 512와 528 바이트 사이의 크기를 가진 섹터들에 저장되는 최고 2 TB(terabyte)까지의 데이터를 매핑할 수 있는 32 비트 메모리 매핑 스킴을 확장하여 최고 8 TB의 데이터를 매핑하도록 - 이것은 35 비트 매핑 스킴을 요구함 - 허용하기 위한 로직을 포함한다. 메모리 동작에서 참조되는 섹터의 논리 블록 어드레스(Logical Block Adress)(LBA)를 컨트롤러(142)에 의해 유지되는 인디렉션 테이블(indirection table)에서의 블록 어드레스와 교차 참조함으로써, 컨트롤러(142)는 32 비트 LBA로부터 35 비트 LBA를 재구성할 수 있다. 이는 컨트롤러(142)로 하여금 메모리(150)에 32 비트 LBA를 저장하게 허용하며, 그에 의해 ECC(error correction control) 비트들 또는 그와 유사한 것을 위한 메모리 공간을 절약한다.
컨트롤러(142)에 의해 구현되는 동작들이 도 2a-2b와 도 3-5를 참조하여 기술될 것이다. 먼저 도 2a를 참조하면, 동작(210)에서 메모리 컨트롤러(142)는 기입 동작에서 데이터를 수신한다. 예를 들어, 동작에서(210), 메모리 컨트롤러(122)는 호스트로부터, 예를 들어 CPU(110)상에서 실행되는 애플리케이션 또는 제어 허브(120)에 결합되는 또 다른 프로세서로부터 메모리 디바이스(들)(140)에 데이터를 기입하라는 요청을 수신한다. 메모리 컨트롤러(122)로부터의 기입 요청은 기입 동작을 위한 명칭 공간과 논리 블록 어드레스(LBA)를 식별할 수 있고, 메모리 디바이스(들)(140)에 기입될, 때때로 페이로드라고 지칭되는 데이터를 포함할 수 있다. 메모리 컨트롤러(122)는 컨트롤러(122)로부터 수신되는 기입 동작과 연관되는 논리 블록 어드레스(LBA)를 메모리 디바이스(들)(140)의 물리적 어드레스로 번역하는 하나 이상의 매핑 테이블들을 포함할 수 있다.
동작(215)에서, 컨트롤러(142)는 기입 동작에서 수신되는 데이터를 위한 제1 시스템 순환 중복 검사(CRC)(415)를 계산한다. 도 3을 참조하면, 한 예에서, 제1 시스템 CRC(415)는 기입 동작에서 수신되는 명칭 공간 ID(310), 페이로드 CRC(315), 및 논리 블록 어드레스(420)에게 XOR 연산을 적용함으로써 계산된다. 본 명세서에서 기술되는 몇몇 예들에서, LBA는 확장된 LBA로서 본 명세서에서 지칭될 수 있는 35 비트 LBA일 수 있다.
도 2a 및 도 4a를 참조하면, 동작(220)서에, 컨트롤러(142)는 제1 시스템 CRC(415), 확장된 LBA(420), 및 페이로드 데이터(435)를 로컬 메모리(146)에 저장한다. 컨트롤러(142)는 또한 데이터와의 해밍 패리티 코드(430)를 로컬 메모리에 저장할 수 있다. 임의의 잔여 공간은 예를 들어 0들 또는 1들로 패딩될 수 있다.
도 2a 및 도 4b를 참조하면, 동작(225)에서 컨트롤러(142)는 제1 시스템 CRC(415) 및 페이로드 데이터(435)를 메모리 디바이스(들)(140)의 메모리(150)에 기입한다. 컨트롤러(142)는 트렁케이트된(truncated) LBA(460)를 메모리(150)에게 기입한다. 몇몇 예들에서, 컨트롤러(142)는 로컬 메모리(146)상에 저장되는 확장된 LBA(420)로부터 3개의 최하위 비트(즉, 비트들 2:0)를 떨어뜨림으로써 트렁케이트된 LBA(460)를 발생한다. 이것은, ECC 능력을 강화하기 위해 ECC 패리티 비트들(465)로 채워질 수 있는 3개의 여분의 비트를 스토리지 매체에 제공한다.
도 2b는 메모리 컨트롤러(122)로부터의 판독 동작에 응답하여 컨트롤러(142)에 의해 구현되는 동작들을 제공한다. 도 2b를 참조하면, 동작(240)에서 컨트롤러(122)는 메모리 컨트롤러(122)로부터 판독 동작을 수신한다. 판독 동작은 요청된 데이터가 메모리(150)상에 상주하는 논리 블록을 식별하는 확장된 LBA(420)를 포함한다.
동작(245)에서 컨트롤러(122)는 메모리(150)로부터 페이로드 데이터(435), 시스템 CRC(415), 및 트렁케이트된 LBA(460)를 검색한다.
동작(250)에서 컨트롤러(122)는 메모리(150)로부터 검색된 트렁케이트된 LBA(460)로부터 확장된 LBA를 결정한다. 한 예에서 컨트롤러(122)는 컨트롤러(122)에 의해 유지되는 인디렉션 테이블을 교차 참조함으로써 확장된 LBA의 3개의 최하위 비트를 결정한다. 도 5는 컨트롤러(122)에 의해 유지되는 인디렉션 테이블에의 스토리지 매체의 매핑의 도식적 도해이다.
예를 들어, 도 5를 참조하면, 메모리(150)는, 그 각각이 여덟(8) 섹터 및 도 4b에 설명된 것과 같은 연관 오버헤드 데이터를 홀드하도록 크기가 정해지는 논리 블록들(510)로 매핑될 수 있다. 인디렉션 테이블은 각각의 블록 510의 시작부의 메모리 로케이션에의 포인터를 포함한다. 컨트롤러(122)는 판독 요청과 함께 수신된 LBA를 이용하여 인디렉션 테이블을 교차 참조함으로써 판독 동작에서 요청된 섹터를 포함하는 블록 510의 시작부의 메모리 로케이션을 획득할 수 있다. 그리고 나서 이 섹터가 어디서 이 블록에 드는 지를 결정하고 또한 제2 확장된 LBA를 형성하도록 트렁케이트된 LBA에게 섹터의 번호에 대응하는 이진수를 첨부하기 위해 섹터들을 카운트다운할 수 있다.
예를 들어, 인디렉션 시스템은, 각각의 블록 510이 도 4b에 묘사된 것처럼 구성되는 8 섹터를 홀드할 수 있는 식이 되도록, 그 길이가 대략 4K 바이트인 블록들 510으로 구성될 수 있다. 컨트롤러(122)가 참조 번호(530)에 의해 식별되는 LBA를 향하는 판독 동작을 수신하면, 컨트롤러(122)는 블록 510의 로케이션을 획득하기 위해 인디렉션 테이블을 교차 참조할 수 있고, 섹터 번호를 결정할 수 있다. 이 예에서 LBA는 블록 510에서의 섹터 5를 참조하고, 따라서 컨트롤러(122)는 제2 확장된 LBA를 형성하도록 메모리(150)로부터 검색된 트렁케이트된 LBA(460)에 이진수 5(101)를 첨부할 것이다.
도 2b를 다시 참조할 때, 동작 255에서 컨트롤러(122)는 페이로드 데이터(435), 명칭 공간 ID(315) 및 동작 250에서 결정된 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산한다. 예를 들어, 제2 시스템 CRC는 도 3a에 도해된 CRC 함수를 이용하여 결정될 수 있다.
동작 260에서 동작 255에서 계산된 제2 시스템 CRC가 데이터와 함께 검색된 제1 시스템 CRC(415)와 매칭되는지가 결정된다. 동작 255에서 계산된 제2 시스템 CRC가 제1 시스템 CRC(415)와 매칭되지 않는다면, 제어는 동작 265에게 넘겨지고, 컨트롤러(122)는 오류 루틴을 구현한다. 예를 들어, 컨트롤러(122)는 오류를 메모리 컨트롤러(142)에게 반환할 수 있다. 대조적으로, 동작 255에서 계산된 제2 시스템 CRC가 제1 시스템 CRC(415)와 매칭되면, 제어는 동작 270에게 넘겨지고, 컨트롤러(122)는 스토리지 매체로부터 판독된 페이로드 데이터(435)를 반환한다.
그러므로, 본 명세서에서 기술되는 구조와 동작들은 컨트롤러(122)가 대용량 메모리 디바이스를 관리할 수 있게 한다. 보다 상세하게는, 본 명세서에서 기술되는 구조와 동작들은 컨트롤러(122)로 하여금 트렁케이트된 LBA(460)를 스토리지 매체에 저장하고 또한 트렁케이트된 LBA를 CRC 계산에 사용될 수 있는 확장된 LBA로 변환하기 위해 인디렉션 테이블의 정보를 레버리징하는 것을 가능하게 한다.
앞서 논의한 바와 같이, 몇몇 예들에서, 전자 디바이스는 컴퓨터 시스템으로서 구체화될 수 있다. 도 6은 예에 따른 컴퓨팅 시스템(600)의 블록도를 예시한다. 컴퓨팅 시스템(600)은 상호접속 네트워크(또는 버스)(604)를 경유해 통신하는 하나 이상의 중앙 처리 유닛(들)(CPU들)(602) 또는 프로세서들을 포함할 수 있다. 프로세서들(602)은 범용 프로세서, 네트워크 프로세서(컴퓨터 네트워크(603)를 통해 통신되는 데이터를 처리함), 또는 기타 유형들의 프로세서(RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함함)를 포함할 수 있다. 게다가, 프로세서들(602)은 단일 또는 다중 코어 설계를 가질 수 있다. 다중 코어 설계를 가지는 프로세서들(602)은 동일한 집적 회로(IC) 다이상에 서로 다른 유형들의 프로세서 코어들을 통합할 수 있다. 또한, 다중 코어 설계를 가지는 프로세서들(602)은 대칭 또는 비대칭 멀티프로세서들로서 구현될 수 있다. 예에서, 프로세서들(602) 중 하나 이상은 도 1의 프로세서들(102)과 동일하거나 유사할 수 있다. 예를 들어, 프로세서들(602) 중 하나 이상은 도 1-3을 참조하여 논의된 제어 유닛(120)을 포함할 수 있다. 또한, 도 3-5를 참조하여 논의된 동작들은 시스템(600)의 하나 이상의 컴포넌트들에 의해 실행될 수 있다.
칩셋(606)은 또한 상호접속 네트워크(604)로 통신할 수 있다. 칩셋(606)은 MCH(memory control hub)(608)를 포함할 수 있다. MCH(608)는 메모리(612)(도 1의 메모리(130)와 동일하거나 유사할 수 있음)와 통신하는 메모리 컨트롤러(610)를 포함할 수 있다. 메모리(412)는 CPU(602), 또는 컴퓨팅 시스템(600)에 포함되는 임의의 다른 디바이스에 의해 실행될 수 있는 명령어들의 시퀀스들을 포함하는 데이터를 저장할 수 있다. 일 예에서, 메모리(612)는 RAM(random access memory), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM)과 같은 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스들, 또는 기타 유형의 스토리지 디바이스들을 포함할 수 있다. 하드 디스크와 같은 비휘발성 메모리도 또한 활용될 수 있다. 다중 CPU 및/또는 다중 시스템 메모리와 같은 추가 디바이스들이 상호접속 네트워크(604)를 통해 통신할 수 있다.
MCH(608)는 또한 디스플레이 디바이스(616)와 통신하는 그래픽 인터페이스(614)를 포함할 수 있다. 일 예에서, 그래픽 인터페이스(614)는 AGP(accelerated graphics port)를 통해 디스플레이 디바이스(616)와 통신할 수 있다. 예에서, (평판 디스플레이와 같은) 디스플레이(616)는, 예를 들어 비디오 메모리 또는 시스템 메모리와 같은 스토리지 디바이스에 저장되는 이미지의 디지털 표현을 디스플레이(616)에 의해 해석되고 표시되는 디지털 신호들로 번역하는 신호 변환기를 통해 그래픽 인터페이스(614)와 통신할 수 있다. 디스플레이 디바이스에 의해 발생되는 디스플레이 신호들은 디스플레이(616)에 의해 해석되고 후속하여 그 상에 표시되기 전에 다양한 제어 디바이스들을 거칠 수 있다.
허브 인터페이스(618)는 MCH(608) 및 ICH(input/output control hub)(620)가 통신하도록 허용한다. ICH(620)는 컴퓨팅 시스템(600)과 통신하는 I/O 디바이스(들)에게 인터페이스를 제공할 수 있다. ICH(620)는, PCI(peripheral component interconnect) 브리지, USB(universal serial bus) 컨트롤러, 또는 다른 유형들의 주변 기기 브리지들(peripheral bridges) 또는 컨트롤러들과 같은 주변 기기 브리지(또는 컨트롤러)(624)를 통해 버스(622)와 통신할 수 있다. 브리지(624)는 CPU(602)와 주변 기기들 간의 데이터 경로를 제공할 수 있다. 다른 유형의 토폴로지들이 활용될 수 있다. 또한, 다중 버스가, 예를 들어 다중 브리지 또는 컨트롤러를 통해 ICH(620)와 통신할 수 있다. 더욱이, ICH(620)와 통신 상태에 있는 다른 주변 기기들은, 다양한 예들에서, IDE(integrated drive electronics) 또는 SCSI(small computer system interface) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 지원(예를 들어, DVI(digital video interface)), 또는 기타 디바이스들을 포함할 수 있다.
버스(622)는 오디오 디바이스(626), 하나 이상의 디스크 드라이브(들)(628), 및 (컴퓨터 네트워크(603)와 통신 상태에 있는) 네트워크 인터페이스 디바이스(630)와 통신할 수 있다. 다른 디바이스들은 버스(622)를 통해 통신할 수 있다. 또한, (네트워크 인터페이스 디바이스(630)와 같은) 다양한 컴포넌트들은 몇몇 예들에서 MCH(608)와 통신할 수 있다. 또한, 프로세서(602) 및 본 명세서에서 논의되는 하나 이상의 다른 컴포넌트들은 단일 칩을 형성하기 위해(예를 들어, SOC(System on Chip)를 제공하기 위해) 조합될 수 있다. 더욱이, 그래픽 가속기(616)는 기타 예들에서 MCH(608) 내에 포함될 수 있다.
더욱이, 컴퓨팅 시스템(600)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 다음 중 하나 이상을 포함할 수 있다: ROM(read-only memory), PROM(programmable ROM), EPROM(erasable PROM), EEPROM(electrically EPROM), 디스크 드라이브(예를 들어, 628), 플로피 디스크, CD-ROM(compact disk ROM), DVD(digital versatile disk), 플래시 메모리, 광자기 디스크, 또는 (예로, 명령어들을 포함하는) 전자적 데이터를 저장할 수 있는 그 밖의 유형들의 비휘발성 머신 판독가능 매체.
도 7은 예에 따른 컴퓨팅 시스템(700)의 블록도를 예시한다. 시스템(700)은 하나 이상의 프로세서들(702-1 내지 702-N)(일반적으로 "프로세서들(702)" 또는 "프로세서(702)"로서 본 명세서에서 지칭됨)을 포함할 수 있다. 프로세서들(702)은 상호접속 네트워크 또는 버스(704)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트들을 포함할 수 있는데, 그 중 일부가 명확성을 위해 프로세서(702-1)를 참조하여서만 논의된다. 따라서, 나머지 프로세서들(702-2 내지 702-N)의 각각은 프로세서(702-1)를 참조하여 논의되는 것과 동일한 또는 유사한 컴포넌트들을 포함할 수 있다.
예에서, 프로세서(702-1)는 하나 이상의 프로세서 코어들(706-1 내지 706-M)("코어들(706)"로서 또는 보다 일반적으로 "코어(706)"로서 본 명세서에서 지칭됨), 공유 캐시(708), 라우터(710), 및/또는 프로세서 제어 로직 또는 유닛(720)을 포함할 수 있다. 프로세서 코어들(706)은 단일 집적 회로(IC) 칩상에 구현될 수 있다. 게다가, 칩은 하나 이상의 공유 및/또는 사유 캐시들(이를테면, 캐시(708)), 버스들 또는 상호접속들(이를테면, 버스 또는 상호접속 네트워크(712)), 메모리 컨트롤러들, 또는 기타 컴포넌트들을 포함할 수 있다.
한 예에서, 라우터(710)는 프로세서(702-1) 및/또는 시스템(700)의 다양한 컴포넌트들 간에서 통신하기 위해 이용될 수 있다. 더욱이, 프로세서(702-1)는 둘 이상의 라우터(710)를 포함할 수 있다. 게다가, 다수의 라우터(710)는 프로세서(702-1)의 내부 또는 외부의 다양한 컴포넌트들 간의 데이터 라우팅을 가능하게 하기 위해 통신 상태에 있을 수 있다.
공유 캐시(708)는 코어들(706)과 같은 프로세서(702-1)의 하나 이상의 컴포넌트들에 의해 활용되는 (예를 들어, 명령어들을 포함하는) 데이터를 저장할 수 있다. 예를 들면, 공유 캐시(708)는 프로세서(702)의 컴포넌트들에 의한 보다 빠른 접근을 위해 메모리(714) 내에 저장되는 데이터를 국지적으로 캐시할 수 있다. 예에서, 캐시(708)는 중간 레벨 캐시(예컨대, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4), 또는 기타 레벨들의 캐시), LLC(last level cache), 및/또는 이들의 조합들을 포함할 수 있다. 더욱이, 프로세서(702-1)의 다양한 컴포넌트들은 버스[예를 들어, 버스(712)], 및/또는 메모리 컨트롤러 또는 허브를 통해 공유 캐시(708)와 직접적으로 통신할 수 있다. 도 7에 도시된 바와 같이, 몇몇 예들에서, 코어들(706) 중 하나 이상은 레벨 1(L1) 캐시(716-1)(일반적으로 "L1 캐시(716)"로서 본 명세서에서 지칭됨)를 포함할 수 있다. 일 예에서, 제어 유닛(720)은 도 2에서 메모리 컨트롤러(122)와 관련하여 위에서 기술된 동작들을 구현하기 위한 로직을 포함할 수 있다.
도 8은 예에 따라, 프로세서 코어(706)의 부분들과 컴퓨팅 시스템의 기타 컴포넌트들의 블록도를 예시한다. 일 예에서, 도 8에 도시된 화살표들은 코어(706)를 통한 명령어들의 흐름 방향을 예시한다. 하나 이상의 프로세서 코어들(프로세서 코어(706)와 같은 것)이 도 7을 참조하여 논의된 것과 같은 단일 집적 회로 칩(또는 다이)상에 구현될 수 있다. 더욱이, 칩은 하나 이상의 공유 및/또는 사유 캐시(예컨대, 도 7의 캐시(708)), 상호접속들(예컨대, 도 7의 상호접속들(704 및/또는 112)), 제어 유닛들, 메모리 컨트롤러들, 또는 기타 컴포넌트들을 포함할 수 있다.
도 8에 도해된 바와 같이, 프로세서 코어(706)는 코어(706)에 의한 실행을 위한 명령어들(조건부 분기들을 가진 명령어들을 포함함)을 페치하기 위한 페치 유닛(fetch unit)(802)을 포함할 수 있다. 명령어들은 메모리(714)와 같은 임의의 스토리지 디바이스들로부터 페치될 수 있다. 코어(706)는 또한 페치된 명령어를 디코딩하기 위한 디코드 유닛(804)을 포함할 수 있다. 예를 들어, 디코드 유닛(804)은 페치된 명령어를 복수의 uop(micro-operations)가 되도록 디코드할 수 있다.
덧붙여, 코어(706)는 스케줄 유닛(806)을 포함할 수 있다. 스케줄 유닛(806)은, 명령어들이 디스패치(dispatch)를 위해 준비될 때까지, 예컨대 디코딩된 명령어의 모든 소스 값들이 이용 가능하게 될 때까지, 디코딩된 명령어들(예컨대, 디코드 유닛(804)으로부터 수신됨)을 저장하는 것과 연관되는 다양한 동작들을 실행할 수 있다. 일 예에서, 스케줄 유닛(806)은 실행을 위해 실행 유닛(808)에게 디코딩된 명령어들을 스케줄링하고/또는 발행(또는 디스패치)할 수 있다. 실행 유닛(808)은 디스패치된 명령어들이 (예컨대, 디코드 유닛(804)에 의해) 디코딩되고 (예컨대, 스케줄 유닛(806)에 의해) 디스패치된 후에 디스패치된 명령어들을 실행할 수 있다. 예에서, 실행 유닛(808)은 둘 이상의 실행 유닛을 포함할 수 있다. 실행 유닛(808)은 또한 덧셈, 뺄셈, 곱셈, 및/또는 나눗셈과 같은 다양한 산술 연산들을 실행할 수 있고, 또한 하나 이상의 ALU(arithmetic logic unit)들을 포함할 수 있다. 예에서, 보조 프로세서(도시되지 않음)는 실행 유닛(808)과 연계하여 다양한 산술 연산들을 실행할 수 있다.
또한, 실행 유닛(808)은 명령어들을 비순차적(out-of-order)으로 실행할 수 있다. 따라서, 프로세서 코어(706)는 일 예에서 비순차적 프로세서 코어일 수 있다. 코어(706)는 또한 리타이어먼트 유닛(retirement unit)(810)을 포함할 수 있다. 리타이어먼트 유닛(810)은 실행된 명령어들이 커밋(commit)된 후에 실행된 명령어들을 리타이어할 수 있다. 예에서, 실행된 명령어들의 리타이어먼트는 프로세서 상태가 명령어들의 실행으로부터 커밋되는 것과, 명령어들에 의해 이용되는 물리적 레지스터들이 할당 해제(de-allocate)되는 것과, 기타 등등을 초래할 수 있다.
코어(706)는 또한 하나 이상의 버스들(예컨대, 버스들(804 및/또는 812))을 통해 프로세서 코어(706)의 컴포넌트들과 기타 컴포넌트들(이를테면, 도 8을 참조하여 논의된 컴포넌트들) 간의 통신을 가능하게 하는 버스 유닛(714)을 포함할 수 있다. 코어(706)는 또한 코어(706)의 다양한 컴포넌트들에 의해 접근되는 데이터(이를테면, 전력 소비 상태 설정들과 관계되는 값들)를 저장하기 위한 하나 이상의 레지스터들(816)을 포함할 수 있다.
게다가, 도 7이 상호접속(812)을 통해 코어(706)에 결합되는 제어 유닛(720)을 예시하지만, 다양한 예들에서, 제어 유닛(720)은 코어(706)의 내부와 같은 다른 곳에 자리 잡을 수 있고, 버스(704)를 통해 코어에 결합될 수 있고, 기타 등등과 같이 될 수 있다.
몇몇 예들에서, 본 명세서에서 논의되는 컴포넌트들 중 하나 이상은 SOC(System On Chip) 디바이스로서 구체화될 수 있다. 도 9는 예에 따른 SOC 패키지의 블록도를 예시한다. 도 9에 예시된 바와 같이, SOC(902)는 하나 이상의 CPU(Central Processing Unit) 코어들(920), 하나 이상의 GPU(Graphics Processor Unit) 코어들(930), 입력/출력(I/O) 인터페이스(940), 및 메모리 컨트롤러(942)를 포함한다. SOC 패키지(902)의 다양한 컴포넌트들은 다른 도면들을 참조하여 본 명세서에서 논의되는 것과 같은 상호접속 또는 버스에 결합될 수 있다. 또한, SOC 패키지(902)는 다른 도면들을 참조하여 본 명세서에서 논의되는 것들과 같은 컴포넌트들보다 더 많은 것을 또는 더 적은 것을 포함할 수 있다. 또한, SOC 패키지(902)의 각각의 컴포넌트는, 예컨대 본 명세서에서 다른 도면들을 참조하여 논의된 바와 같은 하나 이상의 다른 컴포넌트들을 포함할 수 있다. 일 예에서, SOC 패키지(902)(및 그 컴포넌트들)는, 예컨대 단일 반도체 디바이스로 패키징되는 하나 이상의 IC(Integrated Circuit) 다이상에 제공된다.
도 9에 도시된 바와 같이, SOC 패키지(902)는 메모리 컨트롤러(942)를 통해 메모리(960)(이것은 다른 도면들을 참조하여 본 명세서에서 논의된 메모리와 유사하거나 동일한 것일 수 있음)에 결합된다. 예에서, 메모리(960)(또는 이것의 일부)는 SOC 패키지(902)상에 통합될 수 있다.
I/O 인터페이스(940)는, 예컨대 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같은 상호접속 및/또는 버스를 통해 하나 이상의 I/O 디바이스들(970)에 결합될 수 있다. I/O 디바이스(들)(970)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(이를테면, 카메라 또는 캠코더/비디오 리코더), 터치스크린, 스피커, 또는 이와 유사한 것 중 하나 이상을 포함할 수 있다.
도 10은 예에 따라 포인트 투 포인트(point-to-point)(PtP) 구성으로 배열되는 컴퓨터 시스템(1000)을 도해한다. 특히, 도 10은 프로세서들, 메모리, 및 입력/출력 디바이스들이 다수의 포인트 투 포인트 인터페이스에 의해 상호 접속되는 시스템을 도시한다. 도 2를 참조하여 논의된 동작들은 시스템(1000)의 하나 이상의 컴포넌트들에 의해 실행될 수 있다.
도 10에 도시된 바와 같이, 시스템(1000)은 몇 개의 프로세서를 포함할 수 있는데, 명확성을 위해 그 중에서 두 개의 프로세서(1002 및 1004)만이 도시되었다. 프로세서들(1002 및 1004)은 각각이 메모리들(1010 및 1012)과의 통신을 가능하게 위한 로컬 MCH(memory controller hub)(1006 및 1008)를 포함할 수 있다. MCH(1006 및 1008)는 몇몇 예들에서 도 1의 메모리 컨트롤러(120) 및/또는 로직을 포함할 수 있다.
예에서, 프로세서들(1002 및 1004)은 도 7을 참조하여 논의된 프로세서들(702) 중 하나일 수 있다. 프로세서들(1002 및 1004)은 제각기 PtP 인터페이스 회로들(1016 및 1018)을 사용하는 PtP 인터페이스(1014)를 통해 데이터를 교환할 수 있다. 또한, 프로세서들(1002 및 1004)은 각각이 포인트 투 포인트 인터페이스 회로들(1026, 1028, 1030, 및 1032)을 이용하는 개별 PtP 인터페이스들(1022 및 1024)을 통해 칩셋(1020)과 데이터를 교환할 수 있다. 칩셋(1020)은, 예를 들어 PtP 인터페이스 회로(1037)를 이용하는 고성능 그래픽 인터페이스(1036)를 통해 고성능 그래픽 회로(1034)와 데이터를 추가로 교환할 수 있다.
도 10에 도시된 대로, 도 1의 코어들(106) 및/또는 캐시(108) 중 하나 이상은 프로세서들(1002 및 1004) 내에 자리 잡을 수 있다. 하지만, 기타 예들은 도 10의 시스템(1000) 내의 다른 회로들, 로직 유닛들, 또는 디바이스들에 존재할 수 있다. 게다가, 기타 예들은 도 10에 예시된 몇 개의 회로들, 로직 유닛들, 또는 디바이스들의 전체에 걸쳐서 분산될 수 있다.
칩셋(1020)은 PtP 인터페이스 회로(1041)를 이용하여 버스(1040)와 통신할 수 있다. 버스(1040)는 버스 브리지(1042) 및 I/O 디바이스들(1043)과 같이 자신과 통신하는 하나 이상의 디바이스들을 가질 수 있다. 버스(1044)를 통해, 버스 브리지(1043)는 키보드/마우스(1045), 통신 디바이스들(1046)(모뎀들, 네트워크 인터페이스 디바이스들, 또는 컴퓨터 네트워크(803)와 통신할 수 있는 기타 통신 디바이스들과 같은 것), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(1048)와 같은 다른 디바이스들과 통신할 수 있다. 데이터 스토리지 디바이스(1048)(이것은 하드 디스크 드라이브 또는 NAND 플래시 기반 SSD(solid state drive)일 수 있음)는 프로세서들(1002 및/또는 1004)에 의해 실행될 수 있는 코드(1049)를 저장할 수 있다.
하기 예들은 추가적 예들과 관련된다.
예 1은 페이로드 데이터, 명칭 공간 식별자(ID) 및 제1 확장된 논리 블록 어드레스(LBA)를 포함하는 기입 동작을 수신하고, 페이로드 CRC, 명칭 공간 ID와 제1 확장된 LBA를 이용하여 제1 시스템 순환 중복 검사(CRC)를 계산하고, 로컬 메모리에 제1 확장된 LBA와 연관하여 제1 시스템 CRC를 저장하고, 및 메모리에 페이로드 데이터, 제1 시스템 CRC와 제1 확장된 LBA로부터 도출된 트렁케이트된 LBA를 기입하기 위한 로직을 포함하는 컨트롤러이다.
예 2에서, 예 1의 주제는 제1 확장된 LBA가 메모리상의 데이터 섹터에 매핑하고, 메모리가 여덟 개의 데이터 섹터를 포함하는 블록들로 매핑되고, 및 메모리에 기입된 트렁케이트된 LBA가 제1 확장된 LBA의 3개의 최하위 비트를 생략하는 배치를 선택 사항으로 포함할 수 있다.
예 3에서, 예 1 또는 예 2의 주제는 어떠한 배치를 선택 사항으로 포함할 수 있다
예 4에서, 예들 1-3 중 임의의 하나의 주제는 제1 확장된 LBA를 포함하는 판독 동작을 수신하고, 메모리로부터 페이로드 데이터, 제1 시스템 CRC와 트렁케이트된 LBA를 검색하고, 및 트렁케이트된 LBA로부터 제2 확장된 LBA를 결정하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 5에서, 예들 1-4 중 임의의 하나의 주제는 페이로드 데이터, 명칭 공간 ID와 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고 및 제2 시스템 CRC가 제1 시스템 CRC와 매칭되지 않을 때 오류 루틴을 구현하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 6에서, 예들 1-5 중 임의의 하나의 주제는 페이로드 데이터, 명칭 공간 ID와 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고 및 제2 시스템 CRC가 제1 시스템 CRC와 매칭될 때 페이로드 데이터를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 7은 비휘발성 메모리, 및 이 메모리에 결합되고 또한 페이로드 데이터, 명칭 공간 식별자(ID) 및 제1 확장된 논리 블록 어드레스(LBA)를 포함하는 기입 동작을 수신하고, 페이로드 CRC, 명칭 공간 ID와 제1 확장된 LBA를 이용하여 제1 시스템 순환 중복 검사(CRC)를 계산하고, 로컬 메모리에 제1 확장된 LBA와 연관하여 제1 시스템 CRC를 저장하고, 및 메모리에 페이로드 데이터, 제1 시스템 CRC와 제1 확장된 LBA로부터 도출된 트렁케이트된 LBA를 기입하기 위한 로직을 포함하는 컨트롤러를 포함하는 장치이다.
예 8에서, 예 7의 주제는 제1 확장된 LBA가 메모리상의 데이터 섹터에 매핑하고, 메모리가 여덟 개의 데이터 섹터를 포함하는 블록들로 매핑되고, 및 메모리에 기입된 트렁케이트된 LBA가 제1 확장된 LBA의 3개의 최하위 비트를 생략하는 배치를 선택 사항으로 포함할 수 있다.
예 9에서, 예 7 또는 예 8은 어떤 배치를 선택 사항으로 포함할 수 있다
예 10에서, 예들 7-9 중 임의의 하나의 주제는 제1 확장된 LBA를 포함하는 판독 동작을 수신하고, 메모리로부터 페이로드 데이터, 제1 시스템 CRC와 트렁케이트된 LBA를 검색하고, 및 트렁케이트된 LBA로부터 제2 확장된 LBA를 결정하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 11에서, 예들 7-10 중 임의의 하나의 주제는 페이로드 데이터, 명칭 공간 ID와 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고 및 제2 시스템 CRC가 제1 시스템 CRC와 매칭되지 않을 때 오류 루틴을 구현하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 12에서, 예들 7-11 중 임의의 하나의 주제는 페이로드 데이터, 명칭 공간 ID와 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고 및 제2 시스템 CRC가 제1 시스템 CRC와 매칭될 때 페이로드 데이터를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 13은 전자 디바이스이고, 이 전자 디바이스는, 적어도 하나의 프로세서, 메모리를 포함하는 적어도 하나의 메모리 디바이스, 및 이 메모리에 결합되고 또한 페이로드 데이터, 명칭 공간 식별자(ID) 및 제1 확장된 논리 블록 어드레스(LBA)를 포함하는 기입 동작을 수신하고, 페이로드 CRC, 명칭 공간 ID와 제1 확장된 LBA를 이용하여 제1 시스템 순환 중복 검사(CRC)를 계산하고, 로컬 메모리에 제1 확장된 LBA와 연관하여 제1 시스템 CRC를 저장하고, 및 메모리에 페이로드 데이터, 제1 시스템 CRC와 제1 확장된 LBA로부터 도출된 트렁케이트된 LBA를 기입하기 위한 로직을 포함하는 컨트롤러를 포함한다.
예 14에서, 예 13의 주제는 제1 확장된 LBA가 메모리상의 데이터 섹터에 매핑하고, 메모리가 여덟 개의 데이터 섹터를 포함하는 블록들로 매핑되고, 및 메모리에 기입된 트렁케이트된 LBA가 제1 확장된 LBA의 3개의 최하위 비트를 생략하는 배치를 선택 사항으로 포함할 수 있다.
예 15에서, 예 13 또는 예14는 어떤 배치를 선택 사항으로 포함시킬 수 있다.
예 16에서, 예들 13-15 중 임의의 하나의 주제는 제1 확장된 LBA를 포함하는 판독 동작을 수신하고, 메모리로부터 페이로드 데이터, 제1 시스템 CRC와 트렁케이트된 LBA를 검색하고, 및 트렁케이트된 LBA로부터 제2 확장된 LBA를 결정하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 17에서, 예들 13-16 중 임의의 하나의 주제는 페이로드 데이터, 명칭 공간 ID와 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고 및 제2 시스템 CRC가 제1 시스템 CRC와 매칭되지 않을 때 오류 루틴을 구현하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 18에서, 예들 13-17 중 임의의 하나의 주제는 페이로드 데이터, 명칭 공간 ID와 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고 및 제2 시스템 CRC가 제1 시스템 CRC와 매칭될 때 페이로드 데이터를 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
다양한 예들에서, 예를 들어 도 1 내지 도 10을 참조하여 본 명세서에서 논의되는 동작들은, 예를 들어 본 명세서에서 논의되는 프로세스를 실행하도록 컴퓨터를 프로그래밍하는데 이용되는 명령어들(또는 소프트웨어 프로시저들)이 저장되어 있는 유형의(tangible) (예를 들어, 비일시적) 머신 판독가능 또는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서 제공될 수 있는 하드웨어(예를 들어, 회로망), 소프트웨어, 펌웨어, 마이크로코드, 또는 이들의 조합으로서 구현될 수 있다. 또한, "로직"이라는 용어는 예로서 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합을 포함할 수 있다. 머신 판독가능 매체는 본 명세서에서 논의되는 바와 같은 스토리지 디바이스를 포함할 수 있다.
본 명세서에서 "일 예(one example)" 또는 "예(an example)"에 대한 언급은, 이 실시예와 관련하여 설명된 특정 피처, 구조, 또는 특성이 적어도 일 구현에 포함될 수 있다는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 구문의 출현은 모두가 동일 실시예를 지칭하는 것일 수도 있고 그렇지 않을 수도 있다.
또한, 본 설명 및 청구항들에서, "결합된(coupled)" 및 "접속된(connected)"이라는 용어들은 그 파생어들과 함께 이용될 수 있다. 몇몇 실시예들에서, "접속된"은, 2개 이상의 요소가 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는데 이용될 수 있다. "결합된"은, 2개 이상의 요소가 직접 물리적으로 또는 전기적으로 접촉하는 것을 의미할 수 있다. 그러나, "결합된"은, 2개 이상의 요소가 서로 직접 접촉하지 않을 수 있지만 여전히 서로 상호작용하거나 협력하는 것을 또한 의미할 수 있다.
따라서, 예들은 구조적 피처들 및/또는 방법론적 작용들에 대한 특정 언어로 설명되었지만, 청구 대상은 설명된 특정 피처들 또는 작용들에 제한되지 않을 수 있다는 것을 이해해야 한다. 오히려, 특정 피처들 및 작용들은 청구 대상을 구현하는 예시적 형태들로서 개시되어 있다.

Claims (18)

  1. 로직을 포함하는 컨트롤러로서:
    상기 로직은
    페이로드 데이터, 명칭 공간 식별자(ID) 및 제1 확장된 논리 블록 어드레스(LBA)를 포함하는 기입 동작을 수신하고;
    페이로드 CRC, 상기 명칭 공간 ID 및 상기 제1 확장된 LBA를 이용하여 제1 시스템 순환 중복 검사(CRC)를 계산하고;
    상기 제1 확장된 LBA와 연관된 상기 제1 시스템 CRC를 로컬 메모리에 저장하고;
    상기 페이로드 데이터, 상기 제1 시스템 CRC 및 상기 제1 확장된 LBA로부터 도출된 트렁케이트된(truncated) LBA를 메모리에 기입하는 컨트롤러.
  2. 제1항에 있어서,
    상기 제1 확장된 LBA는 상기 메모리상의 데이터 섹터에 매핑되고;
    상기 메모리는 8개의 데이터 섹터를 포함하는 블록들로 매핑되고;
    상기 메모리에 기입된 상기 트렁케이트된 LBA는 상기 제1 확장된 LBA의 3개의 최하위 비트를 생략하는 컨트롤러.
  3. 제2항에 있어서, 상기 제1 확장된 LBA는 512 바이트와 528 바이트 사이의 크기를 갖는 데이터 섹터에 매핑되고;
    상기 메모리는 대략 4 킬로바이트의 크기를 갖는 블록들로 매핑되는
    컨트롤러.
  4. 제1항에 있어서,
    상기 제1 확장된 LBA를 포함하는 판독 동작을 수신하고;
    상기 메모리로부터 상기 페이로드 데이터, 상기 제1 시스템 CRC 및 상기 트렁케이트된 LBA를 검색하고;
    상기 트렁케이트된 LBA로부터 제2 확장된 LBA를 결정하기 위한 로직
    을 더 포함하는 컨트롤러.
  5. 제4항에 있어서,
    상기 페이로드 데이터, 상기 명칭 공간 ID 및 상기 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고;
    상기 제2 시스템 CRC가 상기 제1 시스템 CRC와 매칭되지 않을 때 오류 루틴을 구현하기 위한 로직
    을 더 포함하는 컨트롤러.
  6. 제4항에 있어서,
    페이로드 데이터, 상기 명칭 공간 ID 및 상기 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고;
    상기 제2 시스템 CRC가 상기 제1 시스템 CRC와 매칭될 때 상기 페이로드 데이터를 반환하기 위한 로직
    을 더 포함하는 컨트롤러.
  7. 장치로서:
    비휘발성 메모리; 및
    상기 메모리에 결합되고 로직을 포함하는 컨트롤러
    를 포함하고, 상기 로직은
    페이로드 데이터, 명칭 공간 식별자(ID) 및 제1 확장된 논리 블록 어드레스(LBA)를 포함하는 기입 동작을 수신하고;
    페이로드 CRC, 상기 명칭 공간 ID 및 상기 제1 확장된 LBA를 이용하여 제1 시스템 순환 중복 검사(CRC)를 계산하고;
    상기 제1 확장된 LBA와 연관된 제1 시스템 CRC를 로컬 메모리에 저장하고;
    상기 페이로드 데이터, 상기 제1 시스템 CRC 및 상기 제1 확장된 LBA로부터 도출된 트렁케이트된 LBA를 메모리에 기입하는, 장치.
  8. 제7항에 있어서,
    상기 제1 확장된 LBA는 상기 메모리상의 데이터 섹터에 매핑되고;
    상기 메모리는 8개의 데이터 섹터를 포함하는 블록들로 매핑되고;
    상기 메모리에 기입된 상기 트렁케이트된 LBA는 상기 제1 확장된 LBA의 3개의 최하위 비트를 생략하는
    장치.
  9. 제8항에 있어서,
    상기 제1 확장된 LBA는 512 바이트와 528 바이트 사이의 크기를 갖는 데이터 섹터에 매핑되고;
    상기 메모리는 대략 4 킬로바이트의 크기를 갖는 블록들로 매핑되는
    장치.
  10. 제7항에 있어서,
    상기 제1 확장된 LBA를 포함하는 판독 동작을 수신하고;
    상기 메모리로부터 상기 페이로드 데이터, 상기 제1 시스템 CRC 및 상기 트렁케이트된 LBA를 검색하고;
    상기 트렁케이트된 LBA로부터 제2 확장된 LBA를 결정하기 위한 로직
    을 더 포함하는 장치.
  11. 제10항에 있어서,
    상기 페이로드 데이터, 상기 명칭 공간 ID 및 상기 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고;
    상기 제2 시스템 CRC가 상기 제1 시스템 CRC와 매칭되지 않을 때 오류 루틴을 구현하기 위한 로직
    을 더 포함하는 장치.
  12. 제10항에 있어서,
    페이로드 데이터, 상기 명칭 공간 ID 및 상기 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고;
    상기 제2 시스템 CRC가 상기 제1 시스템 CRC와 매칭될 때 상기 페이로드 데이터를 반환하기 위한 로직
    을 더 포함하는 장치.
  13. 전자 디바이스로서:
    적어도 하나의 프로세서;
    메모리를 포함하는 적어도 하나의 메모리 디바이스; 및
    상기 메모리에 결합되고 로직을 포함하는 컨트롤러
    를 포함하고, 상기 로직은
    페이로드 데이터, 명칭 공간 식별자(ID) 및 제1 확장된 논리 블록 어드레스(LBA)를 포함하는 기입 동작을 수신하고;
    페이로드 CRC, 상기 명칭 공간 ID 및 상기 제1 확장된 LBA를 이용하여 제1 시스템 순환 중복 검사(CRC)를 계산하고;
    상기 제1 확장된 LBA와 연관된 제1 시스템 CRC를 로컬 메모리에 저장하고;
    상기 페이로드 데이터, 상기 제1 시스템 CRC 및 상기 제1 확장된 LBA로부터 도출된 트렁케이트된 LBA를 메모리에 기입하는, 전자 디바이스.
  14. 제13항에 있어서,
    상기 제1 확장된 LBA는 상기 메모리상의 데이터 섹터에 매핑되고;
    상기 메모리는 8개의 데이터 섹터를 포함하는 블록들로 매핑되고;
    상기 메모리에 기입된 상기 트렁케이트된 LBA는 상기 제1 확장된 LBA의 3개의 최하위 비트를 생략하는
    전자 디바이스.
  15. 제14항에 있어서,
    상기 제1 확장된 LBA는 512 바이트와 528 바이트 사이의 크기를 갖는 데이터 섹터에 매핑되고;
    상기 메모리는 대략 4 킬로바이트의 크기를 갖는 블록들로 매핑되는
    전자 디바이스.
  16. 제13항에 있어서,
    상기 제1 확장된 LBA를 포함하는 판독 동작을 수신하고;
    상기 메모리로부터 상기 페이로드 데이터, 상기 제1 시스템 CRC 및 상기 트렁케이트된 LBA를 검색하고;
    상기 트렁케이트된 LBA로부터 제2 확장된 LBA를 결정하기 위한 로직
    을 더 포함하는 전자 디바이스.
  17. 제16항에 있어서,
    상기 페이로드 데이터, 상기 명칭 공간 ID 및 상기 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고;
    상기 제2 시스템 CRC가 상기 제1 시스템 CRC와 매칭되지 않을 때 오류 루틴을 구현하기 위한 로직
    을 더 포함하는 전자 디바이스.
  18. 제16항에 있어서,
    페이로드 데이터, 상기 명칭 공간 ID 및 상기 제2 확장된 LBA를 이용하여 제2 시스템 순환 중복 검사(CRC) 값을 계산하고;
    상기 제2 시스템 CRC가 상기 제1 시스템 CRC와 매칭될 때 상기 페이로드 데이터를 반환하기 위한 로직
    을 더 포함하는 전자 디바이스.
KR1020167004854A 2013-09-28 2014-09-18 대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법 KR101720676B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/040,651 US9292379B2 (en) 2013-09-28 2013-09-28 Apparatus and method to manage high capacity storage devices
US14/040,651 2013-09-28
PCT/US2014/056216 WO2015047847A1 (en) 2013-09-28 2014-09-18 Apparatus and method to manage high capacity storage devices

Publications (2)

Publication Number Publication Date
KR20160035044A true KR20160035044A (ko) 2016-03-30
KR101720676B1 KR101720676B1 (ko) 2017-03-28

Family

ID=52741401

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167004854A KR101720676B1 (ko) 2013-09-28 2014-09-18 대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법

Country Status (5)

Country Link
US (2) US9292379B2 (ko)
EP (1) EP3049936A4 (ko)
KR (1) KR101720676B1 (ko)
CN (1) CN105474184B (ko)
WO (1) WO2015047847A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619326B2 (en) 2014-12-09 2017-04-11 Western Digital Technologies, Inc. Methods and systems for implementing redundancy in memory controllers
TWI541809B (zh) 2015-04-24 2016-07-11 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
US20160342463A1 (en) * 2015-05-20 2016-11-24 Kabushiki Kaisha Toshiba Data protection in a namespace
TWI566096B (zh) * 2015-09-11 2017-01-11 慧榮科技股份有限公司 資料儲存系統與其相關方法
JP6448571B2 (ja) * 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US11385689B2 (en) 2016-10-26 2022-07-12 Intel Corporation Integrated electronic card front EMI cage and latch for data storage system
KR20180047402A (ko) * 2016-10-31 2018-05-10 삼성전자주식회사 멀티 네임스페이스를 관리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10338842B2 (en) * 2017-05-19 2019-07-02 Samsung Electronics Co., Ltd. Namespace/stream management
US10275361B2 (en) * 2017-05-31 2019-04-30 Seagate Technology Llc Managing multiple namespaces in a non-volatile memory (NVM)
US10877842B2 (en) * 2017-09-08 2020-12-29 Intel Corporation Detecting silent data corruption for mass storage devices
US10430333B2 (en) 2017-09-29 2019-10-01 Intel Corporation Storage system with interconnected solid state disks
US20190114112A1 (en) * 2017-10-12 2019-04-18 Silicon Motion, Inc. Data storage management method and data storage system with namespace planning
US10530077B2 (en) 2017-11-08 2020-01-07 Intel Corporation Connector with a housing and one or more groups of contacts for a computing system
US11163489B2 (en) * 2018-05-23 2021-11-02 SK Hynix Inc. Workload clusterization for memory system and method of executing the same
US11054993B2 (en) 2019-05-28 2021-07-06 Intel Corporation Mass storage system having peer-to-peer data movements between a cache and a backend store
CN111913835A (zh) * 2020-07-30 2020-11-10 深圳忆联信息***有限公司 基于交叉映射的数据多备份存储方法、装置、计算机设备及存储介质
US20230145784A1 (en) * 2021-11-08 2023-05-11 Netapp, Inc. Combined garbage collection and data integrity checking for a distributed key-value store

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070214308A1 (en) * 2002-09-16 2007-09-13 Level 5 Networks Limited Network interface and protocol
KR20100133193A (ko) * 2009-06-11 2010-12-21 삼성전자주식회사 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5383204A (en) * 1993-06-29 1995-01-17 Mitsubishi Semiconductor America, Inc. Parallel encoding apparatus and method implementing cyclic redundancy check and Reed-Solomon codes
US6467060B1 (en) * 1998-06-26 2002-10-15 Seagate Technology Llc Mass storage error correction and detection system, method and article of manufacture
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
JP4300462B2 (ja) * 2003-04-23 2009-07-22 富士フイルム株式会社 情報記録再生方法及び装置
US8032674B2 (en) * 2004-07-19 2011-10-04 Marvell International Ltd. System and method for controlling buffer memory overflow and underflow conditions in storage controllers
JP2006134064A (ja) * 2004-11-05 2006-05-25 Hitachi Ltd 記憶メディアへの書込みエラーを検出する記憶制御装置及び方法
WO2008016170A1 (en) * 2006-07-31 2008-02-07 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
US7958331B2 (en) 2006-12-13 2011-06-07 Seagate Technology Llc Storage device with opportunistic address space
JP2008225558A (ja) * 2007-03-08 2008-09-25 Fujitsu Ltd データ中継集積回路、データ中継装置およびデータ中継方法
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US8452781B2 (en) 2009-01-27 2013-05-28 Palo Alto Research Center Incorporated System and method for using banded topic relevance and time for article prioritization
US7941696B2 (en) 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US8255620B2 (en) * 2009-08-11 2012-08-28 Texas Memory Systems, Inc. Secure Flash-based memory system with fast wipe feature
US20110040924A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
JP4901987B1 (ja) * 2010-09-14 2012-03-21 株式会社東芝 記憶装置、電子機器及び誤りデータの訂正方法
JP5221699B2 (ja) * 2011-03-23 2013-06-26 株式会社東芝 半導体記憶装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070214308A1 (en) * 2002-09-16 2007-09-13 Level 5 Networks Limited Network interface and protocol
KR20100133193A (ko) * 2009-06-11 2010-12-21 삼성전자주식회사 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법

Also Published As

Publication number Publication date
US20150095737A1 (en) 2015-04-02
US20170024275A1 (en) 2017-01-26
CN105474184B (zh) 2018-07-17
KR101720676B1 (ko) 2017-03-28
EP3049936A4 (en) 2017-04-26
US9292379B2 (en) 2016-03-22
WO2015047847A1 (en) 2015-04-02
EP3049936A1 (en) 2016-08-03
CN105474184A (zh) 2016-04-06

Similar Documents

Publication Publication Date Title
KR101720676B1 (ko) 대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법
CN106575346B (zh) 存储器中的加密完整性校验
US11221762B2 (en) Common platform for one-level memory architecture and two-level memory architecture
CN106663472B (zh) 非易失性存储器中的恢复算法
KR101839479B1 (ko) 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들
US10572339B2 (en) Memory latency management
KR101743409B1 (ko) 메모리 관리
JP6231194B2 (ja) 電子デバイス、メモリコントローラ、装置
TWI499908B (zh) 用以維持共享記憶體編程中之釋出一致性的方法及系統
US20220059163A1 (en) Extended memory communication
KR102549070B1 (ko) 휘발성 메모리에 대한 극성 기반 데이터 트랜스퍼 기능
US20150154107A1 (en) Non-volatile memory sector rotation
US20230409495A1 (en) Storage device, operation method of the storage device, and electronic system including the storage device

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