KR20140077167A - 매핑 영구형 저장장치 - Google Patents

매핑 영구형 저장장치 Download PDF

Info

Publication number
KR20140077167A
KR20140077167A KR1020147009069A KR20147009069A KR20140077167A KR 20140077167 A KR20140077167 A KR 20140077167A KR 1020147009069 A KR1020147009069 A KR 1020147009069A KR 20147009069 A KR20147009069 A KR 20147009069A KR 20140077167 A KR20140077167 A KR 20140077167A
Authority
KR
South Korea
Prior art keywords
aperture
processor
block
data
computer device
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
KR1020147009069A
Other languages
English (en)
Inventor
개리 고스틴
크래이그 워너
존 더블유 벅하우스
Original Assignee
휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. filed Critical 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Publication of KR20140077167A publication Critical patent/KR20140077167A/ko
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2024Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

저장장치에 액세스하기 위한 컴퓨터 장치 및 관련 방법이 제공된다. 하나의 양태에서, 제어기는 저장장치의 데이터 블록의 어드레스 범위를 복수의 프로세서 중 적어도 하나의 프로세서의 액세스 가능한 메모리 어드레스 범위로 매핑한다. 또 다른 양태에서, 제어기는 복수의 프로세서에 의해 복수의 메모리 내에 캐시된 데이터 블록의 사본이 일관성이 있다는 것을 보장한다.

Description

