KR102180975B1 - 랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템 - Google Patents

랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템 Download PDF

Info

Publication number
KR102180975B1
KR102180975B1 KR1020150025999A KR20150025999A KR102180975B1 KR 102180975 B1 KR102180975 B1 KR 102180975B1 KR 1020150025999 A KR1020150025999 A KR 1020150025999A KR 20150025999 A KR20150025999 A KR 20150025999A KR 102180975 B1 KR102180975 B1 KR 102180975B1
Authority
KR
South Korea
Prior art keywords
memory
data
memory area
read
reading
Prior art date
Application number
KR1020150025999A
Other languages
English (en)
Other versions
KR20150100565A (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 KR20150100565A publication Critical patent/KR20150100565A/ko
Application granted granted Critical
Publication of KR102180975B1 publication Critical patent/KR102180975B1/ko

Links

Images

Classifications

    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • 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
    • 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

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

메모리의 데이터를 액세스하는 시스템, 방법 및 컴퓨터 프로그램 제품 실시예들이 여기에서 개시된다. 방법의 실시예는, 메모리의 적어도 제1 메모리 영역 및 제2 메모리 영역에 걸쳐 저장되는 데이터에 대한 하나 이상의 요청들을 수신함으로써 동작한다. 상기 방법은, 상기 메모리의 제1 메모리 영역 내에서 데이터의 랩핑된 판독(wrapped read)을, 적어도 하나의 프로세서에 의해, 수행하는 것을 계속한다. 상기 방법은, 이후, 상기 메모리의 제2 메모리 영역 내에서 데이터의 연속적인 판독(continuous read)을, 상기 적어도 하나의 프로세서에 의해 수행하고, 상기 제2 메모리 영역은 상기 제1 메모리 영역과 인접한다. 상기 연속적인 판독은 상기 제2 메모리 영역의 제1 경계에서 시작하고, 상기 연속적인 판독은 상기 제1 메모리 영역 내에서 데이터의 랩핑된 판독 이후에 자동적으로 수행된다.

Description

랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템{MEMORY SUBSYSTEM WITH WRAPPED-TO-CONTINUOUS READ}
본 발명은 메모리의 데이터를 액세스하는 시스템, 방법 및 컴퓨터 프로그램 제품에 관한 것이다.
상업적인 데이터 베이스 시스템들은 성능을 향상시키기 위한 캐싱 기술들에 의존한다. 캐시(cache)들은, 디스크-기반 저장장치들과 같은, 액세스하는 오래걸리는 저장장치와는 반대로, 랜덤 액세스 메모리(RAM)와 같은, 빠르게 액세스할 수 있는 메모리를 지원하도록 종종 구현된다. 캐시들은 통상적으로 자주 사용되는 데이터를 저장하고, 데이터 페이지에 액세스하기 위해 데이터베이스 시스템에 의해 요구되는 시간을 감소시킨다.
일반적으로, 메모리 액세스 제어기는, 버스 마스터(bus master)로부터 각 판독 또는 기입 트랜잭션(transaction) 요청마다 칩 선택 신호의 표명(assertion)으로 판독 또는 기입 동작들을 개시한다. 상기 메모리로부터 판독되고 상기 캐시의 하나 이상의 캐시라인들을 채우기 위해 사용되는 데이터의 청크(chunk)들은, 상기 메모리의 하나 보다 많은 메모리 영역에 걸쳐 저장될 수 있고, 상기 메모리는, 통상적으로, 관련된 캐시라인으로 기입되는 데이터의 각 청크에 대한 개별 판독 명령어들을 발행(issue)하는 것을 필요로 한다. 상기 메모리에 관한 다수의 판독 요청들에 대한 필요는, 상기 메모리에 대한 상기 지연 및 액세스 시간을 증가시킨다.
복수의 메모리 디바이스들로부터 데이터를 액세스하는 시스템, 방법 및 컴퓨터 프로그램 제품 실시예들 및/또는 그것들의 조합 및 하위-조합이 여기에서 제공된다.
일 실시예는 캐시를 액세스하는 컴퓨터로 구현되는 방법을 포함한다. 상기 방법은 메모리의 적어도 제1 메모리 영역 및 제2 메모리 영역에 걸쳐 저장되는 데이터에 대한 하나 이상의 요청(request)들을 수신함으로써 동작된다. 상기 방법은상기 메모리의 제1 메모리 영역 내에서 데이터의 랩핑된 판독(wrapped read)을, 적어도 하나의 프로세서에 의해, 수행하는 것을 계속한다. 상기 방법은, 이후, 상기 메모리의 제2 메모리 영역 내에서 데이터의 연속적인 판독(continuous read)을, 상기 적어도 하나의 프로세서에 의해, 수행하고, 상기 제2 메모리 영역은 상기 제1 메모리 영역과 인접한다. 상기 연속적인 판독은 상기 제2 메모리 영역의 제1 경계(boundary)에서 시작하고, 상기 연속적인 판독은 상기 제1 메모리 영역 내에서 데이터의 랩핑된 판독 이후에 자동적으로 수행된다.
다른 실시예는 시스템을 포함한다. 상기 시스템은 복수의 메모리 디바이스들과; 그리고 상기 복수의 메모리 디바이스들에 연결되는 메모리 제어기를 포함한다. 상기 메모리 제어기는, 상기 복수의 메모리 디바이스들의 적어도 제1 메모리 영역 및 제2 메모리 영역에 걸쳐 저장되는 데이터에 대한 하나 이상의 요청들을 수신하도록 설계된다. 상기 메모리 제어기는 또한 상기 메모리의 제1 메모리 영역 내에서 데이터의 랩핑된 판독을 수행한다. 상기 메모리 제어기는 또한 상기 메모리의 제2 메모리 영역 내에서 데이터의 연속적인 판독을 수행하도록 설계되고, 상기 제2 메모리 영역은 상기 제1 메모리 영역과 인접한다. 상기 연속적인 판독은 상기 제2 메모리 영역의 제1 경계에서 시작한다. 상기 복수의 메모리 디바이스들은, 상기 제1 메모리 영역 내에서 데이터의 랩핑된 판독을 수행한 이후에, 상기 데이터의 연속적인 판독이 상기 제2 메모리 영역의 제1 경계에서 자동적으로 시작되도록 설계된다.
다른 실시예는, 적어도 하나의 컴퓨팅 디바이스에 의해 실행될 때, 상기 컴퓨팅 디바이스로 하여금 동작들을 수행하도록 하는 명령어들을 저장한 유형의(tangible) 컴퓨터-판독가능한 디바이스를 포함한다. 상기 동작들은, 메모리의 적어도 제1 메모리 영역 및 제2 메모리 영역에 걸쳐 저장되는 데이터에 대한 하나 이상의 요청들을 수신하는 것을 포함한다. 상기 동작들은, 상기 메모리의 제1 메모리 영역 내에서 데이터의 랩핑된 판독을 수행하는 것을 더 포함한다. 상기 동작들은, 상기 메모리의 제2 메모리 영역 내에서 데이터의 연속적인 판독을 더 포함하고, 상기 제2 메모리 영역은 상기 제1 메모리 영역과 인접한다. 상기 연속적인 판독은 상기 제2 메모리 영역의 제1 경계에서 시작하고, 상기 연속적인 판독은 상기 제1 메모리 영역 내에서 데이터의 랩핑된 판독 이후에 자동적으로 수행된다.
본 발명의 여러 실시예들의 구성 및 동작과 함께 본 발명의 다른 피처들 및 이점들은 첨부된 도면들을 참조하여 아래에서 상세하게 서술된다. 본 발명은 여기에서 서술되는 특정 실시예들에 제한되지 않는다. 그와 같은 실시예들은 단지 예시적인 목적들로 여기에서 나타난다. 추가적인 실시예들은 여기에 포함된 교시들에 기초하여 통상의 기술자들에게 명확할 것이다.
첨부된 도면들은 본 명세서에 포함되고, 본 명세서의 일부분을 형성한다.
도 1은 예시적인 일 실시예에 따라 메모리 제어기의 여러 컴포넌트들을 포함하는 메모리 시스템의 블록도이다.
도 2a는 메모리의 데이터 판독을 나타낸다.
도 2b는 예시적인 일 실시예에 따라 메모리의 데이터 판독을 나타낸다.
도 3a 및 3b는 예시적인 일 실시예에 따라 복수의 메모리 영역들을 걸쳐 데이터를 판독하는 것을 나타낸다.
도 4는 일 실시예에 따라 복수의 메모리 디바이스들로부터 데이터를 판독하는 예시적인 흐름도를 나타낸다.
도 5는 여러 실시예들을 구현하는데 유용한 예시적인 컴퓨터 시스템이다.
도면들에서, 동일한 참조 번호들은 일반적으로 동일한 또는 유사한 요소들을 나타낸다. 부가하여, 일반적으로 참조 번호의 가장 좌측의 숫자(들)은 참조 번호가 먼저 나타나는 도면을 식별한다.
여러 실시예들 및 여기에서 서술된 실시예들과 관련된 도면들은 예시들로서 제공됨을 알 수 있다. 그와 같이, 특별한 메모리 어드레스들, 캐시라인들의 번호, 여러 컴포넌트들 또는 발생된 신호들에 주어진 표시들은 통상의 기술자에 의해 이해되어지는 본 발명의 범위 또는 정신을 제한하도록 의도되지 않는다.
도 1은 예시적인 메모리 시스템(100)의 블록도이고, 이 예시적인 메모리 시스템(100)은, 일 실시예에 따라 호스트 CTRL 블록(104) 및 복수의 메모리 디바이스들(108) 사이에서 신호들을 수신하고 전송하는 메모리 제어기(102)를 포함한다. 호스트 CTRL 블록(104)은, 또한, 일부 실시예들에 따라 메모리 제어기(102)의 부분이 될 수 있다. 호스트 CTRL 블록(104)는, 복수의 메모리 디바이스들(108)에 액세스하기 위해 상기 호스트 버스를 거쳐 호스트 CPU(도시되지 않음)로부터 하나 이상의 요청들을 수신할 수 있는 전기 회로들 그리고/또는 컴포넌트들을 포함한다. 다른 실시예에서, 호스트 CTRL 블록(104)는, 캐시의 부분들을 채우기 위한 데이터에 액세스하도록 캐시 메모리 제어기로부터 하나 이상의 요청들을 수신할 수 있다. 상기 데이터 액세스는, 하나 이상의 복수의 메모리 디바이스들에 저장된 데이터를 검색하기 위해 하나 이상의 판독 요청들을 포함할 수 있거나, 상기 데이터 액세스는, 하나 이상의 복수의 메모리 디바이스들에 데이터를 저장하기 위해 하나 이상의 기입 요청들을 포함할 수 있다. 다른 예에서, 상기 액세스는 하나 이상의 상기 복수의 메모리 디바이스들에 저장된 데이터를 삭제하는 것을 포함할 수 있다. 호스트 CTRL 블록(104)은 하나 이상의 데이터 요청들을 수신하고, 그리고 하나 이상의 데이터 신호들을 메모리 제어기(102)에 제공한다.
메모리 제어기(102)에 제공된 데이터 신호들은, 액세스될 메모리 캐시라인들의 바이트 크기를 지정하는 wrap _ size 신호를 포함할 수 있다. 예를 들어, 그리고 제한 없이, 상기 바이트 크기는 32 또는 64 바이트일 수 있다. 상기 데이터 신호들은, 또한, 액세스될 데이터에 대한 어드레스들을 포함하는 adr _ dat 신호를 포함한다. 상기 adr _ dat 신호는, 액세스될 상기 데이터에 대한 시작 어드레스 및 상기 데이터의 길이와 관련되는 데이터를 포함할 수 있다. 상기 CPU로부터의 요청이 기입 요청이라면, 메모리 제어기(102)에 전송된 상기 데이터 신호들은, 또한, 상기 메모리에 기입될 상기 데이터를 포함하는 wdat _ dat 신호를 포함한다.
메모리 제어기(102)는, 일 실시예를 따라, 호스트 CTRL 블록(104)으로부터 제공된 여러 데이터 신호들을 수신하고, 메모리 프로세서(106)를 통해 복수의 메모리 디바이스들(108)로의 액세스들을 적절히 제어한다. 메모리 제어기(102)는 디코더(110), 상태 기계(118), TX 카운터(114), RX 카운터(116), RX FIFO(120), TX FIFO(122) 및 프로세서(106)를 포함할 수 있다. 일 실시예에 따라, 메모리 제어기(102)는 병합 검출 모듈(112)를 포함한다.
디코더(110)는, 데이터 판독 또는 데이터 기입이 발생하는지를 나타내는 rw 신호와 함께 적합한 메모리 어드레스 길이 신호들을 발생시킬 수 있는 전기 회로들 그리고/또는 컴포넌트들을 포함할 수 있다. 디코더(110)는, 또한, 복수의 메모리 디바이스들(108) 내의 메모리 영역의 데이터 판독이 랩핑된 판독(wrapped read) 또는 연속적인 판독인지를 나타내는 타입 신호를 발생시킬 수 있다. 랩핑된 판독들 또는 연속적인 판독들 사이의 차이들은, 도 2 및 도 3을 참조하여 이후에 더 상세하게 서술된다.
상태 기계(118)는, 복수의 메모리 디바이스들(108)로부터 CPU 호스트로의 액세스를 전달할 수 있고, 데이터가 복수의 메모리 디바이스들(108)로부터 판독되거나 데이터가 복수의 메모리 디바이스들(108)에 기입될 때의 시간을 제어할 수 있는 전기 회로들 그리고/또는 컴포넌트들을 포함할 수 있다. 예를 들어, 상태 기계(118)는, 복수의 메모리 디바이스들(108)로부터 데이터 판독 절차를 시작하도록 rd_start 신호, 또는 복수의 메모리 디바이스들(108)에 데이터 기입 절차를 시작하도록 wr _ start 신호를 발생시킬 수 있다. 상태 기계(118)는, 또한, 모든 요청된 데이터가 판독(또는 기입)되었을 때 adr _ rd _ en 신호를 리턴시킬 수 있다.
TX 카운터(114) 및 RX 카운터(116)는, 복수의 메모리 디바이스들(108)로부터 의 특정한 메모리 영역에 기입되거나 상기 특정한 메모리 영역으로부터 판독되는 데이터의 길이를 카운트 다운할 수 있는 전기 회로들 그리고/또는 컴포넌트들을 포함할 수 있다. 예를 들어, TX 카운터(114)는, 특정한 메모리 영역에 기입되는 상기 데이터의 카운트된 길이가 0에 도달할 때, tx _ end 신호를 발생시킬 수 있다. 다른 예에서, RX 카운터(116)는, 특정한 메모리 영역으로부터 판독되는 상기 데이터의 카운트된 길이가 0에 도달할 때, rx _ end 신호를 발생시킬 수 있다. 추가적으로, RX 카운터(116)는, 또한, 메모리가 상기 특정 메모리 영역으로부터 판독될 때를 나타내는 rx _ end 신호를 수신할 수 있다.
RX FIFO(120) 및 TX FIFO(122)는, 복수의 메모리 디바이스들(108)과 호스트 CTRL 블록(104) 사이에서 전달되는 데이터를 버퍼링할 수 있는 전기 회로들 그리고/또는 컴포넌트들을 포함할 수 있다. 예를 들어, RX FIFO(120)는 복수의 메모리 디바이스들(108)로부터 판독될 데이터(dq _ in)를 수신할 수 있고, rxfifo _ dout로서 호스트 CTRL 블록(104)에 전송하기 전에 상기 데이터의 일시적인 버퍼를 제공할 수 있다. 마찬가지로, TX FIFO(122)는, Host CTRL 블록(104)로부터 기입될 데이터(wdat _ dat)를 수신할 수 있고, dq _ out로서 프로세서(106)에 전송하기 전에 상기데이터의 일시적인 버퍼를 제공할 수 있다. 일 실시예에서, 상기 데이터의 버퍼링은, 상기 데이터의 전송에서 지연을 야기하거나, 상기 데이터의 신호 특성을 변화시킨다.
프로세서(106)는 메모리 제어기(102)의 적어도 여러 컴포넌트들을 제어하도록 설계될 수 있다. 예를 들어, 프로세서(106)는 메모리 제어기(102)의 컴포넌트들로부터 여러 신호들 출력을 수신하고, 이후, 메모리 버스를 통해 복수의 메모리 디바이스들(108)과 통신한다. 프로세서(106)는, 또한, dq _ in로서 복수의 메모리 디바이스들로부터 판독된 데이터를 제공하기 위해 설계될 수 있다. 일 실시예에 따라서, 프로세서(106)는, 복수의 메모리 디바이스들(108)과 메모리 제어기(102) 사이에서 지정된 버스 프로토콜들을 수행한다.
일 실시예에 따라, 병합 검출 모듈(112)은, 서로 인접한 복수의 메모리 영역들을 지나 데이터가 액세스하고 있을 때를 결정할 수 있는 전기 회로들 그리고/또는 컴포넌트들을 포함한다. 병합 검출 모듈(112)은, 상기 요청된 데이터가 복수의 메모리 디바이스들(108) 내의 인접한 어드레스들을 구비한 메모리 영역들 전체에 존재하는지를 결정하기 위해 수신된 하나 이상의 판독 요청들로부터 adr _ dat를 사용할 수 있다. 일 실시예에서, 액세스될 데이터가 서로 인접한 2개의 메모리 어드레스 내에 존재할 때, 병합 검출 모듈(112)은 제1 메모리 영역으로부터 데이터를 판독하는 것을 완료할 때 상기 병합 신호를 어설트(assert)한다. 병합 신호의 어설트는, RX 카운터(116)로 하여금 상기 제2 메모리 영역의 길이로 갱신되도록 하고, 상기 판독 동작은 제2 메모리 영역에서 수행된다. 복수의 메모리 디바이스들(108)의 다수의 인접한 메모리 영역들은 이러한 방식으로 판독될 수 있다. 일 실시예에서, 복수의 인접한 메모리 영역들 사이에서 데이터를 판독하는 이러한 절차는, 상기 데이터의 다수의 판독 요청들을 수행하도록 메모리 제어기(102)에 대한 요구 없이 발생한다. 예를 들어, 다수의 판독 요청들이, 다수의 메모리 영역들을 통해 데이터를 액세스하도록 호스트 CTRL 블록(104)으로부터 메모리 제어기(102)에 의해 수신되지만, 병합 검출 모듈(112)는, 이러한 다수의 판독 요청들을 메모리 제어기(102)의 컴포넌트들에 의해 수행되는 상기 데이터의 단일 판독 요청으로 병합하도록 설계된다. 판독 요청들의 수를 감소시키는 것은, 복수의 메모리 디바이스들(108) 상에 상기 데이터를 액세스하기 위한 대기 시간(latency)을 감소시킨다. 다른 예에서, 병합 검출 모듈(112)은, 상기 다수의 판독 요청들을 2개의 판독 요청들: 랩핑된 판독을 사용하여 제1 메모리 영역을 판독하는 하나의 판독 요청 및 연속적인 판독을 사용하여 임의의 인접하는 추가 메모리 영역들을 판독하는 다른 판독 요청과 병합하도록 설계된다. 랩핑된 판독들과 연속적인 판독들 사이의 차이점들은 도 2 및 3을 참조하여 아래에서 더 상세하게 설명된다.
도 2a는, 하나 보다 많은 메모리 영역을 통해 데이터를 판독하는 방법을 도시한다. 각 메모리 영역은 랩 바운더리(201)에 의해 분리될 수 있다. 일 실시예에서, 메모리 캐시의 관련된 캐시라인에 기입될 데이터를 포함한다. 이러한 예에서, 액세스될 데이터는 제1 메모리 영역 MA0 내의 어드레스 C에서 시작하고, 제2 메모리 영역 MA1 내의 어드레스들(16)(어드레스들은 16진법 포맷으로 주어진다)로 연장된다. 데이터가 MA0의 어드레스 C로부터 MA1의 어드레스(16)로 판독되면, 상기 데이터는 어드레스 C를 시작하는 것(이후 상기 데이터를 판독하도록 상기 요청을 수신하는 것으로부터의 지연이 뒤따름) 및 랩 바운더리(201b)가 도달될 때까지 앞으로 판독하는 것이 액세스된다. 각 랩 바운더리(201a-c)는 특정 메모리 영역의 시작 또는 끝을 형성할 수 있다. 더욱이, 랩 바운더리(201a-c)는 제1 메모리 영역(MA0)의 끝 및 인접한 제2 메모리 영역(MA1)의 시작 모두로서 작용할 수 있다. 흑점(black dot)들 각각은, 데이터를 판독하기 위해 새로운 액세스의 시작을 나타낼 수 있다. 메모리 영역 내의 어느 곳에서 데이터의 판독을 시작하는 것은, 정렬되지 않은 판독으로 알려지는 반면, 정렬된 판독들은 랩 바운더리에서 시작한다.
랩 바운더리(201b)가 일단 도달하면, MA0의 랩 바운더리(201a) 뒤에서 시작하는 데이터가 판독된다. 이것은 데이터의 랩핑된 판독으로서 알려진다. MA0의 랩핑된 판독이 완료되면, 칩 선택 신호는 효력이 발생되지 않고, 랩 바운더리(201b)에서 시작하는 다음 메모리 영역(MA1)을 판독하는 것을 시작하도록 다시 효력이 발생되어야만 한다. 다음 메모리 영역(MA1) 내에서 데이터의 판독을 개시하기 위해 상기 메모리의 제어기에 의해 수행된 다른 동작들에 따른 이러한 프로세스는, 도 2a에서 표시된 것처럼, 지연을 야기한다. 일단 상기 데이터를 판독하기 위한 어드레스가 적절히 개시되면, 데이터는 랩 바운더리(201b)에서 시작하고 랩 바운더리(201c)에 계속되는 MA1에서 판독된다. MA0 및 MA1의 각 판독 동작은 랩핑된 판독으로 고려될 수 있고, MA0의 랩핑된 판독은 정렬되지 않고, MA1의 랩핑된 판독은 정렬된다.
도 2b는, 일 실시예에 따라, 하나 보다 많은 메모리 영역을 통해 데이터를 판독하는 방법을 도시한다. 액세스될 데이터는 메모리 영역 MA0 내의 어드레스 C에서 시작하고, 메모리 영역 MA1 내의 어드레스들(16)로 연장된다. 각 메모리 영역 MA0 및 MA1은 데이터의 32 바이트들 또는 64 바이트들을 포함할 수 있다. 다른 데이터 사이즈들이 또한 가능할 수 있다. 일 실시예에서, 각 메모리 영역은, 캐시의 관련되 캐시라인에 기입되는 데이터를 포함한다.
일 실시예에 따르면, MA0의 어드레스 C에서 시작되고, 랩 바운더리(201b)가 도달될 때, 랩 바운더리(201a) 뒤에서 랩핑하는 랩핑된 판독이 발생한다. 이후, MA0의 모든 데이터가 판독될 때, 랩 바운더리(201b)에서 시작하고 랩 바운더리(201c)로 계속될 데이터가 판독된다. 이러한 방식으로, MA1의 모든 데이터가 랩 바운더리(201b)에서 시작하고 랩 바운더리(201c)에서 종료되는 연속적인 방식으로 판독된다. 데이터는, 일 실시예에 따라, 도 2a에서 도시된 지연 없이 메모리 영역들 MA0 및 MA1 둘 모두 사이에서 판독된다.
도 1을 다시 참조하면, 병합 검출 모듈(112)은, 액세스될 데이터가 2개의 인접한 메모리 영역들(도 2B의 MA0 및 MA1)에 걸쳐 존재한다. 일 실시예에 따라, 병합 검출 모듈(112)은 (MA0 및 MA1의 데이터에 대한) 2개의 수신된 판독 요청들을 단일 판독 요청과 병합한다. 상기 단일 판독 요청은. 일 실시예에 따라, 양쪽 메모리 영역을 거쳐 늘이기 위해 판독될 데이터의 길이를 갱신하고, 메모리 제어기(102)에 의해 수행될 2개의 개별 판독 동작들을 요구하지 않는다. 그와 같이, MA0로부터 데이터를 판독하는 것과 MA1으로부터 데이터를 판독하는 것 사이에 도 2에서 도시된 것처럼 실질적인 어떤 지연도 존재하지 않는다. 일 실시예에서, 병합 검출 모듈(112)은, 하나 이상의 수신된 판독 요청들과 MA0 및 MA1을 가로지르는 데이터에 대한 단일 판독 요청을 병합하도록 MA0으로부터 판독될 때까지 대기하지 않는다.
데이터의 연속적인 판독은, 일 실시예에 따라, MA0를 넘어 2 이상의 메모리 영역으로 연장할 수 있다. 도 3a 및 도 3b는, 일부 실시예들에 따라, 데이터가 3개의 메모리 영역들에 거쳐 판독될 예들을 도시한다. 도 3a에서, 지연은 MA0 및 MA1의 데이터의 판독 사이에서 여전히 도시되지만, 일 실시예에 따라, 추가적인 인접한 메모리 영역들(예를 들어, MA1에서 메모리 영역 MA2)의 데이터의 판독 사이에는 어떤 지연도 존재하지 않는다. 도 3a에서 도시된 시나리오는, 다수의 판독 요청들을 2개의 판독 요청들, 즉, 제1 메모리 영역 MA0에 대한 하나 그리고 임의의 추가적인 인접한 메모리 영역들에 대한 다른 하나에 병합하도록, 병합 검출 모듈(112)을 사용할 때 발생할 수 있다. 이것은, 현재의 메모리 영역의 랩핑된 판독을 수행한 후 다음 메모리 영역에서 판독을 시작할 수 없는 특별한 메모리 구조들로 수행될 수 있다. 도 3b는, 일 실시예에 따라, 특정 메모리 영역의 랩핑된 판독에 후속하는 다음 랩 바운더리에서 즉시 그리고 자동적으로 판독할 수 있는 메모리를 사용하는 시나리오를 도시한다.
도 3a 및 도 3b 모두에서, 액세스될 데이터는 메모리 영역 MA0의 어드레스 C에서 시작하고, 메모리 영역 MA2의 어드레스 2A로 확장한다. 랩핑된 판독은, 어드레스 C에서 시작하고, 랩 바운더리(301b)에서 뒤에서 랩핑하는 MA0에서 발생한다. 상기 랩핑된 판독이 완료하고 어드레스 B로 리턴하면, 다음 인접한 메모리 영역 MA1의 연속적인 판독은, 일 실시예에 따라, 랩 바운더리(301b)에서 시작한다. 상기 연속적인 판독은, 도 3a에서 도시된 것처럼, 지연 및 새로운 액세스 요청 이후에 시작하지만, 도 3b에 도시된 것처럼 거의 즉시 시작한다. 액세스될 데이터는 MA1을 넘어 계속되기에, 동일한 연속적인 판독은, 또한, 일 실시예에 따라, 과거의 랩 바운더리(301c)로 계속되고 MA2의 데이터를 판독한다.
도 1을 참조하면, 병합 검출 모듈(112)은, 다수의 인접한 메모리 영역들을 거치는 연속적인 판독은 상기 제1 메모리 영역의 랩핑된 판독 이후에 요구될 때를 검출할 수 있다. 다른 예에서, 병합 검출 모듈(112)은, 인접한 메모리 영역들에 대한 다수의 판독 명령어들이, 다수의 판독 명령어들을 수신한 후 그리고 임의의 데이터가 메모리 영역들로부터 판독되기전, 하나 또는 2개의 판독 명령어들에 병합될 때를 검출한다. 일 실시예에서, 병합 검출 모듈(112)은 (도 3b에 도시된 것처럼) 수신된 판독 명령어들을 단일 판독 명령어에 병합하고, 상기 단일 판독 명령어는 하나 이상의 인접한 메모리 영역들 중 연속적인 판독들에 앞서는 상기 제1 메모리 영역의 랩핑된 판독을 수행한다. 다른 실시예에서, 병합 검출 모듈(112)은, (도 3a에 도시된 것처럼), 상기 수신된 판독 명령어들을, 상기 제1 캐시라인의 랩핑된 판독을 수행하기 위한 제1 판독 명령어 및 하나 이상의 인접한 메모리 영역들의 연속적인 판독들을 수행하기 위한 제2 판독 명령어에 병합한다.
도 4는, 일 실시예에 따라, 복수의 메모리 영역들을 거쳐 데이터를 판독하는 예시적인 방법(400)을 도시한다. 일 실시예에서, 방법(400)의 여러 단계들은 도 1의 메모리 제어기(102) 내에서 도시된 컴포넌트들에 의해 수행될 수 있다. 도시된 것들을 넘어서는 다른 단계들이 또한 수행될 수 있는 것을 알 수 있다.
블록 402에서, 상기 메모리 제어기는 아이들(idle)이고, 명령어를 대기한다.
블록 404에서, 상기 메모리 제어기는, 데이터에 대한 하나 이상의 판독 요청들이 수신되었는지를 체크한다. 수신되지 않았다면, 블록 402에서 명령어에 대한 대기를 계속한다. 메모리 제어기가 하나 이상의 판독 요청들을 수신하면, 방법(400)은 블록 406으로 이어진다. 일 예에서, 수신된 각 판독 요청은 특정 메모리 영역의 랩핑된 판독에 대한 것이다.
블록 406에서, 칩 선택(chip select: CS) 신호가 어설트되고, 데이터가 복수의 메모리 디바이스들(108)로부터 판독되도록 준비된다. 이러한 준비는, 도 1을 참조하여 이전에서 서술된 것처럼 메모리 제어기(102) 내에 여러 신호들을 어설트하는 것을 포함할 수 있다. 일 실시예에서, 메모리 제어기(102) 내의 병합 검출 모듈(112)은, 상기 요청된 데이터가 복수의 메모리 디바이스들(108) 내에 인접한 메모리 영역들에 놓여있다면, 데이터에 대한 상기 하나 이상의 요청들을 데이터에 대한 하나의 요청 또는 데이터에 대한 2개의 요청들과 병합할 수 있다.
블록 408에서, 제1 메모리 영역 내의 데이터의 랩핑된 데이터는, 일 실시예에 따라, 수행된다. 상기 랩핑된 판독은, 액세스될 데이터의 제1 메모리 어드레스에서 시작할 수 있다. 상기 랩핑된 판독은, 이후, 상기 제1 메모리 영역의 제2 랩 바운더리로 계속되고, 상기 제1 메모리 영역의 제1 랩 바운더리로부터의 판독을 계속한다.
블록 410에서, 일 실시예에 따라, 데이터가 인접한 메모리 영역으로부터 판독되는 것이 계속될지 여부에 따라 결정이 행해진다. 상기 결정은, 블록 408에서 서술된 것처럼 상기 랩핑된 판독을 수행한 후 병합 검출 모듈(112)에 의해 행해질 수 있거나, 또는, 상기 결정은, 블록 404에서 서술된 것처럼 상기 하나 이상의 판독 요청들을 수신한 후에 병합 검출 모듈(112)에 의해 행해질 수 있다. 판독될 다음 메모리 영역이 인접하지 않으면, 이후 방법(400)은, 칩 선택(CS) 신호가 어설트되지 않는 경우인 블록 412로 계속된다. 방법(400)은, 이후, 다른 판독 요청을 위해 대기하도록 블록 402에서 아이들 상태로 리턴한다.
하지만, 판독될 다음 메모리 영역이 블록(410)에서 결정된 것처럼 인접하면, 이후, 상기 방법(400)은, 일 실시예에 따라 블록(414)로 후속된다. 블록(414)에서, 액세스될 상기 다음 메모리 영역의 길이는, 예를 들어, 카운터에 의해 갱신된다. 일 실시예에서, 다음 메모리 영역 내의 모든 데이터가 판독될 것이기 때문에, 상기 길이는 상기 다음 메모리 영역 내에서 액세스될 데이터의 각 비트를 지정한다. 상기 길이는, 또한, 판독될 하나 보다 많은 인접한 메모리 영역의 데이터를 포함하도록 갱신될 수 있다. 예를 들어, 판독 요청들이 서로 인접한 3개의 추가적인 메모리 영역들에 대해 수신되면, 이후 상기 길이는 3개의 모든 메모리 영역들의 판독을 통합하도록 한번 갱신될 수 있다. 다른 실시예에서, 상기 길이는, 현재의 메모리 영역을 판독한 후 판독될 다음 메모리 영역에 대해 갱신된다.
블록 416에서, 일 실시예에 따라, 다음 메모리 영역의 연속적인 판독이 수행된다. 상기 연속적인 판독은, 액세스되고 있는 상기 메모리 영역의 제1 랩 바운더리에서 시작될 수 있고, 액세스되고 있는 상기 메모리 영역의 제2 랩 바운더리에서 종료될 수 있다. 상기 연속적인 판단은 상기 메모리 영역 내의 상기 데이터의 정렬된 판독일 수 있다. 일 실시예에 따르면, 상기 연속적인 판독은, 상기 요청된 데이터가 상기 메모리 영역 내의 어드레스에서 종료될지라도, 전체 메모리 영역을 액세스한다. 일단 메모리 영역이 판독되면, 방법(400)은, 상기 요청된 데이터가 일 실시예에 따라 임의의 추가적인 인접한 메모리 영역들에 존재하는지 결정하기 위해, 블록 410으로 리턴한다.
다른 실시예에서, 블록 416에서 연속적인 판독은, 한번에 단 하나의 메모리 영역을 통하는 것이 아닌, 상기 요청된 데이터를 유지하는 모든 인접한 메모리 영역들 전체를 통하여 판독한다. 이러한 상황에서, 모든 인접한 메모리 영역들을 통해 판독한 후, 액세스하기 위한 다른 연속되는 메모리 영역들이 존재하지 않고, 방법(400)은 블록(412)로 계속된다.
예시적인 컴퓨터 시스템
여러 실시예들이, 예를 들어, 도 5에 도시된 컴퓨터 시스템(500)과 같은 하나 이상의 잘 알려진 컴퓨터 시스템들을 사용하여 구현될 수 있다. 컴퓨터 시스템(500)은, IBM, 애플, 선, HP, 소니, 토시바 등으로부터 이용가능한 컴퓨터들과 같은 여기서 서술된 기능들을 수행할 수 있는 임의의 잘 알려진 컴퓨터가 될 수 있다.
컴퓨터 시스템(500)은, 프로세서(504)와 같은 하나 이상의 프로세서들(중앙 처리 유닛, 또는 CPU들이라고도 언급됨)을 포함한다. 프로세서(504)는 통신 인프라스트럭처 또는 버스(506)에 연결된다.
하나 이상의 프로세서들(504)은 각각 그래픽 프로세싱 유닛(GPU)가 될 수 있다. 일 실시예에서, GPU는 전자 디바이스들 상에서 수학적으로 집중된 애플리케이션들을 빠르게 처리하도록 설계된 특수용 전기 회로인 프로세서이다. 상기 CPU는, 컴퓨터 애플리케이션들, 이미지들 및 비디오들에 일반적인 수학적으로 집중된 데이터와 같은 데이터의 큰 블록들의 병렬 처리에 효율적인 고도로 병렬인 구조를 가질 수 있다.
컴퓨터 시스템(500)은, 또한, 모니터들, 키보드들, 포인팅 디바이스들 등과 같은 사용자 입력/출력 디바이스(들)(503)을 포함하고, 상기 사용자 입력/출력 디바이스(들)(503)은 사용자 입력/출력 인터페이스(들)(502)을 통해 통신 인프라스트럭처(506)과 통신한다.
컴퓨터 시스템(500)은, 또한, 랜덤 액세스 메모리(RAM)와 같은 메인 또는 주 메모리(508)를 포함한다. 메인 메모리(508)는 하나 이상의 레벨들의 캐시를 포함할 수 있다. 메인 메모리(508)는 제어 로직(즉, 컴퓨터 소프트웨어) 그리고/또는 데이터를 저장한다.
컴퓨터 시스템(500)은 또한 하나 이상의 제2 저장 디바이스들 또는 메모리(510)를 포함할 수 있다. 제2 메모리(510)는, 예를 들어, 하드 디스크 드라이브(512) 그리고/또는 착탈가능한 저장 디바이스 또는 드라이브(514)를 포함할 수 있다. 착탈가능한 저장 드라이브(514)는, 플로피 디스크 드라이브, 자기 테이프 드라이브, 컴팩 디스크 드라이브, 광 저장 디바이스, 테이프 백업 디바이스, 그리고/또는 임의의 다른 저장 디바이스/드라이브일 수 있다.
착탈가능한 저장 드라이브(514)는 착탈가능한 저장 유닛(518)과 상호대화할 수 있다. 착탈가능한 저장 유닛(518)은, 컴퓨터 소프트웨어(제어 로직) 그리고/또는 데이터가 저장된 컴퓨터 사용가능한 또는 판독가능한 저장 디바이스를 포함한다. 착탈가능한 저장 유닛(518)은, 플로피 디스크, 자기 테잎, 컴팩 디스크, DVD, 광 저장 디스크, 그리고/또는 임의의 다른 컴퓨터 데이터 저장 디바이스일 수 있다. 착탈가능한 저장 디바이스(514)는, 잘 알려진 방식으로 착탈가능한 저장 유닛(518)로부터 판독하고 그리고/또는 착탈가능한 저장 유닛(518)에 기입한다.
일 실시예에 따르면, 제2 메모리(510)는, 컴퓨터 시스템(500)에 의해 액세스될 컴퓨터 프로그램들 그리고/또는 다른 명령어들 그리고/또는 데이터를 다른 수단, 방편 또는 다른 접근들을 포함할 수 있다. 그와 같은 수단, 방편 또는 다른 접근들은, 예를 들어, 착탈가능한 저장 유닛(522) 및 인터페이스(520)를 포함할 수 있다. 착탈가능한 저장 유닛(522) 및 인터페이스(520)의 예들은, (비디오 게임 디바이스들에서 발견되는 것과 같은) 프로그램 카트리지 및 카트리지 인터페이스, 착탈가능한 메모리 칩(예를 들어, EPROM 또는 PROM) 및 관련된 소켓, 메모리 스틱 및 USB 포트, 메모리 카드 및 관련된 메모리 카드 슬롯, 그리고/또는 임의의 다른 착탈가능한 저장 유닛 및 관련된 인터페이스를 포함할 수 있다.
컴퓨터 시스템(500)은 통신 또는 네트워크 인터페이스(524)를 더 포함할 수 있다. 통신 인터페이스(524)는, 컴퓨터 시스템(500)이 (참조 번호(528)에 의해 개별적으로 그리고 집합적으로 참조되는) 원격 디바이스들, 원격 네트워크들 원격 엔티티들 등의 임의의 조합과 통신하고 상호대화하도록 한다. 예를 들어, 통신 인터페이스(524)는, 컴퓨터 시스템(500)으로 하여금 통신 경로(526)를 통해 원격 디바이스들(528)과 통신하도록 할 수 있고, 상기 통신 경로(526)는 유선 그리고/또는 무선일 수 있고, LAN들, WAN들, 인터넷 등의 임의의 조합을 포함할 수 있다. 제어 로직 그리고/또는 데이터는 통신 경로(526)를 통해 컴퓨터 시스템(500)에 전송될 수 있고 컴퓨터 시스템(500)으로부터 전송될 수 있다.
일 실시예에서, 제어 로직(소프트웨어)가 저장된 유형의 컴퓨터 사용가능한 또는 판독가능한 매체를 포함하는 유형의 장치 또는 제조 물품은, 여기에서 컴퓨터 프로그램 제품 또는 프로그램 저장 디바이스로서 언급된다. 이것은, 컴퓨터 시스템(500), 메인 메모리(508), 제2 메모리(510), 및 착탈가능한 저장 유닛들(518 및 522)과 함께 이것들의 임의의 조합을 구현하는 유형의 제조 물품들을 포함하지만, 이에 제한되지는 않는다. 그와 같은 제어 로직은, 하나 이상의 데이터 프로세싱 디바이스들(예를 들어, 컴퓨터 시스템(500))에 의해 실행될 때, 그와 같은 데이터 프로세싱 디바이스들로 하여금 여기에서 서술된 것처럼 동작하도록 한다.
본 명세서에 포함된 교시들에 기초하여, 도 5에 도시된 것과는 다른 데이터 프로세싱 디바이스들, 컴퓨터 시스템들 그리고/또는 컴퓨터 아키텍처들을 사용하여 본 발명을 실행하고 사용하는 방법은 통상의 기술자들에게 명확할 것이다. 특히, 실시예들은 여기에서 서술된 것과 다른 소프트웨어, 하드웨어 그리고/또는 동작 시스템 구현들로 동작될 수 있다.
결론
발명의 상세한 설명 및 요약서는 (존재하면) 청구범위들을 해석하기 위해 사용됨을 알 수 있다. 개요부분 및 요약서는 (존재하면) 본 발명의 하나 이상의 실시예들을 나타내지만, 발명자에 의해 고려된 모든 실시예들을 개진하지 않고, 따라서, 임의의 방식으로 본 발명 또는 첨부된 청구범위들을 제한하도록 의도되지 않는다.
본 발명이 예시적인 분야 및 애플리케이션에 대한 예시적인 실시예들을 참조하여 여기에서 서술되는 반면, 본 발명은 그것들로 제한되지 않도록 이해된다. 본 발명에 대한 다른 실시예들 및 수정들도 가능하고, 이는 본 발명의 범위 및 정신 내에 존재한다. 예를 들어, 그리고 이 문단의 일반성을 제한하지 않으면서, 실시예들은 소프트웨어, 하드웨어, 펌웨어 및/또는 엔티티들은 도면에서 도시되고 그리고/또는 여기에서 서술된다. 또한, 실시예들은 (여기서 명시적으로 서술되는지 관계없이) 여기서 서술되는 예시들을 넘는 분야들 및 애플리케이션들에 대한 명확한 유틸리티를 갖는다.
실시예들은 실시예들의 특정 기능들 및 관계들의 구현을 나타내는 기능적인 빌딩 블록들의 도움으로 여기에서 서술된다. 이러한 기능적인 빌딩 블록들의 경계들은 설명의 편의를 위해 여기에서 임의적으로 정의된다. 특정 기능들 및 관계들 (또는 그것들의 균등 범위들)이 적절히 수행되는 동안 대안의 경계가 정의될 수 있다. 또한, 대안의 실시예들은 여기에서 서술되는 것과 서로 다른 배치들을 사용하여 기능적인 블록들, 단계들, 동작들, 방법들 등을 수행할 수 있다.
여기에서 "하나의 실시예", "일 실시예", "예시적인 실시예", 또는 유사한 어구들에 대한 참조는, 여기서 서술되는 실시예가 특정 피처, 구조 또는 특징을 포함할 수 있지만, 매(every) 실시예가 특정 피처, 구조 또는 특징을 반드시 포함하지 않는 것을 나타낸다. 더욱이, 그와 같은 어구들은 반드시 동일한 실시예를 언급하지는 않는다. 또한, 특정 피처, 구조 또는 특징이 일 일시예와 결합하여 서술될 때, 여기에서 명시적으로 언급되거나 서술되는지 여부에 상관없이 그와 같은 피처, 구조 또는 특징을 포함하는 것은 당업자의 지식의 범위 내에 존재한다.
본 발명의 폭 및 범위는 상기에서 서술된 예시적인 실시예들의 일부에 의해 제한되지 않지만, 오직 다음의 청구 범위들 및 그것의 균등 범위에 따라서 정의되어야 한다.

Claims (19)

  1. 데이터에 액세스하기 위한 컴퓨터 구현되는 방법으로서,
    메모리의 적어도 제1 메모리 영역 및 제2 메모리 영역에 걸쳐 저장되는 데이터에 대한 둘 이상의 요청(request)들을 수신하는 단계;
    적어도 하나의 프로세서에 의해, 상기 메모리의 상기 제1 메모리 영역 내에서 데이터의 랩핑된 판독(wrapped read)을 수행하는 단계;
    상기 적어도 하나의 프로세서에 의해, 상기 메모리의 상기 제2 메모리 영역 내에서 데이터의 연속적인 판독(continuous read)을 수행하는 단계를 포함하고,
    상기 제2 메모리 영역은 상기 제1 메모리 영역과 인접하고, 상기 연속적인 판독은, 상기 제2 메모리 영역의 제1 경계(boundary)에서 시작하고, 그리고 상기 제1 메모리 영역 내에서의 데이터의 상기 랩핑된 판독의 마지막 어드레스를 판독한 이후에 자동적으로 수행되는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  2. 제1항에 있어서,
    상기 메모리의 하나 이상의 추가적인 인접 메모리 영역들 내에서 데이터의 연속적인 판독을 계속하는(continue) 단계를 더 포함하고,
    상기 하나 이상의 추가적인 인접 메모리 영역들 중 하나 내에서의 데이터의 연속적인 판독은, 이전의 인접 메모리 영역 내에서의 데이터의 연속적인 판독 이후에 자동적으로 발생하는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  3. 제1항에 있어서,
    상기 제1 메모리 영역이 상기 제2 메모리 영역과 인접하다고 결정하는 것에 응답하여, 데이터에 대한 상기 수신된 둘 이상의 요청들을 적어도 상기 제1 메모리 영역 및 상기 제2 메모리 영역에 걸친 데이터에 대한 단일 요청으로 병합(merge)하는 단계; 및
    갱신(update)된 판독 길이가 적어도 상기 제1 메모리 영역 및 상기 제2 메모리 영역을 포함(encompass)하도록 상기 단일 요청과 연관된 판독 길이를 갱신하는 단계를 더 포함하는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  4. 제3항에 있어서,
    상기 제2 메모리 영역으로부터 데이터의 상기 연속적인 판독을 수행하는 것은 상기 단일 요청에 응답하여 그리고 상기 갱신된 판독 길이를 사용하여 이루어지는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  5. 제1항에 있어서,
    상기 요청된 데이터가 상기 메모리의 복수의 인접 메모리 영역들에 걸쳐 저장되는지를 결정하는 단계를 더 포함하는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  6. 제1항에 있어서,
    상기 수신하는 단계는, 캐시 메모리 제어기(cache memory controller)로부터 데이터에 대한 상기 둘 이상의 요청들을 수신하는 단계를 포함하는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  7. 제6항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 적어도 상기 요청된 데이터를 상기 캐시 메모리 제어기에 전송하는 단계를 더 포함하는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  8. 제7항에 있어서,
    상기 제1 메모리 영역 내의 데이터는 상기 캐시 메모리 제어기와 연관된 캐시의 제1 캐시라인(cacheline)에 기입되고, 그리고 상기 제2 메모리 영역 내의 데이터는 상기 캐시의 제2 캐시라인에 기입되는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  9. 제1항에 있어서,
    상기 적어도 하나의 프로세서에 커플링된 상태 기계(state machine)를 사용하여 상기 랩핑된 판독을 수행하는 타이밍 및 상기 연속적인 판독을 수행하는 타이밍을 제어하는 단계를 더 포함하는, 데이터에 액세스하기 위한 컴퓨터 구현되는 방법.
  10. 복수의 메모리 디바이스들;
    상기 복수의 메모리 디바이스들의 적어도 제1 메모리 영역 및 제2 메모리 영역에 걸쳐 저장되는 데이터에 대한 둘 이상의 요청들을 수신하도록 구성된 디코더를 포함하는 메모리 제어기; 및
    프로세서를 포함하고,
    상기 프로세서는:
    상기 제1 메모리 영역 내에서 데이터의 랩핑된 판독을 수행하고; 그리고
    상기 제2 메모리 영역 내에서 데이터의 연속적인 판독을 수행하도록
    구성되고,
    상기 연속적인 판독은 상기 제2 메모리 영역의 제1 경계에서 시작하고,
    상기 제1 메모리 영역 내에서의 데이터의 상기 랩핑된 판독의 마지막 어드레스를 판독한 이후에, 상기 프로세서는 상기 제2 메모리 영역의 상기 제1 경계에서 데이터의 상기 연속적인 판독을 자동적으로 시작하는, 시스템.
  11. 제10항에 있어서,
    상기 프로세서는, 하나 이상의 추가적인 인접 메모리 영역들 내에서 데이터의 연속적인 판독을 수행하도록 추가로 구성되는, 시스템.
  12. 제10항에 있어서,
    상기 메모리 제어기는, 캐시 메모리 제어기로부터 데이터에 대한 상기 둘 이상의 요청들을 수신하도록 구성되는, 시스템.
  13. 제12항에 있어서,
    상기 메모리 제어기는, 적어도 상기 요청된 데이터를 상기 캐시 메모리 제어기에 전송하도록 추가로 구성되는, 시스템.
  14. 제13항에 있어서,
    상기 캐시 메모리 제어기는, 상기 제1 메모리 영역 내의 데이터를 캐시의 제1 캐시라인에 기입하고, 그리고 상기 제2 메모리 영역 내의 데이터를 상기 캐시의 제2 캐시라인에 기입하도록 구성되는, 시스템.
  15. 제10항에 있어서,
    상기 메모리 제어기는, 상기 제1 메모리 영역이 상기 제2 메모리 영역과 인접하다고 결정하고 그리고 이에 응답하여 데이터에 대한 상기 수신된 둘 이상의 요청들을 적어도 상기 제1 메모리 영역 및 상기 제2 메모리 영역에 걸친 데이터에 대한 단일 요청으로 병합하고, 그리고 갱신된 판독 길이가 적어도 상기 제1 메모리 영역 및 상기 제2 메모리 영역을 포함하도록 상기 단일 요청과 연관된 판독 길이를 갱신하도록 구성된 병합 검출 모듈을 포함하는, 시스템.
  16. 제15항에 있어서,
    상기 제2 메모리 영역 내에서의 데이터의 상기 연속적인 판독은 상기 단일 요청에 응답하여 그리고 상기 갱신된 판독 길이를 사용하여 수행되는, 시스템.
  17. 제15항에 있어서,
    상기 메모리 제어기는, 상기 판독 길이의 길이를 카운트 다운(count down)하도록 구성되는 카운터(counter)를 더 포함하는, 시스템.
  18. 적어도 하나의 컴퓨팅 디바이스에 의해 실행될 때, 상기 적어도 하나의 컴퓨팅 디바이스로 하여금 동작들을 수행하게 하는 명령어들이 저장된 비-일시적 컴퓨터 판독가능 매체로서,
    상기 동작들은:
    메모리의 적어도 제1 메모리 영역 및 제2 메모리 영역에 걸쳐 저장되는 데이터에 대한 둘 이상의 요청들을 수신하는 것;
    상기 메모리의 상기 제1 메모리 영역 내에서 데이터의 랩핑된 판독을 수행하는 것;
    상기 메모리의 상기 제2 메모리 영역 내에서 데이터의 연속적인 판독을 수행하는 것 ― 상기 제2 메모리 영역은 상기 제1 메모리 영역과 인접하고, 상기 연속적인 판독은, 상기 제2 메모리 영역의 제1 경계에서 시작하고, 그리고 상기 제1 메모리 영역 내에서의 데이터의 상기 랩핑된 판독의 마지막 어드레스를 판독한 이후에 자동적으로 수행됨 ―; 및
    상기 랩핑된 판독을 수행하는 타이밍 및 상기 연속적인 판독을 수행하는 타이밍을 제어하는 것
    을 포함하는, 비-일시적 컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 명령들은 상기 적어도 하나의 컴퓨팅 디바이스로 하여금 추가로, 데이터에 대한 상기 수신된 둘 이상의 요청들을 적어도 상기 제1 메모리 영역 및 상기 제2 메모리 영역에 걸친 데이터에 대한 단일 요청으로 병합하고, 그리고 갱신된 판독 길이가 적어도 상기 제1 메모리 영역 및 상기 제2 메모리 영역을 포함하도록 판독 길이를 갱신하는 동작을 수행하게 하고;
    상기 메모리의 상기 제1 메모리 영역 내에서 데이터의 상기 랩핑된 판독을 수행하는 것은 상기 단일 요청에 기초하고; 그리고
    상기 메모리의 상기 제2 메모리 영역 내에서 데이터의 상기 연속적인 판독을 수행하는 것은 상태 기계를 사용하여 상기 갱신된 판독 길이를 이용하여 이루어지는, 비-일시적 컴퓨터 판독가능 매체.
KR1020150025999A 2014-02-24 2015-02-24 랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템 KR102180975B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/188,048 US9792049B2 (en) 2014-02-24 2014-02-24 Memory subsystem with wrapped-to-continuous read
US14/188,048 2014-02-24

Publications (2)

Publication Number Publication Date
KR20150100565A KR20150100565A (ko) 2015-09-02
KR102180975B1 true KR102180975B1 (ko) 2020-11-19

Family

ID=52821917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150025999A KR102180975B1 (ko) 2014-02-24 2015-02-24 랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템

Country Status (7)

Country Link
US (2) US9792049B2 (ko)
JP (1) JP6523707B2 (ko)
KR (1) KR102180975B1 (ko)
CN (1) CN104866432A (ko)
DE (1) DE102015203202B4 (ko)
GB (1) GB2525713B (ko)
TW (1) TWI655642B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150093004A (ko) * 2014-02-06 2015-08-17 삼성전자주식회사 불휘발성 저장 장치의 동작 방법 및 불휘발성 저장 장치를 액세스하는 컴퓨팅 장치의 동작 방법
US10509589B2 (en) 2014-09-15 2019-12-17 Adesto Technologies Corporation Support for improved throughput in a memory device
US10761778B2 (en) * 2018-10-31 2020-09-01 International Business Machines Corporation Aggregation of read requests requesting common data objects into a common read operation in a data storage system for improving throughput
US11232039B2 (en) * 2018-12-10 2022-01-25 Advanced Micro Devices, Inc. Cache for storing regions of data
US11249913B2 (en) * 2020-03-06 2022-02-15 Macronix International Co., Ltd. Continuous read with multiple read commands

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001037098A1 (fr) 1999-11-16 2001-05-25 Hitachi, Ltd Dispositif et systeme informatique
US20050268027A1 (en) 2004-05-28 2005-12-01 Renesas Technology Corp. Data processor
WO2014002222A1 (ja) * 2012-06-28 2014-01-03 三菱電機株式会社 リードリクエスト処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6425062B1 (en) * 1999-09-14 2002-07-23 Intel Corporation Controlling burst sequence in synchronous memories
US6477082B2 (en) * 2000-12-29 2002-11-05 Micron Technology, Inc. Burst access memory with zero wait states
US6779074B2 (en) * 2001-07-13 2004-08-17 Micron Technology, Inc. Memory device having different burst order addressing for read and write operations
ITMI20041910A1 (it) * 2004-10-08 2005-01-08 Atmel Corp Architettura di decodifica a colonne migliorata per memorie flash
JP2006172240A (ja) * 2004-12-17 2006-06-29 Nec Corp データ処理システム及びそのメモリ制御方法
US7376762B2 (en) * 2005-10-31 2008-05-20 Sigmatel, Inc. Systems and methods for direct memory access
JP2008059565A (ja) * 2006-08-01 2008-03-13 Nec Electronics Corp バーストメモリアクセスを制御するメモリインターフェース装置及びその制御方法
JP5285102B2 (ja) * 2011-03-09 2013-09-11 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001037098A1 (fr) 1999-11-16 2001-05-25 Hitachi, Ltd Dispositif et systeme informatique
US20050268027A1 (en) 2004-05-28 2005-12-01 Renesas Technology Corp. Data processor
WO2014002222A1 (ja) * 2012-06-28 2014-01-03 三菱電機株式会社 リードリクエスト処理装置

Also Published As

Publication number Publication date
US10331359B2 (en) 2019-06-25
JP6523707B2 (ja) 2019-06-05
US20180081564A1 (en) 2018-03-22
TW201535412A (zh) 2015-09-16
US20150242129A1 (en) 2015-08-27
CN104866432A (zh) 2015-08-26
DE102015203202B4 (de) 2023-04-06
TWI655642B (zh) 2019-04-01
GB2525713A (en) 2015-11-04
US9792049B2 (en) 2017-10-17
GB201502853D0 (en) 2015-04-08
DE102015203202A1 (de) 2015-08-27
JP2015158910A (ja) 2015-09-03
GB2525713B (en) 2016-08-10
KR20150100565A (ko) 2015-09-02

Similar Documents

Publication Publication Date Title
US10331359B2 (en) Memory subsystem with wrapped-to-continuous read
US5832308A (en) Apparatus for controlling data transfer between external interfaces through buffer memory using a FIFO, an empty signal, and a full signal
US8495258B2 (en) Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA
US10417137B2 (en) Flushing pages from solid-state storage device
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
KR20200030325A (ko) 스토리지 장치 및 시스템
US10303366B2 (en) Data storage device that divides and processes a command and data processing system including the same
WO2015192685A1 (zh) 一种存储数据的方法及网络接口卡
US9697127B2 (en) Semiconductor device for controlling prefetch operation
US7409486B2 (en) Storage system, and storage control method
US10564847B1 (en) Data movement bulk copy operation
US9652155B2 (en) Computer system, cash data management method, and computer
US20240028530A1 (en) Systems and methods for data prefetching for low latency data read from a remote server
US10776033B2 (en) Repurposable buffers for target port processing of a data transfer
US10198219B2 (en) Method and apparatus for en route translation in solid state graphics systems
US11586543B2 (en) System, device and method for accessing device-attached memory
US20170178275A1 (en) Method and system for using solid state device as eviction pad for graphics processing unit
US10832132B2 (en) Data transmission method and calculation apparatus for neural network, electronic apparatus, computer-readable storage medium and computer program product
US10209906B2 (en) Target port processing of a data transfer
US9477619B2 (en) Programmable latency count to achieve higher memory bandwidth

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right