매핑 영구형 저장장치{MAPPING PERSISTENT STORAGE}
클라우드 컴퓨팅 및 휴대용 디바이스의 출현은 데이터에 대한 보다 빠르고 보다 신뢰할 만한 액세스에 대한 수요를 증가시켜왔다. 데이터베이스 성능은 프로세서에 의한 저장장치에 대한 평균 액세스 시간에 크게 의존한다. 지금까지의 시스템은 프로세서와 저장장치 사이의 데이터 전달의 성능을 향상시키기 위해 다양한 기법을 이용한다.
도 1은 본 출원의 양태에 따른 컴퓨터 장치를 예시한다.
도 2는 본 출원의 양태에 따른 제어기의 세부 예시도이다.
도 3은 프로세서 및 저장장치의 예시적인 어드레스 공간이다.
도 4는 본 출원의 양태에 따른 흐름도를 예시한다.
도 5는 본 출원의 양태에 따라 저장되고 있는 데이터의 실무적인 예이다.
도 6은 본 출원의 양태에 따라 프로세서로 전달되고 있는 데이터의 실무적인 예이다.
RAM(random access memory)으로부터의 데이터 검색은 일반적으로 저장장치로부터의 검색보다 빠르다. 따라서, 프로세서와 저장장치 사이의 지연(latency)을 최소로 하기 위한 과거의 많은 시도는 많은 RAM 캐싱(caching) 전략을 포함한다. 그러나, 저장장치 내에서 이용 가능한 어드레스 범위는 대체로 프로세서의 메모리 어드레스 공간보다 넓다. 따라서, 프로세서가 메모리 캐시 내의 저장장치의 필요한 부분에 액세스하는 것을 보장하기 위해 캐시된 데이터는 저장장치로부터 그리고 저장장치로 자주 전달되어야 한다. RAM과 저장장치 사이의 계속적인 교환은 결코 바람직하지 않고 성능에 부정적인 영향을 미친다.
본 출원의 양태는 프로세서를 직접 이용하여 저장장치에 액세스하는 컴퓨터 장치 및 방법을 제공한다. 하나의 양태에서, 영구형 저장 매체 내의 데이터 블록의 어드레스 범위는 복수의 프로세서 중 적어도 하나의 프로세서의 액세스 가능한 메모리 어드레스 범위로 매핑될 수 있다. 또 다른 양태에서, 복수의 메모리 내에 캐시된 데이터 블록의 요청된 부분들의 사본들의 일관성(consistency)이 유지된다.
본 출원의 양태, 특징 및 장점은 예 및 첨부 도면에 대한 다음의 설명에 관련하여 검토될 때 이해될 것이다. 본 출원은 다음의 설명으로 제한되지 않으며, 오히려 본 출원의 범위는 첨부된 특허청구범위 및 균등물에 의해 정의된다.
도 1은 본 출원의 양태에 따라 다양한 컴포넌트를 묘사하는 예시적인 컴퓨터 장치(100)의 개략적인 도면을 제공한다. 컴퓨터 장치(100)는 컴퓨터와 연결하는데 통상 사용되는 모든 컴포넌트를 포함할 수 있다. 예를 들어, 컴퓨터 장치(100)는 키보드, 마우스, 및/또는 펜-입력, 조이스틱, 버튼, 터치 스크린 등과 같은 다양한 다른 유형의 입력 디바이스는 물론 예를 들어 CRT, LCD, 플라즈마 스크린 모니터, TV, 프로젝터 등을 포함할 수 있는 디스플레이를 가질 수 있다. 컴퓨터 장치(100)는 프로세서(110 및 122), 메모리(112), 및 저장장치(114)도 또한 포함할 수 있다. 메모리(112)는 프로세서(110 및 122)에 의해 검색되고 실행될 수 있는 명령어(115)를 저장할 수 있다. 하나의 예에서, 메모리(112)는 DRAM(dynamic random access memory) 디바이스와 같은 RAM 디바이스일 수 있다. 또 다른 예에서, 메모리(112)는 DIMM(dual in-line memory module)으로서 구성된 복수의 메모리 세그먼트로 분할될 수 있다.
프로세서(110 및 122)는 인텔® 코포레이션으로부터의 프로세서와 같은 많은 주지의 프로세서일 수 있다. 대안으로, 프로세서는 ASIC(application specific integrated circuit)과 같이 동작을 실행하기 위한 전용 제어기일 수 있다. 프로세서(110 및 122)는 국부 캐시(111 및 123)를 각각 포함할 수 있다. 각각의 국부 캐시는 SRAM(static random access memory) 디바이스로부터 단일 레벨 캐시 메모리로서 또는 캐시 계층(cache hierarchy)을 갖는 멀티레벨 캐시 메모리로서 형성될 수 있다. 프로세서(110 및 122)는 키보드, 마우스, 또는 모니터와 같은 기본적인 입력/출력 디바이스에 접속하는 입력/출력(I/O) 인터페이스(113)에도 또한 통신 가능하게 결합될 수 있다. 오직 두 개의 프로세서 및 한 개의 메모리가 도 1에 도시되어 있지만, 컴퓨터 장치(100)가 추가 프로세서 및 메모리를 가질 수 있으며 도 1이 단지 예시적이라는 것이 이해된다.
명령어(115)는 프로세서에 의해 직접적으로{예를 들어, 기계어(machine code)) 또는 간접적으로(예를 들어, 스크립트(script)} 실행되는 임의의 명령어 세트를 포함할 수 있다. 그와 관련하여, 용어 "명령어(instruction)", "단계(step)", 및 "프로그램(program)"은 본 명세서에서 호환 가능하게 사용될 수 있다. 명령어는 예를 들어 객체 코드(object code) 내에 또는 소스 코드(source code)의 모듈 내에 임의의 컴퓨터 언어 또는 포맷으로 저장될 수 있다. 명령어(115)는 저장장치(114)에 데이터를 쓰고 저장장치(114)로부터 데이터를 읽도록 프로세서(110 및 122)를 구성할 수 있다.
저장장치(114)는 정보가 프로세서(110 및 122)에 의해 검색되고, 조작되고, 저장되게 허용하는 저장 매체일 수 있다. 저장장치(114)는 1971년 레온 추아(Leon Chua)에 의해 상정된 멤리스터(memristor) 기술을 이용할 수 있다. 명칭 멤리스터는 메모리 저항기(memory resistor)의 약어이다. 멤리스터는 저항 상태가 이전의 상태 및 현재의 전기 바이어싱 조건(electrical biasing condition)에 의존하는 두 개의 터미널 패시브 디바이스(terminal passive device)이다. 간단한 구조 및 전기적 수동성(electrical passivity)을 고려할 때, 멤리스터는 저장 매체로서 사용하도록 조정될 수 있다. 그러나, 저장장치(114)는 PCM(phase change memory) 또는 STT-RAM(spin-torque transfer RAM)과 같이 다른 유형의 비휘발성 저장 디바이스일 수 있다. 또 다른 예에서, 저장장치는 플래시 메모리 또는 배터리 지원형 DRAM(battery backed DRAM)일 수 있다. 저장장치(114)도 또한 DIMM으로서 구성된 복수의 세그먼트로 분할될 수 있다. 또 다른 예에서, 저장장치(114)는 프로세서(110 및 122)로부터 물리적으로 떨어져 있지만 여전히 프로세서(110)에 의해 액세스 가능한 위치에 존재할 수 있다. 또 다른 예에서, 데이터는 복수의 저장 디바이스 전체에 걸쳐 분산될 수 있다.
도 1은 저장장치(114)와 프로세서(110 및 122) 사이의 통신을 다루는 모든 유형의 칩셋 또는 제어 논리(control logic)일 수 있는 제어기(116)도 또한 도시한다. 제어기(116)는 PLD(programmable logic device), PLA(programmable logic array), ASIC 등일 수 있다. 제어기(116)와 프로세서(110 및 122)를 통신 가능하게 결합하기 위해 제 1 버스(118)가 이용될 수 있다. 제 1 버스(118)는 인텔® 퀵패스 인터컨넥트(QuickPath Interconnect)와 같은 고속/고주파수 시리얼 링크(high speed/frequency serial link)일 수 있다. 또 다른 예에서, 제 1 버스(118)는 2008년 8월 18일 배포된 하이퍼트랜스포트 사양(HyperTransport Specification), 수정(Revision) 3.1(하이퍼트랜스포트 테크놀로지 컨소시엄(HyperTransport Technology Consortium)) 및/또는 다른 수정을 준수할 수 있다. 제 2 버스(120)는 제 1 버스(118)와 동일한 또는 상이한 기술일 수 있다. 도 1이 프로세서(110), 프로세서(122), 및 저장장치(114)에 직접 결합된 제어기(116)를 도시하지만, 그들 사이에 다른 컴포넌트 또는 디바이스가 배열되어 구성될 수 있다는 것이 이해되어야 한다. 그와 관련하여, 프로세서(110), 프로세서(122), 메모리(112) 및 I/O 인터페이스(113) 사이에 다른 컴포넌트 또는 디바이스가 배열되어 구성될 수 있다는 것이 이해되어야 한다. 비록 컴퓨터 장치(100)의 모든 컴포넌트가 동일한 블록 내에 존재하는 것으로 도 1에 기능적으로 예시되지만, 컴포넌트가 동일한 물리적 하우징 내에 저장될 수 있거나 저장되지 않을 수 있다는 것이 이해될 것이다.
컴퓨터 장치(100)는 IEEE(Institute of Electrical and Electronic Engineers), 표준 802.3에 의해 망라된 표준을 구현하는 이더넷(Ethernet) 인터페이스와 같은 다른 컴퓨터 또는 디바이스와 통신하기에 적절한 회로(도시되지 않음)를 포함할 수 있다. 또 다른 예에서, 컴퓨터 장치(100)는 IEEE 802.11 표준에 따른 Wi-Fi(wireless fidelity) 인터페이스를 이용할 수 있다. 블루투스(Bluetooth) 또는 토큰 링(token ring)과 같은 다른 표준 또는 프로토콜이 이용될 수 있다는 것이 이해된다.
도 2는 본 개시사항의 양태에 따른 제어기(116)의 상세도를 도시한다. 제어기(116)의 하나의 가능한 기능은 블록 201에 인용된 바와 같이 영구형 저장 매체 내의 데이터 블록의 하나의 어드레스를 복수의 프로세서 중 적어도 하나의 프로세서의 액세스 가능한 메모리 어드레스 범위로 매핑하는 것일 수 있다. 본 명세서에서 애퍼처(aperture)는 프로세서의 액세스 가능한 메모리 어드레스 범위 내의 사전결정된 어드레스 범위로서 정의된다. 디스크립터 표(descriptor table, 212)는 복수의 디스크립터(descriptor)를 저장할 수 있으며, 각각의 디스크립터는 애퍼처와 저장장치의 블록 사이의 연관을 포함할 수 있다. 디스크립터 내에서 애퍼처와 저장장치의 블록 사이의 연관이 변경될 수 있지만, 하나의 디스크립터는 오직 하나의 애퍼처에 연관될 수 있다. 애퍼처의 저장장치의 블록과의 연관은 디스크립터 내에 표시된 저장장치의 블록을 수정함으로써 변경될 수 있다. 그런 다음, 저장장치의 블록은 애퍼처의 어드레스 범위를 통해 프로세서 또는 I/O 디바이스에 의해 직접 액세스될 수 있다. 각각의 디스크립터는 애퍼처에 연관되는 저장장치의 블록의 포인터(pointer) 또는 인덱스(index), 및 애퍼처에 대응하는 저장장치의 블록에 대해 허용된 액세스 유형(예를 들어, 판독 액세스, 기록 액세스 등)을 표시하는 적어도 하나의 플래그(flag)도 또한 포함할 수 있다. 도 2가 제어기(116) 내에 배열된 디스크립터 표(212)를 도시하지만, 디스크립터 표(212)가 제어기(116) 이외의 다른 위치에서 휘발성 또는 비휘발성 메모리 내에 저장될 수 있다는 것이 이해될 것이다. 디스크립터 표(212)는 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합의 형태로 구현될 수 있다.
제어기(116)의 또 다른 가능한 기능은 블록 202에 인용된 바와 같이 복수의 프로세서에 의해 복수의 메모리 내에 캐시된 데이터 블록의 요청된 부분들의 사본들이 일관성이 있다는 것(즉, 캐시 일관성)을 보장하는 것일 수 있다. 메모리는 캐시 메모리 또는 다른 국부 메모리일 수 있다. 제어기(116)는 예를 들어 프로세서와 저장장치 사이의 캐시 일관성을 관리하기 위한 하드와이어식 상태 머신(hardwired state machine)일 수 있는 캐시 일관성 엔진(117)을 포함할 수 있다. 캐시 일관성 엔진(117)은 하나의 프로세서에 의한 데이터의 갱신이 다른 프로세서에 의해 캐시된 동일한 데이터의 사본에 적용되는 것을 보장할 수 있다. 또 다른 예에서, 캐시 일관성 엔진(117)은 저장장치(114) 내의 데이터가 프로세서에 의해 캐시된 데이터와 일관성이 있다는 것을 보장할 수 있다. 디스크립터 표(212)와 마찬가지로, 캐시 일관성 엔진(117)도 또한 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합의 형태로 구현될 수 있다.
도 3에서, 어드레스 공간(302)은 프로세서의 예시적인 메모리 어드레스 공간을 표현하고, 어드레스 공간(303)은 저장장치의 예시적인 어드레스 공간을 표현한다. 프로세서에 의해 액세스 가능한 메모리 어드레스 범위는 일반적으로 어드레스 버스의 폭과 레지스터(register)에 의해 제한된다. 저장장치의 어드레스 범위는 대체로 프로세서에 의해 액세스 가능한 범위보다 넓다. 예를 들어, 저장장치(114)가 멤리스터 저장 디바이스이면, 저장장치(114)의 어드레스 범위는 대략 264 바이트일 수 있는 반면 프로세서의 어드레스 범위는 대략 246 바이트일 수 있다. 또한, 프로세서의 어드레스 공간의 일부분은 다른 목적을 위해 유보될 수 있다. 도 3의 예에서, 어드레스 범위(304)는 메모리(112) 전용인 어드레스 공간 영역이다.
하나의 예에서, 애퍼처의 크기는 컴퓨터 장치(100)의 운영 시스템에 의해 결정된 저장장치의 블록 크기와 일치할 수 있다. 또 다른 예에서, 명령어(115)는 애퍼처의 크기를 결정할 수 있다. 애퍼처는 저장장치(즉, 저장장치의 블록) 내의 동일한 크기의 어드레스 범위에 대응할 수 있다. 예를 들어, 도 3의 애퍼처(306 내지 312)는 데이터 블록(322 내지 328)에 각각 대응할 수 있다. 데이터 블록(322 내지 328)은 어드레스 공간(303)을 통해 산재되는 것으로 도시된다. 각각의 디스크립터(336 내지 342)는 애퍼처와 저장장치의 블록 사이의 연관을 표현한다. 프로세서(110)가 예를 들어 저장장치의 블록(322)으로부터 데이터의 일부분을 요청하면, 도 3에 도시된 바와 같이, 프로세서(110)는 애퍼처(306)를 저장장치의 블록(322)와 연관시키는 디스크립터(336)를 사용할 수 있다. 애퍼처(306)가 프로세서(110)의 어드레스 공간 내에서 어드레스 범위를 가지므로, 프로세서는 애퍼처(306)의 어드레스를 참조함으로써 저장장치의 블록(322)의 일부분에 액세스할 수 있다. 따라서, 비록 프로세서의 어드레스가 프로세서의 어드레스 공간 외부에 존재할지라도, 프로세서(110)는 여전히 저장장치의 블록(322)에 액세스할 수 있다.
시스템 및 방법의 하나의 실시예가 도 4 내지 도 6에 도시된다. 특히, 도 4는 데이터를 저장장치로부터 복수의 프로세서 중 하나의 프로세서로 직접 전달하기 위한 프로세스(400)의 흐름도를 예시한다. 용이하게 설명하기 위해, 다음의 실무적인 예는 제어기(116)와 프로세서(110) 사이의 통신에 집중한다. 도 5 및 도 6은 저장장치 데이터 전달의 양태를 예시한다. 도 5 및 도 6에 도시된 작용은 도 4의 흐름도를 참조하여 후술될 것이다.
도 4의 블록 401에서, 프로세서는 애퍼처를 선택한다. 애퍼처를 저장장치의 블록과 연관시키기 전에, 블록 402에 도시된 바와 같이, 프로세서(110)는 애퍼처에 연관된 디스크립터가 캐시되었는지를 판단할 수 있다. 디스크립터가 캐시되지 않으면, 블록 404에 도시된 바와 같이, 캐시 오류가 발생하고, 프로세서(110)는 디스크립터를 요청할 수 있다. 디스크립터를 제공하기 전에, 블록 408에서, 제어기(116)는 애퍼처에 현재 연관된 데이터 블록의 이전에 요청된 부분이 국부 캐시(111)와 같은 메모리 내에 여전히 캐시되어 있는지를 판단할 수 있다. 데이터 블록의 이전에 요청된 부분이 메모리 내에 캐시되어 있으면, 블록 410에 도시된 바와 같이, 제어기(116)는 임의의 수정된 데이터를 저장장치(114) 내의 대응하는 데이터 블록으로 전달하면서 데이터 블록 부분을 메모리로부터 제거할 수 있다. 이는 프로세서가 디스크립터에 액세스하기 전에 데이터 블록에 대한 모든 수정이 저장장치(114) 내에 저장되어 기억되었다는 것을 보장할 수 있다. 도 5 내의 예를 참조하면, 프로세서(110)의 국부 캐시(111)는 애퍼처(306)를 갖는 것으로 도시되어 있으며, 애퍼처(306)는 저장장치(114)로부터의 블록(322)의 이전에 검색된 사본을 포함할 수 있다. 도 5의 시간 t1에서, 프로세서(110)는 캐시 일관성 엔진(117)으로부터 디스크립터를 요청할 수 있다. 디스크립터를 프로세서(110)로 전송하기 전에, 시간 t2에서, 제어기(116)의 캐시 일관성 엔진(117)은 애퍼처(306)의 콘텐츠를 국부 캐시(111)로부터 제거할 수 있다. 시간 t3에서, 캐시 일관성 엔진(117)은 애퍼처(306)의 콘텐츠를 저장장치(114) 내의 대응하는 어드레스 내에 저장할 수 있다. 도 5의 예에서, 디스크립터 표(212)의 디스크립터(336)는 애퍼처(306)가 저장장치 내의 어드레스(322)에 연관되는 것을 표시한다.
도 4의 블록 412에서, 제어기(116)는 디스크립터를 프로세서(110)로 전송할 수 있다. 도 5에 도시된 바와 같이, 시간 t4에서, 프로세서(110)는 디스크립터를 수신할 수 있고, 프로세서가 디스크립터를 보정하게 허용하면서 디스크립터를 위치(502)에서 캐시(111) 내에 저장할 수 있다. 도 4를 다시 참조하면, 블록 406에 도시된 바와 같이, 프로세서는 대응하는 애퍼처를 상이한 저장장치의 블록과 연관시키도록 디스크립터를 보정할 수 있다. 이제, 도 6을 참조하면, 캐시 위치(502)에서 디스크립터는 애퍼처(306)에 연관된 데이터 블록을 322로부터 333으로 변화시키도록 변화될 수 있다. 도 4의 블록 407에서, 프로세서는 이제 새로 선택된 저장장치의 블록인 데이터 블록(333)으로 매핑되는 애퍼처의 일부분에 액세스할 수 있다. 블록 414에서, 프로세서(110)는 새로 매핑된 저장장치의 블록으로부터의 데이터의 요청된 부분이 선택된 애퍼처를 통해 캐시되었는지 판단할 수 있다. 데이터가 캐시되지 않았으면, 블록 417에 도시된 바와 같이, 캐시 오류가 발생하고, 프로세서는 애퍼처를 통해 저장장치로부터 데이터 블록의 일부분을 요청할 수 있다. 데이터를 보내기 전에, 블록 416에 도시된 바와 같이, 제어기(116)는 디스크립터가 캐시되었는지 판단할 수 있다. 디스크립터가 캐시되었으면, 블록 418에 도시된 바와 같이, 제어기(116)는 디스크립터를 제거할 수 있다. 블록 419에 도시된 바와 같이, 제어기는 보정된 디스크립터를 디스크립터 표 내에 저장할 수 있으며, 보정된 디스크립터는 애퍼처 매핑을 변화시킨다. 이는 프로세서가 데이터 블록에 액세스하기 전에 이전에 요청된 디스크립터에 대한 수정이 저장되는 것을 보장할 수 있다. 도 6의 예는 디스크립터 표(212)의 디스크립터(336) 내에 저장되어 있는 애퍼처(306)와 저장장치의 블록(333) 사이의 연관을 예시한다. 도 6의 시간 t1에서, 프로세서(110)는 애퍼처(306)을 통해 새로운 데이터 블록의 일부분을 요청할 수 있다. 캐시 일관성 엔진(117)은 시간 t2에서 디스크립터를 검색할 수 있고, 시간 t3에서 디스크립터를 디스크립터 표(112) 내에 저장할 수 있다. 시간 t4에서, 요청된 데이터 블록 부분은 애퍼처(306)를 통해 블록(333)으로부터 프로세서(110)로 전달될 수 있다. 도 4를 다시 참조하면, 도 4의 블록 420에서, 제어기(116)는 이제 데이터를 애퍼처(306)를 통해 저장장치로부터 프로세서로 전송할 수 있다. 블록 422에서, 프로세서는 데이터를 수신할 수 있고, 블록 424에서, 프로세서는 데이터에 액세스할 수 있다.
유리하게는, 전술된 장치 및 방법은 프로세서의 어드레스 범위보다 넓은 어드레스 범위를 갖는 저장 디바이스로부터의 데이터에 프로세서가 직접 액세스하게 허용한다. 이와 관련하여, 프로그램이 데이터베이스에 액세스하는 속도가 향상된다. 결국, 최종 사용자는 보다 적은 데이터 검색 지연을 경험한다.
본 명세서에서 개시가 특정 예에 관해 설명되었지만, 이들 예가 본 개시의 원리를 단지 예시한다는 점이 이해되어야 한다. 그러므로, 예가 다양하게 수정될 수 있는 것은 물론 첨부된 특허청구범위에 의해 정의된 바와 같이 개시된 예의 사상 및 범위를 벗어나지 않으면서 다른 배열이 고안될 수 있다는 점이 이해되어야 한다. 또한, 첨부 도면에는 특정 프로세스가 특정 순서로 도시되지만, 이러한 프로세스는 이러한 순서가 본 명세서에서 명시적으로 제시되지 않는 한 특정 순서로 제한되지 않는다. 오히려, 다양한 단계가 상이한 순서로 또는 동시에 다루어질 수 있고, 단계가 생략되거나 추가될 수 있다.

Claims (15)

  1. 제어기를 포함하는 컴퓨터 장치로서,
    상기 제어기는
    영구형 저장 매체 내의 데이터 블록의 어드레스 범위를 복수의 프로세서 중 적어도 하나의 프로세서의 액세스 가능한 메모리 어드레스 범위로 매핑하고,
    상기 복수의 프로세서에 의해 복수의 메모리 내에 캐시된 데이터 블록의 요청된 부분의 사본이 일관성있게 유지되는 것을 보장하는
    컴퓨터 장치.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는
    애퍼처(aperture)를 선택하고 - 상기 애퍼처는 상기 적어도 하나의 프로세서의 상기 액세스 가능한 메모리 어드레스 범위 내에 존재하는 사전결정된 어드레스 범위이고, 상기 애퍼처의 상기 사전결정된 어드레스 범위는 상기 데이터 블록의 상기 어드레스 범위에 연관됨 -,
    상기 데이터 블록의 요청된 부분에 액세스하도록 상기 애퍼처의 상기 사전결정된 어드레스 범위 내의 하나의 어드레스를 참조하는
    컴퓨터 장치.
  3. 제 2 항에 있어서,
    상기 제어기는 디스크립터를 저장하는 제어기이고, 상기 디스크립터는 상기 애퍼처와 상기 데이터 블록 사이의 연관을 포함하는
    컴퓨터 장치.
  4. 제 3 항에 있어서,
    상기 디스크립터는 상기 애퍼처에 연관되는
    컴퓨터 장치.
  5. 제 4 항에 있어서,
    상기 디스크립터는 상기 데이터 블록으로의 인덱스 또는 포인터와, 상기 애퍼처를 통해 액세스될 때 상기 데이터 블록에 대한 액세스 허용을 표시하는 적어도 하나의 플래그를 더 포함하는
    컴퓨터 장치.
  6. 제 4 항에 있어서,
    상기 제어기는 하나의 프로세서에 의해 캐시된 디스크립터 및 상기 애퍼처의 사본이 다른 프로세서에 의해 캐시된 디스크립터 및 상기 애퍼처의 다른 사본과 일관성이 있음을 보장하는
    컴퓨터 장치.
  7. 제 6 항에 있어서,
    상기 제어기는
    이전에 요청된 데이터 블록에 대한 프로세서에 의한 수정이 상기 프로세서가 상기 디스크립터에 액세스하기 전에 저장되는 것을 보장하고,
    이전에 요청된 데이터 블록에 대한 프로세서에 의한 수정이 상기 프로세서가 상기 데이터 블록에 액세스하기 전에 저장되는 것을 보장하는
    컴퓨터 장치.
  8. 제 1 항에 있어서,
    상기 영구형 저장 매체는 멤리스터(memristor) 디바이스인
    컴퓨터 장치.
  9. 제어기를 포함하는 컴퓨터 장치로서,
    상기 제어기는
    복수의 프로세서 중 적어도 하나의 프로세서의 액세스 가능한 메모리 어드레스 범위 내의 사전결정된 어드레스 범위인 애퍼처를 멤리스터 저장 디바이스 내의 데이터 블록에 연관시키고 - 상기 애퍼처의 상기 사전결정된 어드레스 범위는 상기 데이터 블록의 어드레스 범위에 대응함 -,
    상기 데이터 블록의 요청된 부분을 상기 애퍼처를 통해 상기 적어도 하나의 프로세서로 전달하고,
    상기 복수의 프로세서에 의해 복수의 메모리 내에 캐시된 상기 데이터 블록의 요청된 부분의 사본이 일관성있게 유지되는 것을 보장하는
    컴퓨터 장치.
  10. 제 9 항에 있어서,
    상기 적어도 하나의 프로세서는
    상기 애퍼처를 선택하고,
    상기 데이터 블록의 상기 요청된 부분에 액세스하도록 상기 애퍼처의 상기 사전결정된 어드레스 범위 내의 하나의 어드레스를 참조하는
    컴퓨터 장치.
  11. 제 9 항에 있어서,
    상기 제어기는 상기 애퍼처와 상기 데이터 블록 사이의 연관을 포함하는 디스크립터를 저장하는
    컴퓨터 장치.
  12. 제 11 항에 있어서,
    상기 디스크립터는 상기 애퍼처에 연관되는
    컴퓨터 장치.
  13. 제 12 항에 있어서,
    상기 디스크립터는 상기 데이터 블록과 연관되는 인덱스 또는 포인터와, 상기 애퍼처를 통해 액세스될 때 상기 데이터 블록에 대한 액세스 허용을 표시하는 적어도 하나의 플래그를 더 포함하는
    컴퓨터 장치.
  14. 제 13 항에 있어서,
    상기 제어기는 하나의 프로세서에 의해 캐시된 디스크립터 및 상기 애퍼처의 사본이 다른 프로세서에 의해 캐시된 디스크립터 및 상기 애퍼처의 다른 사본과 일관성이 있음을 보장하는
    컴퓨터 장치.
  15. 제 13 항에 있어서,
    상기 제어기는
    이전에 요청된 데이터 블록에 대한 프로세서에 의한 수정이 상기 프로세서가 상기 디스크립터에 액세스하기 전에 저장되는 것을 보장하고,
    이전에 요청된 데이터 블록에 대한 프로세서에 의한 수정이 상기 프로세서가 상기 데이터 블록에 액세스하기 전에 저장되는 것을 보장하는
    컴퓨터 장치.
KR1020147009069A 2011-10-07 2011-10-07 매핑 영구형 저장장치 Withdrawn KR20140077167A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/055226 WO2013052061A1 (en) 2011-10-07 2011-10-07 Mapping persistent storage

Publications (1)

Publication Number Publication Date
KR20140077167A true KR20140077167A (ko) 2014-06-23

Family

ID=48044035

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147009069A Withdrawn KR20140077167A (ko) 2011-10-07 2011-10-07 매핑 영구형 저장장치

Country Status (5)

Country Link
US (2) US9342452B2 (ko)
EP (1) EP2764439B1 (ko)
KR (1) KR20140077167A (ko)
CN (1) CN103890737B (ko)
WO (1) WO2013052061A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9715453B2 (en) * 2014-12-11 2017-07-25 Intel Corporation Computing method and apparatus with persistent memory
US10146699B2 (en) * 2015-04-30 2018-12-04 Hewlett Packard Enterprise Development Lp Mapping apertures of different sizes
CN105718242B (zh) * 2016-01-15 2018-08-17 中国人民解放军国防科学技术大学 多核dsp中支持软硬件数据一致性的处理方法及系统
US10503643B1 (en) 2018-07-11 2019-12-10 Qualcomm Incorporated Cache coherence with functional address apertures
CN110347614B (zh) * 2019-07-08 2022-08-12 镕铭微电子(济南)有限公司 存储空间映射算法、缓存状态机、存储装置、存储介质
US12373360B2 (en) * 2022-09-30 2025-07-29 Xilinx, Inc. Integrated circuit transaction redundancy

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5895489A (en) * 1991-10-16 1999-04-20 Intel Corporation Memory management system including an inclusion bit for maintaining cache coherency
US5860079A (en) * 1996-05-10 1999-01-12 Apple Computer, Inc. Arrangement and method for efficient calculation of memory addresses in a block storage memory system
US6073209A (en) 1997-03-31 2000-06-06 Ark Research Corporation Data storage controller providing multiple hosts with access to multiple storage subsystems
US6332165B1 (en) 1997-09-05 2001-12-18 Sun Microsystems, Inc. Multiprocessor computer system employing a mechanism for routing communication traffic through a cluster node having a slice of memory directed for pass through transactions
US6138176A (en) 1997-11-14 2000-10-24 3Ware Disk array controller with automated processor which routes I/O data according to addresses and commands received from disk drive controllers
US7073043B2 (en) * 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7231470B2 (en) * 2003-12-16 2007-06-12 Intel Corporation Dynamically setting routing information to transfer input output data directly into processor caches in a multi processor system
US7302514B2 (en) 2004-06-15 2007-11-27 Intel Corporation Device, system, and method of virtual machine memory mapping
US7613876B2 (en) * 2006-06-08 2009-11-03 Bitmicro Networks, Inc. Hybrid multi-tiered caching storage system
US7734889B1 (en) * 2006-12-22 2010-06-08 Emc Corporation Methods and apparatus for distributing information to multiple nodes
US20090019232A1 (en) * 2007-07-11 2009-01-15 Freescale Semiconductor, Inc. Specification of coherence domain during address translation
US7882327B2 (en) 2007-07-31 2011-02-01 Advanced Micro Devices, Inc. Communicating between partitions in a statically partitioned multiprocessing system
US8966219B2 (en) * 2007-10-30 2015-02-24 International Business Machines Corporation Address translation through an intermediate address space
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US7769919B2 (en) 2008-05-15 2010-08-03 International Business Machines Corporation Protecting computer memory from simultaneous direct memory access operations using active and inactive translation tables
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
WO2011031903A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for allocating storage
US8898417B1 (en) * 2009-10-20 2014-11-25 Micron Technology, Inc. Block-based storage device with a memory-mapped interface

Also Published As

Publication number Publication date
EP2764439A4 (en) 2015-07-15
US10025716B2 (en) 2018-07-17
CN103890737B (zh) 2016-09-21
EP2764439A1 (en) 2014-08-13
US9342452B2 (en) 2016-05-17
CN103890737A (zh) 2014-06-25
EP2764439B1 (en) 2019-06-26
US20160232094A1 (en) 2016-08-11
WO2013052061A1 (en) 2013-04-11
US20140250274A1 (en) 2014-09-04

Similar Documents

Publication Publication Date Title
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
KR101845371B1 (ko) 오프-다이 캐시 메모리의 태그들의 세트들을 캐시하기 위한 방법, 장치, 및 시스템
EP2472412B1 (en) Explicitly regioned memory organization in a network element
US10019377B2 (en) Managing cache coherence using information in a page table
US10503655B2 (en) Data block sizing for channels in a multi-channel high-bandwidth memory
US20170344430A1 (en) Method and apparatus for data checkpointing and restoration in a storage device
US20170255565A1 (en) Method and apparatus for providing a contiguously addressable memory region by remapping an address space
US10025716B2 (en) Mapping processor address ranges to persistent storage
US10402338B2 (en) Method and apparatus for erase block granularity eviction in host based caching
US11836087B2 (en) Per-process re-configurable caches
KR20170130388A (ko) 비대칭 세트 결합된 캐시
US20170255561A1 (en) Technologies for increasing associativity of a direct-mapped cache using compression
CN107408079A (zh) 带有一致单元的多级别系统存储器的存储器控制器
US20170357462A1 (en) Method and apparatus for improving performance of sequential logging in a storage device
CN108694133A (zh) 用于即时高速缓存关联性的装置、方法和系统
US20260023689A1 (en) Systems, methods, and apparatus for accessing data in versions of memory pages
US20240211406A1 (en) Systems, methods, and apparatus for accessing data from memory or storage at a storage node
US11526448B2 (en) Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
US20200142623A1 (en) Storage device and electronic device managing data transmitted to storage device

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20140404

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
N231 Notification of change of applicant
PN2301 Change of applicant

Patent event date: 20160610

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

PC1203 Withdrawal of no request for examination
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid