KR20170134704A - 확장 메모리에 대한 액세스 방법, 디바이스 및 시스템 - Google Patents

확장 메모리에 대한 액세스 방법, 디바이스 및 시스템 Download PDF

Info

Publication number
KR20170134704A
KR20170134704A KR1020177032218A KR20177032218A KR20170134704A KR 20170134704 A KR20170134704 A KR 20170134704A KR 1020177032218 A KR1020177032218 A KR 1020177032218A KR 20177032218 A KR20177032218 A KR 20177032218A KR 20170134704 A KR20170134704 A KR 20170134704A
Authority
KR
South Korea
Prior art keywords
memory
data
accessed
extended
address
Prior art date
Application number
KR1020177032218A
Other languages
English (en)
Other versions
KR102168017B1 (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 KR20170134704A publication Critical patent/KR20170134704A/ko
Application granted granted Critical
Publication of KR102168017B1 publication Critical patent/KR102168017B1/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/0608Saving storage space on storage systems
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0656Data buffering arrangements
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0064Latency reduction in handling transfers

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)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

확장 메모리에 대한 액세스 방법, 디바이스 및 시스템이다. 방법은, 컴퓨터의 프로세서 시스템에 의해 순차적으로 송신된 N+1개의 메모리 액세스 요청을 수신하는 단계 - 메모리 액세스 요청들 각각은 상이한 액세스 주소를 갖고 동일한 물리 주소를 향해 지향하며, 물리 주소는 확장 메모리 상의 액세스될 데이터의 저장 주소이고, N은 1 이상의 정수임 - ; 제1 메모리 액세스 요청을 수신할 때, 판독 요청을 확장 메모리로 송신하고, 구체적인 응답 메시지를 프로세서로 리턴하는 단계; 확장 메모리로부터의 액세스될 데이터의 판독 동안, 각각의 메모리 액세스 요청의 수신 시, 액세스될 데이터가 데이터 버퍼로 기입될 때까지, 구체적인 응답 메시지를 메모리 버스 프로토콜에 의해 명시된 시간 지연 내에 프로세서로 리턴하는 단계; 및 그 다음에 액세스될 데이터를 프로세서 시스템으로 리턴하는 단계를 포함한다.

Description

확장 메모리에 대한 액세스 방법, 디바이스 및 시스템
본 출원은 2015년 4월 23일자로 중국 특허청에 제출되고 발명의 명칭이 "METHOD FOR ACCESSING EXTENDED MEMORY, DEVICE, AND SYSTEM"인 중국 특허 출원 번호 201510198452.X에 대한 우선권을 주장하며, 이는 그 전체가 본 명세서에 참조로 포함된다.
본 발명은 컴퓨터 분야에 관한 것이고, 특히, 확장 메모리에 액세스하기 위한 방법, 디바이스, 및 시스템에 관한 것이다.
빅 데이터(Big Data)의 애플리케이션은 컴퓨터 처리 능력을 위한 더 높은 요건을 갖는다. 컴퓨터 처리 능력을 개선시키는 것의 중요한 지표는 메모리 용량의 개선이다. 애플리케이션 시나리오에서, 기존의 메모리 칩의 제한된 통합 레벨 때문에 다수의 메모리 칩은 메모리 용량을 확장시키기 위해 확장 칩을 사용함으로써 접속된다. 또 다른 애플리케이션 시나리오에서, 애플리케이션 가속 칩은 일부 구체적인 애플리케이션에 대해 가속 처리를 수행하기 위해 더 많은 컴퓨터 시스템에 추가된다. 예를 들어, GPU(Graphic Processing Unit, 그래픽 처리 유닛)는 보통 그래픽 및 이미지 데이터의 처리 동안 가속을 위해 사용된다. 일반적으로, 이러한 애플리케이션 가속 칩은 ASIC(Application Specific Integrated Circuit, 주문형 집적 회로) 또는 FPGA(Field Programmable Gate Array, 필드 프로그램가능 게이트 어레이)를 사용함으로써 구현될 수 있다.
전술한 2개의 애플리케이션 시나리오는 도 1에 기초하여 설명될 수 있다. 프로세서(Processor) 시스템(101), 시스템 메모리(102), 메모리 확장 칩(103), 및 확장 메모리(104)는 도 1에 포함되고, 메모리 제어기(1011)는 프로세서 시스템(101)에 통합된다. 시스템 메모리(102)는 메모리 버스를 사용함으로써 프로세서 시스템(101)에 접속되고, 확장 메모리(104)는 메모리 버스를 사용함으로써 메모리 확장 칩(103)에 접속되고, 프로세서 시스템(101)은 다수의 방식으로 메모리 제어기(1011)를 통해 메모리 확장 칩(103)에 접속될 수 있다.
제1 기존 기술에서, 구현 방식은 I/O 버스를 사용하여 프로세서 시스템(101)과 메모리 확장 칩(103)을 접속하는 것이다. 일반적으로 사용된 I/O 버스는 PCI-E(Peripheral Component Interconnect-Express, 주변 컴포넌트 상호접속 익스프레스) 버스, Intel QPI(Quick Path Interconnect, 빠른 경로 상호접속) 버스, 또는 AMD HT(Hyper Transport, 하이퍼트랜스포트) 버스를 포함한다. I/O 버스를 사용함으로써, 상대적으로 높은 지연이 존재하고, 데이터 액세스 지연을 보상하기 위해 메모리 확장 칩(103)을 위한 정제된 파이프라인 설계가 요구된다.
제2 기존 기술에서, 구현 방식은 메모리 버스를 사용하여 프로세서 시스템(101)과 메모리 확장 칩(103)을 접속하는 것이다. 메모리 버스의 사용은 메모리 확장 칩(103) 및 프로세서 시스템(101)이 확장 메모리(104)를 직접적으로 공유하는 것을 가능하게 하여, 메모리 액세스 지연이 상대적으로 작아지게 된다.
제2 기존 기술에서의 기술적 수단은 다음의 문제들을 갖는다: 프로세서 시스템(101)과 확장 메모리(104) 사이에 메모리 확장 칩(103)이 있기 때문에, 프로세서 시스템(101)이 확장 메모리(104)에서 데이터에 액세스하기 위한 메모리 액세스 요청을 송신한 후에, 통합된 메모리 제어기(1011)가 메모리 액세스 요청을 수신하고 DDR(Double Data Rate) 프로토콜을 사용하여 확장 메모리(104)에 액세스할 때, 추가 지연이 메모리 확장 칩(103)의 존재에 의해 야기된다. 결과적으로, 메모리 액세스 요청의 처리 결과는 DDR 프로토콜에 의해 요구된 지연 내에 리턴될 수 없고, 전술한 컴퓨터 시스템에 의해 확장 메모리(104)에 액세스하는 것의 실현가능성이 영향을 받는다.
전술한 지연 문제를 해결하기 위해, 종래 기술에서는, 메모리 제어기의 시간 시퀀스 파라미터를 수정하는 방식이 사용되는데, 즉, 프로세서에 통합된 메모리 제어기의 시간 시퀀스 파라미터가 수정되어, 프로세서의 시간 시퀀스 파라미터가 실제 메모리 액세스 지연보다 더 크게 된다. 그러나, 프로세서가 최대 시간 시퀀스 파라미터의 제한된 설정 범위를 지원하기 때문에, 확장 메모리에 액세스하는 프로세스에서 추가 액세스 지연을 보상하는 것은 어렵다.
전술한 문제에 기초하여, 본 발명의 실시예들은 확장 메모리에 액세스하는 프로세스에서의 지연이 보상될 수 없는 문제를 효과적으로 해결하기 위하여 확장 메모리에 액세스하기 위한 방법, 디바이스, 및 시스템을 제공한다.
본 발명의 실시예들의 제1 양태는 컴퓨터에 의해 확장 메모리에 액세스하기 위한 방법을 제공하는데, 여기서 컴퓨터 내의 프로세서 시스템은 메모리 버스를 사용함으로써 확장 메모리 시스템에 접속되고, 확장 메모리 시스템은 확장 메모리 제어기 및 확장 메모리를 포함하고, 컴퓨터 내의 프로세서 시스템이 확장 메모리에 저장된 액세스될 데이터(to-be-accessed data)에 액세스하는 것이 필요할 때, 방법은,
확장 메모리 제어기에 의해, 컴퓨터 내의 프로세서 시스템에 의해 순차적으로 송신된 N+1개의 메모리 액세스 요청을 수신하는 단계 - 메모리 액세스 요청들 모두에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 물리 주소는 확장 메모리에서 액세스될 데이터의 저장 주소이고, N≥1이고, N은 정수임 - ;
N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청을 수신할 때 확장 메모리 제어기에 의해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 물리 주소를 결정하고, 액세스될 데이터를 획득하기 위한 판독 요청을 확장 메모리로 송신하고, 구체적인 응답 메시지를 프로세서 시스템으로 리턴하는 단계 - 판독 요청은 물리 주소를 포함함 - ;
확장 메모리에 의해 리턴된 액세스될 데이터를 수신하기 전에, N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청 후에 또 다른 메모리 액세스 요청이 수신될 때마다, 확장 메모리 제어기에 의해, 구체적인 응답 메시지를 메모리 버스 프로토콜에 명시된 액세스 지연 내에 프로세서 시스템으로 리턴하는 단계;
확장 메모리에 의해 리턴된 액세스될 데이터를 수신한 후에 확장 메모리 제어기에 의해, 액세스될 데이터를 데이터 버퍼로 기입하고, 구체적인 응답 메시지를 프로세서 시스템으로 리턴하는 것을 정지하는 단계; 및
N+1개의 메모리 액세스 요청 중 또 다른 메모리 액세스 요청을 수신할 때 확장 메모리 제어기에 의해, 데이터 버퍼로부터 액세스될 데이터를 판독하고, 액세스될 데이터를 프로세서 시스템으로 리턴하는 단계
를 포함한다.
제1 양태를 참조하면, 제1 가능한 구현 방식에서, N+1개의 메모리 액세스 요청들 모두에서의 액세스 주소들은 동일한 뱅크 주소(bank address) 및 상이한 행 주소(row address)를 포함한다.
제1 양태 및 제1 양태의 제1 가능한 구현 방식을 참조하면, 제2 가능한 구현 방식에서, 방법은 확장 메모리 제어기에 의해, N+1개의 메모리 액세스 요청들 모두에 포함된 액세스 주소들과 확장 메모리에서 액세스될 데이터의 물리 주소 사이의 매핑 관계를 미리 설정하는 단계를 추가로 포함하며; 확장 메모리 제어기에 의해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 물리 주소를 결정하는 것은 물리 주소를 획득하기 위해, 확장 메모리 제어기에 의해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 매핑 관계를 질의하는 것을 포함한다.
제1 양태의 제2 가능한 구현 방식을 참조하면, 제3 가능한 구현 방식에서, 확장 메모리 제어기에 의해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 물리 주소를 결정한 후에, 방법 구현 방식은, 확장 메모리 제어기에 의해, 데이터 버퍼 내에 레코드를 생성하고 - 레코드는 태그 필드 및 데이터 필드를 포함함 - , 태그 필드를 물리 주소로 설정하는 단계를 추가로 포함한다.
제1 양태의 제3 가능한 구현 방식을 참조하면, 제4 가능한 구현 방식에서, 레코드는 유효성 필드를 추가로 포함하고, 방법은 확장 메모리 제어기에 의해, 유효성 필드를 무효로 설정하는 단계를 추가로 포함한다.
제1 양태의 제4 가능한 구현 방식을 참조하면, 제5 가능한 구현 방식에서, N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청 후에 또 다른 메모리 액세스 요청이 수신될 때마다, 방법 구현 방식은, 물리 주소를 획득하기 위해, 확장 메모리 제어기에 의해, 메모리 액세스 요청들 모두에서 반송된 액세스 주소들에 따라 매핑 관계를 질의하는 단계; 및 물리 주소에 따라 데이터 버퍼 내의 레코드를 질의하고, 레코드 내의 유효성 필드가 무효라고 결정할 때, 구체적인 응답 메시지를 생성하는 단계를 추가로 포함한다.
제1 양태의 제4 가능한 구현 방식을 참조하면, 제6 가능한 구현 방식에서, 확장 메모리에 의해 리턴된 액세스될 데이터를 수신한 후에 확장 메모리 제어기에 의해, 액세스될 데이터를 데이터 버퍼로 기입하는 것은, 확장 메모리 제어기에 의해, 물리 주소에 대응하는 레코드에 대해 데이터 버퍼를 검색하는 것, 레코드 내의 데이터 필드를 액세스될 데이터로 설정하는 것, 및 유효성 필드를 유효로 설정하는 것을 포함한다.
본 발명의 실시예들의 제2 양태는 확장 메모리에 액세스하기 위한 방법을 제공하는데, 여기서 컴퓨터는 메모리 버스를 사용함으로써 확장 메모리 시스템에 접속되고, 확장 메모리 시스템은 확장 메모리 제어기 및 확장 메모리를 포함하고, 컴퓨터 내의 프로세서 시스템이 확장 메모리에 저장된 액세스될 데이터에 액세스하는 것이 필요할 때, 방법 실시예는,
프로세서 시스템에 의해, 액세스될 데이터의 저장 주소를 수신하는 단계;
프로세서 시스템에 의해, 액세스될 데이터의 저장 주소에 따라 N+1개의 메모리 액세스 요청을 생성하는 단계 - N+1개의 메모리 액세스 요청에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 물리 주소는 확장 메모리에서 액세스될 데이터의 저장 주소이고, N≥1이고, N은 정수임 - ; 및
프로세서 시스템에 의해, N+1개의 메모리 액세스 요청을 확장 메모리 제어기로 송신하는 단계를 포함한다.
제2 양태를 참조하면, 제1 가능한 구현 방식에서, 프로세서 시스템에 의해, 액세스될 데이터의 저장 주소에 따라 N+1개의 메모리 액세스 요청을 생성하기 전에, 방법은,
컴퓨터에 의해 확장 메모리로부터 데이터를 획득하는 것에 대한 지연 파라미터에 따라 값 N을 결정하는 단계를 추가로 포함하는데, 여기서 컴퓨터에 의해 확장 메모리로부터 데이터를 획득하는 것에 대한 지연 파라미터는 다음 파라미터들 중 어느 하나 또는 임의의 조합을 포함한다: 확장 메모리 제어기로부터의 메모리 액세스 요청을 확장 메모리로 전송하는 것에 대한 지연(tPD1), 메모리 액세스 요청에 의해 확장 메모리로부터 판독되는 데이터를 확장 메모리 제어기로 전송하는 것에 대한 지연(tPD2), 또는 프로세서 시스템에 의해 송신된 2개의 연속적 메모리 액세스 요청 사이의 시간 간격(T_Interval).
제2 양태의 제1 가능한 구현 방식을 참조하면, 제2 가능한 구현 방식에서, 컴퓨터에 의해 확장 메모리로부터 데이터를 획득하는 것에 대한 지연 파라미터에 따라 값 N을 결정하는 단계는, N≥[(tPD1+tPD2)/T_Interval]이고, [*]은 반올림 함수인 값 N을 결정하는 것을 포함한다.
제2 양태의 것인 제1 가능한 구현 방식 및 제2 가능한 구현 방식을 참조하면, 제3 가능한 구현 방식에서, 2개의 연속적 메모리 액세스 요청 사이의 시간 간격 T_Interval은 tGAPmin=tRCD+tRTP+tRP 또는 T_Fence(즉, 프로세서에 의해 펜스(Fence) 명령어를 실행하는 것에 대한 지연)이다.
제2 양태, 제2 양태의 제1 가능한 구현 방식, 제2 양태의 제2 가능한 구현 방식, 및 제2 양태의 제3 가능한 구현 방식을 참조하면, 제4 가능한 구현 방식에서, 프로세서 시스템에 의해, 액세스될 데이터의 저장 주소에 따라 N+1개의 메모리 액세스 요청을 생성하는 것은,
가상 주소(Addr_Virtual)에 대응하는 물리 주소(Addr_Physical)를 획득하기 위해, 액세스될 데이터의 가상 주소에 따라 가상-대-물리 주소 변환을 수행하는 것 - 액세스될 데이터의 저장 주소는 가상 주소임 - ;
물리 주소(Addr_Physical)에 따라 N개의 액세스 주소(Addr_Physical(n))를 생성하는 것 - n은 정수이고 1≤n≤N이고, N개의 액세스 주소의 행 주소들은 Addr_Physical_Row(n)=n*M+Addr_Physical_Row인데, 여기서 n은 정수이고 1≤n≤N이고, M은 확장 메모리에 포함된 메모리 행들의 수량이고, Addr_Physical_Row는 물리 주소(Addr_Physical)의 행 주소이고; N개의 물리 주소 각각의 행 주소 이외의 주소는 물리 주소(Addr_Physical)의 행 주소 이외의 주소와 동일한 것임 - ; 및
프로세서 시스템에 의해, Addr_Physical 및 Addr_Physical(n) - n은 정수이고 1≤n≤N임 - 에 따라 N+1개의 메모리 액세스 요청을 생성하는 것을 포함한다.
본 발명의 실시예들의 제3 양태는 컴퓨터 내의 프로세서 시스템에 의해 확장 메모리에서 액세스될 데이터에 액세스하도록 적용된, 확장 메모리 제어기를 컴퓨터 내에 제공하는데, 여기서 컴퓨터 내의 프로세서 시스템은 메모리 버스를 사용함으로써 확장 메모리 시스템에 접속되고, 확장 메모리 시스템은 확장 메모리 제어기 및 확장 메모리를 포함하고, 확장 메모리 제어기는,
컴퓨터 내의 프로세서 시스템에 의해 순차적으로 송신된 N+1개의 메모리 액세스 요청을 수신하도록 구성되는 수신 모듈 - 메모리 액세스 요청들 모두에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 물리 주소는 확장 메모리에서 액세스될 데이터의 저장 주소이고, N≥1이고, N은 정수임 - ;
N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청이 수신될 때 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 물리 주소를 결정하고 - 물리 주소는 확장 메모리에서 액세스될 데이터의 저장 주소임 - , 액세스될 데이터를 획득하기 위한 판독 요청을 생성하고, 구체적인 응답 메시지를 프로세서 시스템으로 리턴하고 - 판독 요청은 물리 주소를 포함함 - ; 확장 메모리에 의해 리턴된 액세스될 데이터가 수신되기 전에, N+1개의 메모리 액세스 요청 중의 메모리 액세스 요청이 수신될 때마다, 메모리 버스 프로토콜에 명시된 액세스 지연 내에 구체적인 응답 메시지를 생성하고; 확장 메모리에 의해 리턴된 액세스될 데이터가 수신된 후에 액세스될 데이터를 데이터 버퍼로 기입하고; N+1개의 메모리 액세스 요청 중 또 다른 메모리 액세스 요청이 수신될 때, 데이터 버퍼로부터 액세스될 데이터를 판독하고, 액세스될 데이터를 송신 모듈로 송신하도록 구성되는 실행 모듈; 및
판독 요청을 확장 메모리로 송신하고; 확장 메모리에 의해 리턴된 액세스될 데이터가 수신되기 전에, N+1개의 메모리 액세스 요청 중의 메모리 액세스 요청이 수신될 때마다, 구체적인 응답 메시지를 메모리 버스 프로토콜에 명시된 액세스 지연 내에 프로세서 시스템으로 리턴하고; 실행 모듈로부터 액세스될 데이터를 수신하고, 액세스될 데이터를 프로세서 시스템으로 송신하도록 구성되는 송신 모듈
을 포함한다.
제3 양태를 참조하면, 제1 가능한 구현 방식에서, N+1개의 메모리 액세스 요청들 모두에서의 액세스 주소들은 동일한 뱅크 주소 및 상이한 행 주소를 포함한다.
제3 양태 및 제3 양태의 제1 가능한 구현 방식을 참조하면, 제2 가능한 구현 방식에서, 실행 모듈은, N+1개의 메모리 액세스 요청들 모두에 포함된 액세스 주소들과 확장 메모리에서 액세스될 데이터의 물리 주소 사이의 매핑 관계를 미리 설정하고; 확장 메모리에서 액세스될 데이터의 물리 주소를 결정하기 위해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라, 제1 메모리 액세스 요청에 포함된 주소와 확장 메모리에서 액세스될 데이터의 물리 주소 사이의 매핑 관계를 질의하도록 추가로 구성된다.
제3 양태의 제2 가능한 구현 방식을 참조하면, 제3 가능한 구현 방식에서, 실행 모듈은, 물리 주소가 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 결정된 후에 데이터 버퍼 내에 레코드를 생성하고 - 레코드는 태그 필드 및 데이터 필드를 포함함 - , 태그 필드를 물리 주소로 설정하도록 추가로 구성된다.
제3 양태의 제3 가능한 구현 방식을 참조하면, 제4 가능한 구현 방식에서, 레코드는 유효성 필드를 추가로 포함하고, 실행 모듈은 레코드 내의 유효성 필드를 무효로 설정하도록 추가로 구성된다.
제3 양태의 제4 가능한 구현 방식을 참조하면, 제5 가능한 구현 방식에서, 실행 모듈은, 물리 주소를 결정하기 위해, 메모리 액세스 요청이 수신될 때마다, 메모리 요청들 모두에서 반송된 액세스 주소들에 따라 매핑 관계를 질의하고; 물리 주소에 따라 데이터 버퍼 내의 레코드를 질의하고, 레코드 내의 유효성 필드가 무효라고 결정될 때 구체적인 응답 메시지를 생성하도록 추가로 구성된다.
제3 양태의 제4 가능한 구현 방식을 참조하면, 제6 가능한 구현 방식에서, 실행 모듈은, 확장 메모리에 의해 리턴된 액세스될 데이터가 수신된 후에 물리 주소에 대응하는 레코드에 대해 데이터 버퍼를 검색하고, 레코드 내의 데이터 필드를 액세스될 데이터로 설정하고, 유효성 필드를 유효로 설정하도록 추가로 구성된다.
본 발명의 실시예들의 제4 양태는 확장 메모리를 포함하는 컴퓨터 시스템을 제공하는데, 여기서 컴퓨터 시스템은 프로세서 시스템, 메인 메모리, 제3 양태 또는 제3 양태의 각각의 구현 방식에서 설명된 바와 같은 확장 메모리 제어기, 및 확장 메모리를 포함하고; 확장 메모리 제어기는 확장 메모리에 접속되고, 확장 메모리 제어기는 메모리 인터페이스를 사용함으로써 프로세서 시스템에 접속되고, 프로세서 시스템은 메인 메모리에 접속되고; 메인 메모리는 프로그램을 저장하고 실행 명령어를 저장하도록 구성되고; 프로세서 시스템은 메인 메모리에 저장된 실행 명령어를 실행하도록 구성되어, 프로세서 시스템이 제2 양태 또는 제2 양태의 각각의 구현 방식에서 설명된 바와 같이 컴퓨터에 의해 확장 메모리 시스템 내의 확장 메모리에 액세스하기 위한 방법을 수행하게 한다.
전술한 기술적 솔루션들에 기초하여, 본 발명의 실시예들에서 제공되는 확장 메모리에 액세스하기 위한 방법, 디바이스, 및 시스템에 따르면, 프로세서 시스템에 의해 순차적으로 송신된 N+1개의 메모리 액세스 요청을 수신한 후에(N은 1 이상의 양의 정수임), 확장 메모리 제어기는 액세스될 데이터를 판독하기 위한 요청을 확장 메모리로 송신하고, 확장 메모리 제어기로부터 액세스될 데이터를 판독하는 프로세스에서, 확장 메모리 제어기는 액세스될 데이터가 판독되고 데이터 버퍼로 기입될 때까지 메모리 버스 프로토콜에 명시된 액세스 지연 내에 수신된 메모리 액세스 요청에 대한 특수 응답 메시지를 리턴하고, 다음 메모리 액세스 요청의 실행 사이클 내에 액세스될 데이터를 프로세서로 리턴한다. 전술한 프로세스에서, 행 미스들(row misses)을 갖는 N+1개의 메모리 액세스 요청의 실행에 의해 야기된 지연은 확장 메모리로부터의 액세스될 데이터의 판독 및 확장 메모리 제어기에 의한 액세스될 데이터의 프로세서 시스템으로의 리턴하는 것에 대한 지연을 효과적으로 보상하는 데 사용된다.
본 발명의 실시예들에서 기술적 솔루션들을 더 명확하게 설명하기 위해, 다음은 실시예들을 설명하기 위해 요구되는 첨부 도면들을 간단히 설명한다.
도 1은 종래 기술에서 확장 메모리를 포함하는 컴퓨터 시스템의 하드웨어 구성의 개략도이고;
도 2는 본 발명의 실시예에 따른 컴퓨터 시스템의 하드웨어 구성 구조의 개략도이고;
도 3은 본 발명의 실시예에 따라 컴퓨터에 의해 확장 메모리에 액세스하는 것에 대한 지연을 분석하는 것에 대한 개략도이고;
도 4는 DDR 프로토콜에서 메모리 액세스 요청의 실행 동안 시간 시퀀스를 분석하는 것에 대한 개략도이고;
도 5a는 확장 메모리에서 데이터에 액세스하기 위한 처리 방법의 실시예의 개략적인 플로우차트이고;
도 5b는 액세스될 데이터의 저장 주소에 따라 N+1개의 액세스 주소를 생성하는 것에 대한 개략적인 플로우차트이고;
도 6은 본 발명의 실시예에 따라 프로세서에 의해 검출된 확장 메모리 공간의 개략도이고;
도 7은 확장 메모리 제어기에 의해 메모리 액세스 요청을 처리하는 것에 대한 실시예의 개략적인 플로우차트이고;
도 8은 확장 메모리 제어기에 의해 수행된 순차적 실행에 대한 실시예의 개략적인 플로우차트이고;
도 9는 확장 메모리 제어기에 의해 수행된 비순차적 실행에 대한 실시예의 개략적인 플로우차트이고;
도 10은 확장 메모리 제어기의 실시예에서 구성 구조의 개략도이다.
다음은 본 발명의 실시예들에서의 기술적 솔루션들을 본 발명의 실시예들에서의 첨부 도면들을 참조하여 명확하고 완전하게 설명한다. 명백하게, 설명된 실시예들은 본 발명의 실시예들의 전부가 아닌 부분이다.
일반적으로, 프로그램 모듈은 루틴, 프로그램, 컴포넌트, 데이터 구조, 및 특정한 태스크를 실행하거나 특정한 추상 데이터 유형을 구현하기 위한 다른 유형들의 구조들을 포함한다. 게다가, 본 기술 분야의 통상의 기술자는 각각의 실시예가 핸드헬드 디바이스(handheld device), 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 소형 컴퓨터, 메인프레임 컴퓨터, 및 유사한 컴퓨팅 디바이스를 포함하는 다른 컴퓨터 시스템 구성들을 사용함으로써 구현될 수 있다는 것을 이해할 수 있다. 각각의 실시예는 통신 네트워크를 사용하여 접속되는 원격 처리 디바이스에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 추가로 구현될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 디바이스들에 위치될 수 있다.
각각의 실시예는 컴퓨터; 컴퓨팅 시스템; 또는 컴퓨터 프로그램 제품 또는 컴퓨터 시스템 등이 예시적인 프로세스의 명령어를 실행하는 컴퓨터 프로그램의 컴퓨터 저장 매체에 의해 구현된 프로세스로서 구현될 수 있다. 예를 들어, 컴퓨터 판독가능 저장 매체는 휘발성 컴퓨터 메모리, 비-휘발성 메모리, 하드 디스크 드라이브, 플래시 드라이브, 플로피 디스크, 콤팩트 디스크(Compact Disc), 또는 유사한 매체 중 하나 이상을 사용함으로써 구현될 수 있다.
본 명세서에서, "프로세서 시스템(Processor System)"이라는 용어는 프로세서 및 메모리 제어기를 포함하는 시스템을 지칭한다. 메모리 제어기가 프로세서(Processor)에 통합될 때, 프로세서 시스템은 메모리 제어기를 포함하는 프로세서 칩을 지칭한다. 본 발명의 이러한 실시예의 애플리케이션 시나리오를 참조하면, 프로세서 시스템 내의 프로세서 칩은 오브젝트 프로그램(object program)을 실행하는 프로세스에서 생성된 메모리 액세스 명령어를 수신하고, 액세스될 데이터의 주소에 따라 메모리 액세스 요청을 생성하고, 메모리 액세스 요청을 메모리 제어기로 송신하도록 구성된다. 메모리 제어기는 메모리 버스 프로토콜에 따라 메모리 칩에 의해 실행될 수 있는 데이터 판독/기입 요청들로 메모리 액세스 요청을 분해한다.
본 명세서에서, "메모리 제어기(Memory Controller)"라는 용어는 컴퓨터 시스템에서 메모리를 제어하는 컴퓨터 컴포넌트이다. 메모리 제어기는 메모리와 프로세서 사이의 데이터 교환을 가능하게 한다. 구체적인 애플리케이션에서, 메모리 제어기는 프로세서(Processor)에 독립적일 수 있거나 프로세서에 통합될 수 있다. 본 명세서에서, "메모리 제어기(memory controller)"는 시스템 메모리(System Memory)에 대한 액세스를 제어하도록 구성된다. 많은 경우에, 메모리 제어기는 프로세서에 통합된다. 메모리 제어기가 프로세서에 독립적이라면, 메모리 제어기는 프로세서에 접속될 필요가 있다.
본 명세서에서, "확장 메모리 제어기(extended memory controller)"라는 용어는 메모리 인터페이스를 사용함으로써 메모리 제어기에 접속하도록 구성되고 프로세서가 확장 메모리에 액세스하기 위한 브리지(bridge)로서 사용된다.
본 명세서에서, "확장 메모리(extended memory)"라는 용어는 메모리 확장을 구현하기 위해 메모리 확장 칩을 사용함으로써 접속되는 메모리를 지칭한다. 확장 메모리는, 다음 형태들로 구현될 수 있지만, 그로 제한되지 않는다: DRAM(Dynamic Random Access Memory, 동적 랜덤 액세스 메모리), PCM(Phase-Change Memory, 상 변화 메모리), 및 MRAM(Magnetic Random Access Memory, 자기 랜덤 액세스 메모리).
본 명세서에서, "메모리 액세스 명령어(memory access instruction)"로서도 지칭되는 "메모리 액세스 명령어(memory access instruction)"라는 용어는 소스 코드(Source Code)를 컴파일(Compile)하여 획득되는 오브젝트 코드(Object Code)에 포함되는 로드(Load) 및 스토어(Store)와 같은 메모리 액세스 명령어들을 지칭하고, 이러한 메모리 액세스 명령어들은 프로세서에 의해 요구된다. 실행 프로세스에서, 프로세서는 가상 주소(Virtual Address) 대 물리 주소(Physical Address) 변환 프로세스에서 메모리 액세스 명령어 내의 가상 주소를 물리 주소로 변환하고, 메모리 액세스 요청을 생성하고, 메모리 액세스 요청을 실행을 위한 메모리 제어기(Memory Controller)로 송신할 필요가 있다.
본 명세서에서, "메모리 액세스 요청(memory access request)"으로서도 지칭되는 "메모리 액세스 요청"이라는 용어는 메모리 내의 데이터에 액세스하기 위한 그리고 프로세서가 메모리 액세스 명령어를 실행한 후에 생성되는 요청을 지칭한다. 메모리 액세스 요청은 판독 요청 및 기입 요청을 포함한다.
본 명세서에서, "데이터 버퍼(data buffer)"라는 용어는 확장 메모리로부터 판독되는 액세스될 데이터를 저장하도록 구성된 저장 디바이스를 지칭하고, 확장 메모리 제어기에 통합될 수 있거나, 또는 확장 메모리 제어기에 독립적으로 구현될 수 있다.
본 발명의 실시예에 대응하는 시스템의 하드웨어 아키텍처
본 발명의 구체적인 실시예가 설명되기 전에, 본 발명의 실시예에 대응하는 시스템의 하드웨어 구성 구조가 먼저 설명된다. 도 2를 참조하면, 다음 컴포넌트들이 포함된다:
프로세서 시스템(Processing System)(201): 프로세서 시스템(201)은 프로세서(2011) 및 메모리 제어기(2012)를 포함한다. 명령어 실행 컴포넌트로서, 본 발명에서 제공된 이러한 실시예에서, 프로세서 시스템(201)은 실행 프로세스에서 실행가능 프로그램에 의해 생성된 메모리 액세스 명령어를 수신하고, 메모리 액세스 명령어에 따라 메모리 액세스 요청을 생성하도록 구성된다. 프로세서(2011)는 메모리 액세스(메모리 액세스) 명령어를 처리하고, 메모리 액세스 요청을 생성하고, 메모리 액세스 요청을 메모리 제어기(2012)로 송신하도록 구성된다. 메모리 제어기(2012)는 메모리 액세스 요청에 포함된 위치 속성 정보에 따라 시스템 메모리(202) 또는 확장 메모리 (204)에 액세스할지를 결정한다. 시스템 메모리(202)가 액세스되어야 한다고 결정될 때, 메모리 액세스 요청은 시스템 메모리(202)로 송신되고; 또는 확장 메모리(204)가 액세스되어야 한다고 결정될 때, 메모리 액세스 요청은 확장 메모리 제어기(203)로 송신된다.
시스템 메모리(Memory)(202): 시스템 메모리(202)는 메모리 버스를 사용함으로써 프로세서 시스템(201)에 직접적으로 접속된 메모리를 지칭하고, 실행 프로세스에서 프로세서 시스템(201)의 운용 데이터(operational data)를 일시적으로 저장하도록 구성된다.
확장 메모리 제어기(Extended Memory Controller)(203): 확장 메모리 제어기(203)는 확장 메모리(204)에 접속하도록 구성되고 프로세서 시스템(201)이 확장 메모리(204)에 대해 메모리 액세스 처리를 수행하기 위한 브리지로서 사용된다. 확장 메모리 제어기(203)는 다음 유형들의 버스들을 사용함으로써 프로세서(201)에 접속되고, 이러한 유형들의 버스들은 DDR(Double Data Rate, 더블 데이터 레이트) 버스, LPDDR(Low Power DDR, 저 전력 DDR) 버스, 또는 Wide I/O 버스를 포함하지만 그로 제한되지 않는다. 확장 메모리 제어기(203)는 적어도 다음 모듈들을 포함한다: 확장 메모리에서 액세스될 데이터에 대해 판독 동작을 수행하도록 구성된 실행 모듈(2031), 및 실행 모듈(2031)에 의해 확장 메모리(204)로부터 판독되는 액세스될 데이터를 일시적으로 저장하도록 구성된 데이터 버퍼(2032). 액세스될 데이터를 캐싱(caching)하기 위한 컴포넌트로서 데이터 버퍼(2032)는 확장 메모리 제어기(203)에 통합될 수 있거나, 또는 확장 메모리 제어기(203)에 독립적으로 구현될 수 있다는 점에 유의해야 한다. 이것은 본 발명의 이러한 실시예에서 제한되지 않는다.
확장 메모리(Extended Memory)(204): 확장 메모리(204)는 시스템 메모리(202)와 상이한 확장 메모리를 지칭하고, 실행 프로세스에서 프로세서(201)의 운용 데이터를 저장하도록 구성된다. 확장 메모리(204)는 DRAM(Dynamic Random Access Memory, 동적 랜덤 액세스 메모리), PCM(Phase-Change Memory, 상 변화 메모리), 및 MRAM(Magnetic Random Access Memory, 자기 랜덤 액세스 메모리)과 같은 상이한 저장 매체를 사용함으로써 구현될 수 있다.
도 2에 도시된 시스템의 하드웨어 구성 구조의 개략도에서, 메모리 확장 칩으로서의 역할을 하는 확장 메모리 제어기(203)의 존재 때문에, 확장 메모리(204)에서 데이터를 요청하기 위해 사용되고 프로세서 시스템(201)에 의해 송신되는 판독 요청을 실행하는 프로세스에서 상대적으로 높은 지연이 존재하고, 액세스될 데이터는 DDR 프로토콜에 의해 요구된 액세스 지연 내에 리턴될 수 없다. 도 2를 참조하면, 확장 메모리에 액세스하는 것에 대한 지연의 문제가 도 3에 기초하여 분석된다.
도 3에서, 다음 3개 지연이 확장 메모리(204)에서 데이터를 판독하는 동작을 수행하는 것에 존재한다:
tPD1: 프로세서 시스템(201)에 의해 송신되는, "확장 메모리 제어기(203)"로부터의 메모리 액세스 요청을 "확장 메모리(204)"로 전송하는 것에 대한 지연으로, 신호의 전송 지연, 및 확장 메모리 제어기(203)에서의 논리 처리의 지연을 포함함;
tRL: "메모리 액세스 요청을 수신하는 것"으로부터 "확장 메모리(204)와 확장 메모리 제어기(203) 사이의 버스로 액세스될 데이터를 전송하는 것"까지의 확장 메모리(204)의 지연; 및
tPD2: 확장 메모리(204)로부터 판독되는 데이터를 "확장 메모리(204)로부터 확장 메모리 제어기(203)로", 및 "확장 메모리 제어기(203)"로부터 "프로세서 시스템(201) 내의 메모리 제어기(2012)"로 전송하는 것에 대한 지연.
프로세서의 실제 메모리 액세스 지연은 tPD1+tRL+tPD2이다. 이것은 (DDR 프로토콜과 같은) 메모리 액세스 프로토콜의 요건을 충족시키지 않는다: 액세스될 데이터는 tRL 지연 내에 리턴되어야 할 필요가 있다. 그러므로, 지연(tPD1+tPD2)을 보상하는 방법이 본 발명의 이러한 실시예의 시작 점이 된다.
기존 메모리 버스 프로토콜(일반적으로 DDR 프로토콜이 사용됨)은 고정-지연 동기식 메모리 액세스 프로토콜이다. 하나의 메모리 액세스 요청의 실행은 다음 3개 스테이지로 나뉜다:
A. 활성화(Activate): 메모리 제어기(Memory Controller)는 DRAM에 있고 행 주소에 대응하는 하나의 데이터 행을 판독하기 위해 활성화(activate) 커맨드 및 행 주소(Row Address)를 행 버퍼(Row Buffer)로 송신한다.
B. 판독/기입(Read/Write): 메모리 제어기는 열 주소에 대응하고 행 버퍼에 있는 데이터를 판독/기입하기 위해 판독/기입 커맨드 및 열 주소(Column Address)를 송신한다.
C. 프리-차지(Pre-Charge) : 메모리 제어기는 프리-차지 커맨드를 송신하여 행 버퍼를 클로즈(close)한다.
2개의 연속적 메모리 액세스 요청은 2개의 연속적 메모리 액세스 요청의 행 주소들이 동일한 것인지에 따라 다음 두 가지 유형으로 분류될 수 있다:
(1) 행 히트(Row Hit): 2개의 메모리 액세스 요청에 의해 동작될 필요가 있는 데이터는 동일한 뱅크(Bank) 내의 동일한 행(즉, 행 주소들이 동일한 것임) 상에 위치된다. 그러므로, 제1 메모리 액세스 요청의 판독/기입(Read/Write command)이 실행된 후에, 행 데이터는 여전히 행 버퍼(Row Buffer)에 위치되고, 따라서 메모리 제어기는 제1 메모리 액세스 요청의 프리-차지 스테이지 및 제2 메모리 액세스 요청의 활성화 동작 스테이지를 실행하지 않고 제2 메모리 액세스 요청의 것인 판독/기입 커맨드 및 열 주소를 직접적으로 송신할 수 있다.
(2) 행 미스(Row Miss): 2개의 메모리 액세스 요청에 의해 동작될 필요가 있는 데이터는 동일한 뱅크 내의 상이한 행 상에 위치된다. 제1 메모리 액세스 요청의 판독/기입(Read/Write) 스테이지가 실행된 후에, 행 버퍼를 클로즈하기 위해 프리-차지 동작(the Pre-Charge command)이 수행될 필요가 있고, 그 다음에 활성화 동작(the Activate command)이 행 데이터를 행 버퍼로 판독하기 위해 제2 메모리 액세스 요청의 행에 대해 수행되고, 마지막으로, 제2 메모리 액세스 요청의 것인 판독/기입 커맨드 및 열 주소가 송신될 수 있다.
도 4는 DDR 프로토콜에서 메모리 액세스 요청을 실행하는 프로세스에서의 시간 시퀀스 요건을 도시한다.
tRL: "판독(RD) 커맨드를 송신하는 것"으로부터 "데이터가 메모리 버스에 진입하는 것"까지의 고정된 지연;
tRCD: "활성화(ACT) 커맨드를 송신하는 것"으로부터 "판독(RD) 커맨드를 송신하는 것"까지의 최소 시간 간격;
tRTP: "판독(RD) 커맨드를 송신하는 것"으로부터 "프리-차지(PRE) 커맨드를 송신하는 것"까지의 최소 시간 간격; 및
tRP: "프리-차지(PRE) 커맨드를 송신하는 것"으로부터 "다음 활성화(ACT) 커맨드를 송신하는 것"까지의 최소 시간 간격.
전술한 파라미터들에 따라, 행 미스들을 갖는 2개의 판독(RD) 커맨드 사이의 최소 시간 간격은 tGAPmin=tRCD+tRTP+tRP인 것으로 계산될 수 있다.
게다가, 메모리 배리어(Memory Barrier) 기술이 사용될 수 있다. 메모리 바(Memory Bar), 메모리 펜스(memory fence), 펜스 명령어(Fence instruction), 등으로도 지칭되는 메모리 배리어는 동기식 펜스 명령어의 유형이고, CPU 또는 컴파일러에 의해 메모리에 랜덤하게 액세스하는 동작에서의 동기화의 지점(point)이어서, 단지 이러한 지점 이전의 모든 판독/기입 동작이 수행된 후에만 이러한 지점 후의 동작이 수행될 수 있게 된다.
확장 메모리에 액세스하는 프로세스에서의 지연을 보상하기 위해, 본 발명의 이러한 실시예에서, 행 미스들(row misses)을 갖는 다수의 메모리 액세스 요청을 실행하는 프로세스에서의 지연은, 확장 메모리에서 액세스될 데이터에 액세스하는 것에 대한 지연을 보상하는 데 사용된다. 애플리케이션 프로그램이 확장 메모리(204) 내의 데이터에 액세스하는 요건의 경우에, (컴파일러(Compiler)와 같은) 소프트웨어를 사용하여 확장 메모리 액세스 요청이 행 미스들을 갖는 다수의 메모리 액세스 요청 내로 컴파일되거나, 또는 펜스 명령어가 다수의 생성된 메모리 액세스 요청 사이에 삽입된다. 다수의 메모리 액세스 요청을 실행하는 프로세스에서, 행 미스를 갖는 메모리 액세스 요청의 지연 및 다수의 메모리 액세스 요청 사이의 펜스 명령어의 실행에 의해 야기된 지연에 기초하여, 확장 메모리에서 액세스될 데이터가 처음에 확장 메모리 제어기(데이터 프리페치 스테이지(data prefetch stage))로 판독되고, 그 다음에 메모리 제어기(데이터 판독 스테이지)를 사용함으로써 확장 메모리 제어기로부터 프로세서로 판독된다.
본 발명의 방법 실시예들
도 5a는 컴퓨터에 의해 확장 메모리에 액세스하는 것에 대한 방법 실시예의 개략적인 플로우차트를 도시하고, 다음 단계들을 포함한다.
510. 프로세서 시스템이 액세스될 데이터의 저장 주소를 수신한다.
구체적으로, 실행 프로세스에서, 컴파일러를 사용함으로써 획득된 실행가능 프로그램은 N+1개의 메모리 액세스 명령어를 생성하는데, 여기서 N+1개의 메모리 액세스 명령어는 모두 액세스될 데이터의 저장 주소를 포함한다. 구체적인 구현에서, 액세스될 데이터의 저장 주소는 가상 주소이다.
530. 프로세서 시스템이 액세스될 데이터의 저장 주소에 따라 N+1개의 메모리 액세스 요청을 생성하는데, 여기서 N+1개의 메모리 액세스 요청에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 물리 주소는 확장 메모리에서 액세스될 데이터의 저장 주소이고, N≥1이고, N은 정수이다.
구체적으로, 생성된 N+1개의 액세스 주소는 서로 상이하다. 이것은 N+1개의 액세스 주소에 따라 생성된 메모리 액세스 요청이 MSHR(Miss-status Handling Registers)에서 프로세서에 의해 병합되는 것을 방지한다. N+1개의 액세스 주소는 동일한 물리 주소를 가리킨다. 구체적인 구현에서, N+1개의 액세스 주소와 확장 메모리에서 액세스될 데이터의 물리 주소 사이에는 매핑 관계가 있다.
550. 프로세서 시스템이 생성된 N+1개의 메모리 액세스 요청을 확장 메모리 제어기로 송신한다.
구체적으로, 확장 메모리에서 액세스될 데이터에 액세스하는 것에 대한 지연을 보상하기 위해, 프로세서 시스템에서, N+1개의 메모리 액세스 요청을 생성한 후에, 프로세서는 N+1개의 메모리 액세스 요청을 프로세서 시스템 내의 메모리 제어기로 송신한다. 프로세서는 규칙적인 간격들로 N+1개의 메모리 액세스 요청을 메모리 제어기로 순차적으로 송신할 수 있거나, 또는 한 번에 N+1개의 메모리 액세스 요청들 모두를 메모리 제어기로 송신할 수 있다. N+1개의 메모리 액세스 요청을 수신한 후에, 메모리 제어기는 액세스 주소들이 서로 상이하다(특히, 행 주소들이 상이하다)고 결정하고, N+1개의 메모리 액세스 요청을 행 미스들을 갖는 메모리 액세스 요청으로서 식별한다. 그러므로, N+1개의 메모리 액세스 요청은 메모리 액세스 프로토콜에 명시된 행 미스들을 갖는 메모리 액세스 요청들에 대한 송신 지연 요건에 따라 순차적으로 송신된다.
N+1개의 메모리 액세스 명령어는 오브젝트 프로그램(Object Program)에 포함된다는 점에 유의해야 한다. 오브젝트 프로그램은 소스 프로그램(Source Program)을 컴파일함으로써 컴파일러(Compiler)에 의해 획득된다. 소스 프로그램이 컴파일되는 컴퓨터 시스템은 본 발명의 이러한 실시예에서 컴퓨터 시스템일 수 있거나, 또는 제3자 컴퓨터 시스템일 수 있다.
확장 메모리 시스템을 포함하는 컴퓨터의 경우에, 소스 프로그램을 개발할 때, 소프트웨어 개발자는 각각의 변수의 유형 및 저장 위치를 정의한다. 개발자는 일부 변수가 시스템 메모리에 일시적으로 저장되고 다른 변수들이 확장 메모리에 일시적으로 저장되는 것을 정의한다.
프로그램에서 확장 메모리에 정의된 변수를 사용하는 프로세스에서, 변수(이는 본 명세서에서 "액세스될 데이터(to-be-accessed data)"로서 지칭됨)에 대한 판독/기입 동작이 수반될 필요가 있다. 본 발명의 이러한 실시예에서, 소스 프로그램을 컴파일하는 프로세스에서, 확장 메모리에 저장된 액세스될 데이터의 구체적인 피스(piece)에 액세스하기 위한 대한 요건이 존재할 때, 컴파일러는 확장 메모리의 지연 파라미터 및 메모리 버스 프로토콜의 지연 요건에 따라 액세스될 데이터에 액세스하기 위한 요청을 N+1개의 메모리 액세스 요청 내로 컴파일하는데, 여기서 N≥1이고, N은 정수이다.
또한, 송신될 필요가 있는 메모리 액세스 요청들의 수량은 다음 방식으로 결정된다.
(1) "확장 메모리 제어기"로부터의 메모리 액세스 요청을 "확장 메모리"로 전송하는 것에 대한 지연은 tPD1이고, 메모리 액세스 요청에 따라 판독되는 "확장 메모리"로부터의 데이터를 "확장 메모리 제어기"로 전송하는 것에 대한 지연은 tPD2이다.
구체적으로, 확장 메모리를 포함하는 컴퓨터 시스템이 결정되면, 전술한 2개의 파라미터가 결정될 수 있다.
(2) 프로세서에 의해 송신된 행 미스들을 갖는 2개의 연속적 메모리 액세스 요청 사이의 DDR-프로토콜-준수 시간 간격은 tGAPmin=tRCD+tRTP+tRP로 결정된다.
구체적으로, 도 4 및 관련된 설명들을 참조하면, 프로세서에 의해 송신된 행 미스들을 갖는 2개의 메모리 액세스 요청 사이의 최소 시간 간격은 적어도 tRCD+tRTP+tRP이고, 전술한 파라미터들은 DDR 프로토콜에 명시된다.
또한, 메모리 액세스 요청이 생성된 후에, 프로세서는 프로세서에 의해 송신된 2개의 연속적 메모리 액세스 요청 사이의 시간 간격에서 각각의 메모리 액세스 요청 후에 하나의 펜스 명령어를 삽입할 수 있고, 즉, 지연은 펜스 명령어를 실행함으로써 구현되고, 펜스 명령어의 실행 시간은 T_Fence이다.
(3) 생성될 필요가 있는 메모리 액세스 요청의 수량 N은 전술한 파라미터들에 따라 계산되는데, 즉, N≥[(tPD1+tPD2)/(tRCD+tRTP+tRP)]이고, 여기서 [*]은 반올림 함수이다.
또한, 프로세서가 생성된 N+1개의 메모리 액세스 요청에 펜스 명령어를 삽입한 후에, 계산된 N≥[(tPD1+tPD2)/T_Fence]인데, 여기서 [*]는 반올림 함수이다. T_Fence는 프로세서에 의해 펜스 명령어를 실행하기 위한 지연이다.
구체적인 구현에서, 액세스될 데이터의 저장 주소에 따라 생성된 N+1개의 액세스 주소는 도 5b에 도시된 바와 같이 다음의 단계들(551 내지 553)을 수행함으로써 획득될 수 있다.
551. 가상 주소(Addr_Virtual)에 대응하는 물리 주소(Addr_Physical)를 획득하기 위해, 가상-대- 물리 주소 변환이 액세스될 데이터의 가상 주소(Addr_Virtual)에 따라 수행되는데, 여기서 액세스될 데이터의 저장 주소는 가상 주소이다.
프로세서에 의해 수신된 메모리 액세스 명령어에 포함된 주소는 일반적으로 가상 주소라는 점에 유의해야 한다. 가상 주소에 대응하는 물리 주소를 획득하기 위해, 가상-대- 물리 주소 변환이 액세스될 데이터의 가상 주소에 따라 수행된다.
552. 물리 주소(Addr_Physical)에 따라 N개의 액세스 주소(Addr_Physical(n))를 생성하는데, 여기서 n은 정수이고 1≤n≤N이며; N개의 액세스 주소의 행 주소들은 Addr_Physical_Row(n)=n*M+Addr_Physical_Row인데, 여기서 n은 정수이고 1≤n≤N이고, M은 확장 메모리에 포함된 메모리 행들의 수량이고, Addr_Physical_Row는 물리 주소(Addr_Physical)의 행 주소이고; N개의 물리 주소 각각의 뱅크 주소는 물리 주소(Addr_Physical)의 뱅크 주소와 동일한 것이다.
구체적으로, 저장 행 미스들을 갖는 N+1개의 메모리 액세스 요청을 생성할 목적으로, N+1개의 메모리 액세스 요청의 주소들이 동일한 뱅크 주소 및 상이한 행 주소를 포함한다는 것이 보장될 필요가 있다.
확장 메모리의 주소 공간은 재정의될 필요가 있다. 도 6을 참조하면, N=1이 예로서 사용되고, 확장 메모리에 대한 2개의 메모리 액세스 요청을 생성하기 위해, 프로세서가 액세스될 데이터의 물리 주소에 따라 2개의 액세스 주소를 생성한다.
도 6에서, 프로세서에 의해 검출될 수 있는 메모리 공간은 2개의 부분을 포함한다: 확장 메모리의 실제 메모리 공간 및 음영 공간. 확장 메모리에 대응하는 메모리 공간은 M개의 메모리 행을 포함하고, 확장 메모리에 대응하는 음영 공간 및 메모리 공간은 동일한 크기(행들 및 열들의 크기들이 동일한 것임)이다. 2개의 메모리 액세스 요청이 행 미스들을 갖는 메모리 액세스 요청으로서 사용된다는 것을 보장할 목적으로, 2개의 메모리 액세스 요청의 주소들이 동일한 뱅크 주소 및 상이한 행 주소를 포함한다는 것이 보장될 필요가 있다.
그러므로, 메모리 액세스 요청들의 주소들에서, 메모리 액세스 요청의 행 주소는 i이고, 다른 메모리 액세스 요청의 행 주소는 i+M이다. 이것은 2개의 메모리 액세스 요청의 행 주소들이 상이하다는 것을 보장한다. 게다가, 확장 메모리 공간에서 액세스될 데이터의 물리 주소에 대응하는 행 주소는 음영 공간에서의 행 주소로부터 오프셋 M(offset M)을 감산함으로써 획득된다. 이것은 2개의 주소가 확장 메모리에서 동일한 물리 주소를 가리킨다는 것을 보장한다.
또한, 행 주소에 추가하여, 확장 메모리 내의 물리 주소는 뱅크 주소를 포함한다. 생성된 N+1개의 액세스 주소가 동일한 뱅크 주소 및 상이한 행 주소를 포함한다는 것이 보장된다면, 프로세서 시스템 내의 메모리 제어기는 N+1개의 메모리 액세스 요청을 수신할 때 행 미스들을 갖는 메모리 액세스 요청들로서 N+1개의 메모리 액세스 요청을 식별할 수 있다.
본 발명의 이러한 실시예에 대한 설명을 단순화하기 위해, 액세스될 데이터의 물리 주소에 기초하여 생성된 N+1개의 액세스 주소가 디폴트로 동일한 메모리 칩(Chip)에 있다는 점에 유의해야 한다. 구체적인 구현에서, 뱅크 주소 및 행 주소에 추가하여, 액세스 주소는, 메모리 물리 주소로서, 메모리 물리 주소의 요건에 따라 채널 주소, DIMM 주소, 랭크 주소, 및 칩 주소를 추가로 포함한다. 그러므로, 솔루션의 구체적인 구현에서, "생성된 N+1개의 액세스 주소"는 "액세스될 데이터의 물리 주소"의 채널 주소, DIMM 주소, 랭크 주소, 및 칩 주소와 동일한 것으로 설정될 수 있다.
전술한 구현 방식에서, N=1이 예로서 사용된다는 것이 이해될 수 있다. 또 다른 값의 경우에, 메모리 액세스 요청의 주소가 생성될 수 있고 N+1개의 메모리 액세스 요청이 유사한 프로세스에 따라 생성될 수 있다.
553. 프로세서 시스템이 Addr_Physical 및 Addr_Physical(n)에 따라 N+1개의 메모리 액세스 요청을 생성하는데, 여기서 n은 정수이고 1≤n≤N이다.
전술한 실시예에서, 컴퓨터 내의 프로세서 시스템에 의해 확장 메모리에서 액세스될 데이터에 액세스하는 프로세스에서, 프로세서는 N+1개의 메모리 액세스 요청을 생성하고, 생성된 N+1개의 메모리 액세스 요청에 포함된 액세스 주소들은 동일한 뱅크 주소 및 상이한 행 주소를 포함하여, 프로세서에 통합된 메모리 제어기가 N+1개의 메모리 액세스 요청을 실행할 때 행 미스를 갖는 메모리 액세스 요청을 트리거하게 된다. 행 미스들을 갖는 N+1개의 메모리 액세스 요청을 실행하는 프로세스에서, 확장 메모리 제어기는 이러한 처리 지연에 기초하여 확장 메모리로부터 액세스될 데이터를 판독할 수 있고, 마지막으로, 액세스될 데이터를 프로세서로 리턴한다. 전술한 구현 방식에서, 행 미스를 갖는 메모리 액세스 요청을 실행하는 프로세스에서의 지연은 액세스될 데이터가 명시된 지연 범위 내에 리턴될 수 없다는 문제를 해결하는 데 효과적으로 사용된다.
도 7은 확장 메모리 제어기가 프로세서 시스템에 의해 송신된 N+1개의 메모리 액세스 요청을 수신한 후의 처리 프로세스를 도시한다. 확장 메모리 시스템은 확장 메모리 제어기 및 확장 메모리를 포함한다. 컴퓨터 내의 프로세서 시스템은 메모리 버스를 사용함으로써 확장 메모리 제어기에 접속된다. 컴퓨터 내의 프로세서 시스템이 확장 메모리에 저장된 액세스될 데이터에 액세스할 필요가 있을 때, 방법 실시예는 다음 단계들을 포함한다.
710. 확장 메모리 제어기가 컴퓨터 내의 프로세서 시스템에 의해 순차적으로 송신된 N+1개의 메모리 액세스 요청을 수신하는데, 여기서 메모리 액세스 요청들 모두에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 물리 주소는 확장 메모리에서 액세스될 데이터의 저장 주소이고, N≥1이고, N은 정수이다.
구체적으로, 확장 메모리 제어기는 단계 550에서 설명된 프로세스에서 프로세서 시스템에 의해 순차적으로 송신된 N+1개의 메모리 액세스 요청을 수신한다. N+1개의 메모리 액세스 요청에 포함된 액세스 주소들은 서로 상이하고, N+1개의 액세스 주소는 동일한 물리 주소를 가리킨다.
730. N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청을 수신할 때, 확장 메모리 제어기가 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 물리 주소를 결정하고, 판독 요청을 확장 메모리로 송신하고, 구체적인 응답 메시지를 프로세서 시스템으로 리턴하는데, 여기서 판독 요청은 물리 주소를 반송한다.
구체적으로, 제1 메모리 액세스 요청을 수신할 때, 확장 메모리 제어기는 제1 메모리 액세스 요청의 액세스 주소에 따라 물리 주소를 결정하고, 물리 주소에 대한 판독 요청을 확장 메모리로 송신하는데, 여기서 판독 요청은 확장 메모리로부터 액세스될 데이터를 판독하는 데 사용된다.
750. 확장 메모리에 의해 리턴된 액세스될 데이터를 수신하기 전에, N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청 후에 메모리 액세스 요청이 수신될 때마다, 확장 메모리 제어기가 메모리 버스 프로토콜에 명시된 액세스 지연 내에 구체적인 응답 메시지를 프로세서 시스템으로 리턴한다.
구체적으로, 상대적으로 높은 지연이 액세스될 데이터를 판독하는 프로세스에서 요구되고, 메모리 버스 프로토콜이 고정-지연 동기식 메모리 액세스 프로토콜이기 때문에, 확장 메모리 제어기는 각각의 메모리 액세스 요청에 대한 응답 메시지를 리턴할 필요가 있다. 그러므로, 확장 메모리 제어기는 제1 메모리 액세스 요청에 대한 구체적인 응답 메시지를 프로세서로 리턴한다. 구체적인 응답 메시지는 프로세서 및 확장 메모리 제어기에 의해 동의된 특수 식별자이고, 예를 들어, 0x5a5a5a5a5a5a5a5a가 특수 식별자로서 사용될 수 있다는 점에 유의해야 한다.
특수 식별자는 사용자 정의 가능한 식별자(customizable identifier)라는 점에 유의해야 한다. 구체적인 구현에서, 또 다른 식별자가 또한 사용될 수 있다. 이것은 본 발명의 임의의 실시 예에서 제한되지 않는다.
770. 확장 메모리에 의해 리턴된 액세스될 데이터를 수신한 후에 확장 메모리 제어기가 액세스될 데이터를 데이터 버퍼로 기입하고, 구체적인 응답 메시지를 프로세서 시스템으로 리턴하는 것을 정지한다.
구체적으로, 단계 730에서, 확장 메모리 제어기에 의해 송신된 판독 요청이 확장 메모리로 송신되고, 상대적으로 높은 지연이 확장 메모리로부터 액세스될 데이터를 판독하는 프로세스에서 요구된다. 이러한 스테이지에서, N+1개의 메모리 액세스 요청 중 일부 메모리 액세스 요청은 프로세서에 의해 확장 메모리 제어기로 송신된다. 이러한 경우에, 이러한 메모리 액세스 요청들을 수신한 후에, 액세스될 데이터가 획득되지 않았다는 것을 프로세서에 통지하기 위해, 확장 메모리 제어기는 메모리 버스 프로토콜에 의해 요구된 지연 내에 구체적인 응답 메시지를 프로세서로 리턴한다. 확장 메모리에 의해 리턴된 액세스될 데이터를 수신할 때, 확장 메모리 제어기는 액세스될 데이터를 데이터 버퍼로 기입한다.
데이터 버퍼는 확장 메모리 제어기에 통합될 수 있거나, 또는 확장 메모리 제어기에 독립적으로 구현될 수 있다.
790. N+1개의 메모리 액세스 요청 중 또 다른 메모리 액세스 요청을 수신할 때, 확장 메모리 제어기가 데이터 버퍼로부터 액세스될 데이터를 판독하고, 액세스될 데이터를 프로세서로 리턴한다.
구체적으로, 메모리 버스 프로토콜이 고정-지연 동기식 메모리 액세스 프로토콜이기 때문에, 액세스될 데이터가 데이터 버퍼로 기입된 후에, 확장 메모리 제어기는 데이터 버퍼로부터 액세스될 데이터를 판독하고, 다음 메모리 액세스 요청의 실행 사이클 내에 액세스될 데이터를 프로세서 시스템으로 리턴한다.
또한, N+1개의 메모리 액세스 요청들 모두에서의 액세스 주소들은 동일한 뱅크 주소 및 상이한 행 주소를 포함한다. 프로세서에 통합된 메모리 제어기는 이러한 피처를 갖는 메모리 액세스 요청을 행 미스(Row Miss)를 갖는 메모리 액세스 요청으로서 식별하여, 메모리 액세스 프로토콜에 명시된 지연이 N+1개의 메모리 액세스 요청을 실행하는 프로세스에서 생성될 수 있게 된다.
또한, 확장 메모리 제어기는 N+1개의 메모리 액세스 요청들 모두에 포함된 액세스 주소들과 확장 메모리에서 액세스될 데이터의 물리 주소 사이의 매핑 관계를 미리 설정한다. 확장 메모리 제어기에 의해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 물리 주소를 결정하는 것은, 전술한 물리 주소를 결정하기 위해, 확장 메모리 제어기에 의해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 매핑 관계를 질의하는 것을 포함한다.
또한, 단계 730에서, 확장 메모리 제어기에 의해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 물리 주소를 결정한 후에, 방법 실시예는, 확장 메모리 제어기에 의해, 데이터 버퍼 내에 레코드를 생성하고 - 레코드는 태그 필드 및 데이터 필드를 포함함 - , 태그 필드를 물리 주소로 설정하는 단계를 추가로 포함한다.
또한, 단계 730에서, 레코드는 유효성 필드를 포함하고, 방법 실시예는, 확장 메모리 제어기에 의해, 유효성 필드를 무효로 설정하는 것을 추가로 포함한다.
또한, 단계 750에서, 확장 메모리로부터 액세스될 데이터를 판독하는 프로세스에서, 확장 메모리 제어기가 메모리 액세스 요청을 수신할 때마다, 방법은, 물리 주소를 결정하기 위해, 확장 메모리 제어기에 의해, 메모리 액세스 요청들 모두에서 반송된 액세스 주소들에 따라 매핑 관계를 질의하는 단계; 및 물리 주소에 따라 데이터 버퍼 내의 레코드를 질의하고, 레코드 내의 유효성 필드가 무효라고 결정할 때, 구체적인 응답 메시지를 생성하는 단계를 추가로 포함한다.
또한, 단계 750에서, 확장 메모리 제어기에 의해 액세스될 데이터를 데이터 버퍼로 기입하는 것은, 확장 메모리 제어기에 의해, 물리 주소에 대응하는 레코드에 대해 데이터 버퍼를 검색하는 것, 레코드 내의 데이터 필드를 액세스될 데이터로 설정하는 것, 및 유효성 필드를 유효로 설정하는 것을 포함한다.
전술한 구현 프로세스에서, 제1 메모리 액세스 요청을 수신한 후에, 확장 메모리 제어기는 액세스될 데이터를 판독하기 위한 요청을 확장 메모리로 송신한다. 확장 메모리로부터 액세스될 데이터를 판독하는 프로세스에서, 확장 메모리 제어기는 메모리 버스 프로토콜에 명시된 액세스 지연 내에 수신된 메모리 액세스 요청에 대한 특수 응답 메시지를 리턴하여, 프로세서는 행 미스 요건에 따라 다음 메모리 액세스 요청을 송신할 수 있게 되고, 확장 메모리 제어기는 일시적으로 판독 데이터를 데이터 버퍼에 저장하고 다음 메모리 액세스 요청의 실행 사이클 내에 액세스될 데이터를 프로세서로 리턴한다. 전술한 프로세스에서, 행 미스들을 갖는 N+1개의 메모리 액세스 요청의 실행에 의해 야기된 지연은 확장 메모리로부터 액세스될 데이터를 판독하는 것 및 확장 메모리 제어기에 의해 액세스될 데이터를 프로세서로 리턴하는 것에 대한 지연을 효과적으로 보상하는 데 사용된다.
실험으로부터 획득된 경험적 값에 따르면, 몇 레벨의 확장 메모리들이 존재하고, 액세스될 데이터의 판독/기입이 확장 메모리 내의 데이터에 대해 수행될 때, N=1, 즉, 확장 메모리로부터 데이터를 판독하는 것에 대한 지연을 보상하기 위해 2개의 메모리 액세스 요청이 생성될 수 있다. 다음은 N=1을 예로서 사용하여 2개의 구체적인 구현 프로세스를 설명한다.
Ⅰ. 순차적 실행 방식(도 8을 참조)
도 6에서의 확장 메모리를 포함하는 메모리 공간에 따르면, 단지 하나의 음영 공간만이 가상화될 필요가 있다는 것을 알 수 있다. 도 6이 예로서 사용된다. 도 2에서의 시스템의 구조도를 참조하면, 액세스될 데이터는 확장 메모리에서 i 번째 행에 위치되고, 액세스될 데이터의 행 주소는 i라고 가정된다. 전술한 방법에 따르면, 2개의 생성된 액세스 주소의 행 주소들은 i 및 i+M이다. 2개의 액세스 주소의 뱅크 주소들은 동일한 것으로 설정된다. 전술한 생성된 액세스 주소들은 확장 메모리 제어기 내의 버퍼에 기록된다.
2개의 메모리 액세스 요청은 생성된 2개의 액세스 주소에 따라 구성되고, 프로세서에 의해 확장 메모리 제어기로 송신된다. 프로세서가 처음에 i+M의 행 주소를 갖는 메모리 액세스 요청을 송신하고, 그 다음에 i의 행 주소를 갖는 메모리 액세스 요청을 송신한다고 가정된다. 방법 실시예의 실행 프로세스는 다음과 같다:
810. 확장 메모리 제어기가 제1 메모리 액세스 요청을 수신하고, 요청의 액세스 주소를 획득하기 위해 요청을 파싱(parse)하고; 요청의 행 주소가 i+M인 것을 식별할 때, 확장 메모리 제어기가 특수 식별자를 프로세서로 리턴한다.
구체적으로, 확장 메모리 제어기는 행 주소에 따라 메모리 액세스 요청에서의 주소가 확장 메모리의 실제 메모리 공간 또는 음영 공간에 위치된다는 것을 식별할 수 있기 때문에, 이러한 단계에서, 행 주소가 i+M인 것으로 식별된다면, 액세스 주소가 음영 공간에 위치되는 것으로 결정되고, (0x5a5a5a5a5a5a5a5a와 같은) 특수 식별자가 생성되고 프로세서로 리턴된다.
830. 확장 메모리 제어기가 판독 요청을 생성하고 - 판독 요청은 액세스될 데이터의 물리 주소를 포함함 - , 판독 요청을 확장 메모리로 송신하고, 메모리 버스 프로토콜에 명시된 메모리 액세스 요청 처리 지연 내에 액세스될 데이터를 데이터 버퍼로 판독한다.
구체적으로, 제1 메모리 액세스 요청을 수신한 후에, 확장 메모리 제어기는 액세스될 데이터를 판독하기 위한 요청을 생성하고, 판독 요청을 확장 메모리로 송신한다. 액세스될 데이터는 메모리 버스 프로토콜에 명시된 메모리 액세스 요청 지연 내에 데이터 버퍼로 판독된다.
850. 메모리 버스 프로토콜에 명시된 지연 후에, 확장 메모리 제어기가 제2 메모리 액세스 요청을 수신하고, 요청의 액세스 주소를 획득하기 위해 요청을 파싱하고; 요청의 행 주소가 i인 것을 식별할 때, 확장 메모리 제어기는 데이터 버퍼로부터 액세스될 데이터를 판독하고, 액세스될 데이터를 프로세서로 리턴한다.
구체적으로, 액세스될 데이터를 데이터 버퍼로 판독한 후에, 확장 메모리 제어기는 프로세서에 의해 송신된 제2 메모리 액세스 요청을 수신하고, 액세스 주소의 행 주소를 획득하기 위해 요청을 파싱하고; 요청의 행 주소가 i, 즉, 확장 메모리의 실제 메모리 공간에 위치된 주소라고 결정하는 경우에, 확장 메모리 제어기는 데이터 버퍼로부터 액세스될 데이터를 판독하고, 액세스될 데이터를 프로세서로 리턴한다.
전술한 실시예에서, 사전에 동의되는 주소 액세스 순서에 따라, 수신된 제1 메모리 액세스 요청에 포함된 액세스 주소는 음영 공간의 주소이고, 제2 메모리 액세스 요청에 포함된 액세스 주소는 실제 메모리 공간의 주소이고, 음영 공간의 주소와 실제 메모리 공간의 주소 사이에 매핑 관계가 있다. 음영 공간의 주소를 포함하는 메모리 액세스 요청이 수신될 때, 액세스될 데이터가 확장 메모리로부터 판독되고 데이터 버퍼로 캐싱된다. 실제 메모리 공간의 주소를 포함하는 메모리 액세스 요청이 수신될 때, 데이터는 데이터 버퍼로부터 프로세서로 판독된다.
사전에 동의되는 전술한 주소 액세스 순서는 추가로 "처음에 실제 메모리 공간의 주소에 액세스하고, 그 다음에 음영 공간의 주소에 액세스하는" 순서와 같을 수 있거나, 또는 추가로, 2개의 메모리 액세스 요청에 포함된 액세스 주소들이 매핑 관계를 갖고 동일한 물리 주소를 가리킨다는 것이 보장된다면, 2개의 메모리 액세스 요청에 포함된 주소는 둘 다 음영 공간의 주소(즉, Add1 및 Add2)라는 것이 이해될 수 있다.
Ⅱ. 비순차적 실행 방식(도 9 참조)
본 명세서에서 비순차적(out-of-order)은 메모리 액세스 요청이 확장 메모리 제어기로 송신되는 순서와 프로세서가 메모리 액세스 요청을 송신하는 순서 사이의 불일치를 지칭한다. 이러한 경우에, 메모리 액세스 요청이 송신되는 순서는 액세스 주소의 행 주소가 음영 공간에 위치되는지 아니면 실제 메모리 공간에 위치되는지를 결정함으로써 결정될 수 없다. 그러므로, 이러한 경우에, 메모리 액세스 요청이 송신되는 순서는 액세스될 데이터가 데이터 버퍼에 있는지를 질의함으로써 결정된다.
액세스될 데이터가 확장 메모리에서 i 번째 행에 위치되고, 액세스될 데이터의 행 주소가 i라고 가정된다. 전술한 방법에 따르면, 2개의 생성된 액세스 주소의 행 주소들은 i 및 i+M이다. 2개의 액세스 주소의 뱅크 주소들은 동일한 것으로 설정된다. 전술한 생성된 액세스 주소들은 확장 메모리 제어기 내의 버퍼에 기록된다.
2개의 메모리 액세스 요청은 생성된 2개의 액세스 주소에 따라 구성되고, 프로세서에 의해 확장 메모리 제어기로 송신된다. 프로세서가 처음에 i+M의 행 주소를 갖는 메모리 액세스 요청을 송신하고, 그 다음에 i의 행 주소를 갖는 메모리 액세스 요청을 송신한다고 가정된다. 방법 실시예의 실행 프로세스는 다음과 같다:
910. 확장 메모리 제어기가 2개의 메모리 액세스 요청을 연속적으로 수신하는데, 여기서 2개의 메모리 액세스 요청에서의 액세스 주소들은 서로 상이하고, 2개의 액세스 주소는 동일한 물리 주소를 가리키고, 물리 주소는 확장 메모리에서 액세스될 데이터의 물리 주소이다.
구체적으로, 2개의 메모리 액세스 요청에서의 액세스 주소들은 서로 상이하다. 이것은 2개의 액세스 주소에 따라 생성된 메모리 액세스 요청들이 프로세서에 의해 MSHR(Miss-status Handling Registers)에 병합되는 것을 방지한다. 2개의 액세스 주소는 동일한 물리 주소를 가리킨다. 이것은 2개의 액세스 주소와 물리 주소 사이에 매핑 관계가 있음을 나타낸다.
930. 메모리 액세스 요청들 중 어느 하나를 수신한 후에, 확장 메모리 제어기가 주소를 액세스될 데이터의 물리 주소에 매핑하고, 데이터 버퍼를 검색한다.
구체적으로, 데이터 버퍼는 데이터를 캐싱하도록 구성된다. 구체적인 구현에서, 데이터 버퍼는 캐시를 사용함으로써 구현될 수 있다. 저장은 <식별자, 데이터> 방식으로 수행된다. 액세스될 데이터의 물리 주소는 식별자로서 사용될 수 있다.
950. 액세스될 데이터의 레코드가 발견되지 않을 때, 메모리 액세스 요청이 제1 메모리 액세스 요청이라고 결정하고, 특수 식별자를 프로세서로 리턴하고, 액세스될 데이터를 판독하기 위한 요청을 확장 메모리로 송신하는데, 여기서 판독 요청은 물리 주소를 포함한다.
구체적으로, 단계 930에서, 확장 메모리 제어기가 데이터 버퍼에서 액세스될 데이터의 레코드를 발견할 수 없을 때, 수신된 메모리 액세스 요청이 제1 메모리 액세스 요청인 것으로 결정된다. 이러한 경우에, 액세스 주소가 물리 주소인 판독 요청이 생성되고 확장 메모리로 송신되는데, 여기서 판독 요청은 액세스될 데이터를 판독하는 데 사용된다. 이러한 프로세스에서, 확장 메모리 제어기는 (0x5a5a5a5a5a5a5a5a와 같은) 특수 식별자를 추가로 생성하고, 특수 식별자를 프로세서로 송신하여, 프로세서가 특수 식별자에 따라 액세스될 데이터가 데이터 버퍼로 판독되지 않았다고 결정하게 된다.
970. 액세스될 데이터의 레코드가 발견될 때, 메모리 액세스 요청이 제2 메모리 액세스 요청이라고 결정하고, 데이터 버퍼로부터 데이터를 판독하고 데이터를 프로세서로 리턴한다.
구체적으로, 확장 메모리 제어기가 액세스될 데이터의 레코드를 발견할 때, 그것은 메모리 액세스 요청이 제2 메모리 액세스 요청이라는 것을 나타내고, 데이터는 데이터 버퍼로부터 판독되고 프로세서로 리턴된다.
전술한 구현 방식에서, 프로세서는 2개의 메모리 액세스 요청을 생성하고, 2개의 메모리 액세스 요청을 확장 메모리 제어기로 송신하여, 확장 메모리 제어기가 2개의 메모리 액세스 요청에 따라 확장 메모리에서 액세스될 데이터를 판독하게 한다. 이것은 프로세서에 의해 확장 메모리에서 액세스될 데이터에 액세스하는 것에 대한 지연이 메모리 액세스 프로토콜 요건을 충족시킬 수 없다는 문제를 해결한다.
본 발명의 디바이스 실시예
본 발명은 또한 확장 메모리 제어기의 디바이스 실시예를 추가로 제공한다. 도 10을 참조하면, 확장 메모리 제어기는 컴퓨터 내의 프로세서에 의해 확장 메모리에서 액세스될 데이터에 액세스하도록 적용된다. 확장 메모리 제어기는 메모리 버스를 사용함으로써 컴퓨터에 접속된다. 확장 메모리 제어기는,
컴퓨터 내의 프로세서 시스템에 의해 순차적으로 송신된 N+1개의 메모리 액세스 요청을 수신하도록 구성되는 수신 모듈(1010) - 메모리 액세스 요청들 모두에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 물리 주소는 확장 메모리에서 액세스될 데이터의 저장 주소이고, N≥1이고, N은 정수임 - ;
N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청이 수신될 때 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 물리 주소를 결정하고 - 물리 주소는 확장 메모리에서 액세스될 데이터의 저장 주소임 - , 액세스될 데이터를 획득하기 위한 판독 요청을 확장 메모리로 송신하고, 구체적인 응답 메시지를 생성하고 - 판독 요청은 물리 주소를 포함함 - ; 확장 메모리에 의해 리턴된 액세스될 데이터가 수신되기 전에, N+1개의 메모리 액세스 요청 중의 메모리 액세스 요청이 수신될 때마다, 메모리 버스 프로토콜에 명시된 액세스 지연 내에 구체적인 응답 메시지를 생성하고; 확장 메모리에 의해 리턴된 액세스될 데이터가 수신된 후에 액세스될 데이터를 데이터 버퍼(1040)로 기입하고, 구체적인 응답 메시지를 프로세서 시스템으로 리턴하는 것을 정지하고; 액세스될 데이터가 데이터 버퍼(1040)로 기입된 후에, N+1개의 메모리 액세스 요청 중의 메모리 액세스 요청이 수신될 때, 데이터 버퍼(1040)로부터 액세스될 데이터를 판독하고, 액세스될 데이터를 송신 모듈로 송신하도록 구성되는 실행 모듈(1020); 및
판독 요청을 확장 메모리로 송신하고, 구체적인 응답 메시지를 프로세서 시스템으로 리턴하고; 확장 메모리에 의해 리턴된 액세스될 데이터가 수신되기 전에, N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청 후에 또 다른 메모리 액세스 요청이 수신될 때마다, 구체적인 응답 메시지를 메모리 버스 프로토콜에 명시된 액세스 지연 내에 프로세서 시스템으로 리턴하고; 실행 모듈(1020)로부터 액세스될 데이터를 수신하고, 액세스될 데이터를 프로세서 시스템으로 송신하도록 구성되는 송신 모듈(1030)
을 포함한다.
또한, N+1개의 메모리 액세스 요청들 모두에서의 액세스 주소들은 동일한 뱅크 주소 및 상이한 행 주소를 포함한다.
또한, 실행 모듈(1020)은, N+1개의 메모리 액세스 요청들 모두에 포함된 액세스 주소들과 확장 메모리에서 액세스될 데이터의 물리 주소 사이의 매핑 관계를 미리 설정하고; 확장 메모리에서 액세스될 데이터의 물리 주소를 획득하기 위해, 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라, 제1 메모리 액세스 요청에 포함된 주소와 확장 메모리에서 액세스될 데이터의 물리 주소 사이의 매핑 관계를 질의하도록 추가로 구성된다.
또한, 실행 모듈(1020)은, 물리 주소가 제1 메모리 액세스 요청에서 반송된 액세스 주소에 따라 결정된 후, 데이터 버퍼 내에 레코드를 생성하고 - 레코드는 태그 필드 및 데이터 필드를 포함함 - , 태그 필드를 물리 주소로 설정하도록 추가로 구성된다.
또한, 레코드는 유효성 필드를 추가로 포함하고, 실행 모듈(1020)은 레코드 내의 유효성 필드를 무효로 설정하도록 추가로 구성된다.
또한, 실행 모듈(1020)은, N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청 후에 또 다른 메모리 액세스 요청이 수신될 때마다, 물리 주소를 획득하기 위해, 메모리 액세스 요청들 모두에서 반송된 액세스 주소들에 따라 매핑 관계를 질의하고; 물리 주소에 따라 데이터 버퍼(1040) 내의 레코드를 질의하고, 레코드 내의 유효성 필드가 무효라고 결정될 때 구체적인 응답 메시지를 생성하도록 추가로 구성된다.
또한, 실행 모듈(1020)은, 물리 주소에 대응하는 레코드에 대해 데이터 버퍼(1040)를 검색하고, 레코드 내의 데이터 필드를 액세스될 데이터로 설정하고, 유효성 필드를 유효로 설정하도록 추가로 구성된다.
또한, 확장 메모리 제어기의 전술한 실시예에서, 데이터 버퍼(1040)는 확장 메모리 제어기에 통합된다는 점에 유의해야 한다. 이것은 단지 구현 방식이다. 본 기술 분야의 통상의 기술자는 데이터 버퍼(1040)가 확장 메모리 제어기에 독립적으로 추가로 구현될 수 있다는 것을 이해할 수있다.
본 발명은 또한 확장 메모리를 포함하는 컴퓨터 시스템을 추가로 제공한다. 도 2에 도시된 바와 같이, 컴퓨터 시스템은 프로세서 시스템(201), 시스템 메모리(202), 확장 메모리 제어기의 디바이스 실시예에서 설명된 바와 같은 확장 메모리 제어기(203), 및 확장 메모리(204)를 포함한다. 확장 메모리 제어기(203)는 확장 메모리(204)에 접속되고, 확장 메모리 제어기(203)는 메모리 인터페이스를 사용함으로써 프로세서(201)에 접속된다. 프로세서 시스템(201)은 시스템 메모리(202)에 접속되고, 시스템 메모리(202)는 실행 명령어를 저장하기 위한 프로그램을 저장하도록 구성된다. 프로세서 시스템(201)은 시스템 메모리(202)에 저장된 실행 명령어를 실행하도록 구성되어, 컴퓨터에 의해 확장 메모리에 액세스하는 방법 실시예에 도시된 컴퓨터에 의해 확장 메모리 시스템 내의 확장 메모리에 액세스하기 위한 방법을 프로세서 시스템(201)이 수행하게 한다.
본 기술 분야의 통상의 기술자는 본 발명에 개시된 실시예들에서 설명된 예들과 조합하여, 유닛들 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합에 의해 구현될 수 있다는 것을 인식할 수 있다. 하드웨어와 소프트웨어 사이의 상호교환가능성을 명확하게 설명하기 위해, 앞에서는 일반적으로 기능들에 따라 각각의 예의 구성들과 단계들을 설명하였다. 기능들이 하드웨어에 의해 수행되는지 아니면 소프트웨어에 의해 수행되는지는 기술적 솔루션들의 특정한 애플리케이션들 및 설계 제약 조건들에 의존한다. 본 기술 분야의 통상의 기술자는 각각의 특정한 애플리케이션을 위해 설명된 기능들을 구현하기 위해 상이한 방법을 사용할 수 있지만, 구현이 본 발명의 범위를 벗어나는 것으로 간주되어서는 안 된다.
편리하고 간단한 설명을 목적으로, 전술한 시스템, 장치, 및 유닛의 상세한 작업 프로세스에 대해서는, 전술한 방법 실시예들에서의 대응하는 프로세스가 참조될 수 있음이 본 기술 분야의 통상의 기술자에 의해 명확하게 이해될 수 있고, 세부 사항들은 본 명세서에서 다시 설명되지 않는다.
본 출원에서 제공된 여러개의 실시예에서, 개시된 시스템, 장치, 및 방법이 다른 방식들로 구현될 수 있다는 것이 이해되어야 한다. 예를 들어, 설명된 장치 실시예는 단지 예이다. 예를 들어, 유닛 분할은 단지 논리적 기능 분할이고, 실제 구현에서는 다른 분할일 수 있다. 예를 들어, 복수의 유닛 또는 컴포넌트가 또 다른 시스템으로 조합 또는 통합될 수 있거나, 또는 일부 피처가 무시되거나 수행되지 않을 수 있다. 게다가, 디스플레이된 또는 논의된 상호 결합들 또는 직접적 결합들 또는 통신 접속들은 일부 인터페이스를 사용함으로써 구현될 수 있다. 장치들 또는 유닛들 사이의 간접적 결합들 또는 통신 접속들은 전자적, 기계적, 또는 다른 형태들로 구현될 수 있다.
별개의 부분들로서 설명된 유닛들은 물리적으로 별개일 수 있거나 아닐 수 있고, 유닛들로서 디스플레이된 부분들은 물리적 유닛들일 수 있거나 아닐 수 있고, 하나의 위치에 위치될 수 있거나, 복수의 네트워크 유닛 상에 분산될 수 있다. 유닛들의 부분 또는 전부는 본 발명의 실시예들의 솔루션들의 목적들을 달성하기 위해 실제적 필요들에 따라 선택될 수 있다.
게다가, 본 발명의 실시예들에서의 기능적 유닛들은 하나의 처리 유닛에 통합될 수 있거나, 또는 유닛들 각각이 물리적으로 단독으로 존재할 수 있거나, 또는 2개 이상의 유닛이 하나의 유닛에 통합된다. 통합된 유닛은 하드웨어의 형태로 구현될 수 있거나, 또는 소프트웨어 기능 유닛의 형태로 구현될 수 있다.
통합된 유닛이 소프트웨어 기능 유닛의 형태로 구현되고 독립적인 제품으로서 판매 또는 사용될 때, 통합된 유닛은 컴퓨터-판독가능 저장 매체에 저장될 수 있다. 이러한 이해에 기초하여, 본질적으로 본 발명의 기술적 솔루션들, 또는 종래 기술에 기여하는 부분 또는 기술적 솔루션들의 전부 또는 부분은 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 저장 매체에 저장되고, 컴퓨터 디바이스(이는 퍼스널 컴퓨터, 서버, 또는 네트워크 디바이스일 수 있음)에 본 발명의 실시예들에서 설명된 방법들의 단계들의 전부 또는 부분을 수행하라고 지시하기 위한 여러개의 명령어를 포함한다. 전술한 저장 매체는, USB 플래시 드라이브, 제거가능 하드 디스크, 판독-전용 메모리(ROM, Read-Only Memory), 랜덤 액세스 메모리 (RAM, Random Access Memory), 자기 디스크, 또는 광 디스크와 같은 프로그램 코드를 저장할 수 있는 임의의 매체를 포함한다.
전술한 설명들은 단지 본 발명의 구체적인 실시예들이고, 본 발명의 보호 범위를 제한하는 것을 의도하지 않는다. 본 발명에 개시된 기술적 범위 내에서 본 기술 분야의 통상의 기술자가 쉽게 알아낼 수 있는 임의의 수정 또는 대체는 본 발명의 보호 범위 내에 포함되어야 한다. 그러므로, 본 발명의 보호 범위는 청구범위의 보호 범위에 종속되어야 한다.

Claims (20)

  1. 확장 메모리에 액세스하기 위한 방법으로서,
    컴퓨터는 메모리 버스를 사용하여 확장 메모리 시스템에 접속되고, 상기 확장 메모리 시스템은 확장 메모리 제어기 및 상기 확장 메모리를 포함하고, 상기 컴퓨터가 상기 확장 메모리에 저장된 액세스될 데이터(to-be-accessed data)에 액세스할 필요가 있을 때, 상기 방법은,
    상기 확장 메모리 제어기에 의해, 상기 컴퓨터 내의 프로세서 시스템에 의해 순차적으로(serially) 송신된 N+1개의 메모리 액세스 요청을 수신하는 단계 - 상기 메모리 액세스 요청들 모두에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 상기 물리 주소는 상기 확장 메모리에서 액세스될 데이터의 저장 주소이고, N≥1이고, N은 정수임 - ;
    상기 N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청을 수신할 때 상기 확장 메모리 제어기에 의해, 상기 제1 메모리 액세스 요청에서 반송된 상기 액세스 주소에 따라 상기 물리 주소를 결정하고, 상기 액세스될 데이터를 획득하기 위한 판독 요청을 상기 확장 메모리로 송신하고, 구체적인 응답 메시지를 상기 프로세서 시스템으로 리턴하는 단계 - 상기 판독 요청은 상기 물리 주소를 포함함 - ;
    상기 확장 메모리에 의해 리턴된 상기 액세스될 데이터를 수신하기 전에, 상기 N+1개의 메모리 액세스 요청 중 상기 제1 메모리 액세스 요청 후에 또 다른 메모리 액세스 요청이 수신될 때마다, 상기 확장 메모리 제어기에 의해, 구체적인 응답 메시지를 메모리 버스 프로토콜에 명시된 액세스 지연 내에 상기 프로세서 시스템으로 리턴하는 단계;
    상기 확장 메모리에 의해 리턴된 상기 액세스될 데이터를 수신한 후에 상기 확장 메모리 제어기에 의해, 상기 액세스될 데이터를 데이터 버퍼로 기입하고, 구체적인 응답 메시지를 상기 프로세서 시스템으로 리턴하는 것을 정지하는 단계; 및
    상기 N+1개의 메모리 액세스 요청 중 또 다른 메모리 액세스 요청을 수신할 때 상기 확장 메모리 제어기에 의해, 상기 데이터 버퍼로부터 상기 액세스될 데이터를 판독하고, 상기 액세스될 데이터를 상기 프로세서 시스템으로 리턴하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 N+1개의 메모리 액세스 요청들 모두에서의 상기 액세스 주소들은 동일한 뱅크 주소 및 상이한 행 주소를 포함하는 방법.
  3. 제1항 또는 제2항에 있어서, 상기 방법은,
    상기 확장 메모리 제어기에 의해, 상기 N+1개의 메모리 액세스 요청들 모두에 포함된 상기 액세스 주소들과 상기 확장 메모리에서 액세스될 데이터의 상기 물리 주소 사이의 매핑 관계를 미리 설정하는 단계를 추가로 포함하고;
    상기 확장 메모리 제어기에 의해, 상기 제1 메모리 액세스 요청에서 반송된 상기 액세스 주소에 따라 상기 물리 주소를 결정하는 것은,
    상기 물리 주소를 획득하기 위해, 상기 확장 메모리 제어기에 의해, 상기 제1 메모리 액세스 요청에서 반송된 상기 액세스 주소에 따라 상기 매핑 관계를 질의하는 것을 포함하는 방법.
  4. 제3항에 있어서, 상기 확장 메모리 제어기에 의해, 상기 제1 메모리 액세스 요청에서 반송된 상기 액세스 주소에 따라 상기 물리 주소를 결정한 후에, 상기 방법은,
    상기 확장 메모리 제어기에 의해, 상기 데이터 버퍼 내에 레코드를 생성하고 - 상기 레코드는 태그 필드 및 데이터 필드를 포함함 - , 상기 태그 필드를 상기 물리 주소로 설정하는 단계를 추가로 포함하는 방법.
  5. 제4항에 있어서, 상기 레코드는 유효성 필드를 추가로 포함하고, 상기 방법은,
    상기 확장 메모리 제어기에 의해, 상기 유효성 필드를 무효로 설정하는 단계
    를 추가로 포함하는 방법.
  6. 제5항에 있어서, 상기 N+1개의 메모리 액세스 요청 중 상기 제1 메모리 액세스 요청 후에 메모리 액세스 요청이 수신될 때마다, 상기 방법은,
    상기 물리 주소를 획득하기 위해, 상기 확장 메모리 제어기에 의해, 상기 메모리 액세스 요청들 모두에서 반송된 상기 액세스 주소들에 따라 상기 매핑 관계를 질의하는 단계; 및
    상기 물리 주소에 따라 상기 데이터 버퍼 내의 상기 레코드를 질의하고, 상기 레코드 내의 상기 유효성 필드가 무효라고 결정할 때, 상기 구체적인 응답 메시지를 생성하는 단계를 추가로 포함하는 방법.
  7. 제5항에 있어서, 상기 확장 메모리에 의해 리턴된 상기 액세스될 데이터를 수신한 후에 상기 확장 메모리 제어기에 의해, 상기 액세스될 데이터를 데이터 버퍼로 기입하는 것은,
    상기 확장 메모리 제어기에 의해, 상기 물리 주소에 대응하는 상기 레코드에 대해 상기 데이터 버퍼를 검색하고, 상기 레코드 내의 상기 데이터 필드를 상기 액세스될 데이터로 설정하고, 상기 유효성 필드를 유효로 설정하는 것을 포함하는 방법.
  8. 확장 메모리에 액세스하기 위한 방법으로서,
    컴퓨터는 메모리 버스를 사용하여 확장 메모리 시스템에 접속되고, 상기 확장 메모리 시스템은 확장 메모리 제어기 및 상기 확장 메모리를 포함하고, 상기 컴퓨터가 상기 확장 메모리에 저장된 액세스될 데이터에 액세스할 필요가 있을 때, 상기 방법은,
    상기 컴퓨터 내의 프로세서 시스템에 의해, 상기 액세스될 데이터의 저장 주소를 수신하는 단계;
    상기 프로세서 시스템에 의해, 상기 액세스될 데이터의 상기 저장 주소에 따라 N+1개의 메모리 액세스 요청을 생성하는 단계 - 상기 N+1개의 메모리 액세스 요청에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 상기 물리 주소는 상기 확장 메모리에서 액세스될 데이터의 상기 저장 주소이고, N≥1이고, N은 정수임 - ; 및
    상기 프로세서 시스템에 의해, 상기 N+1개의 메모리 액세스 요청을 상기 확장 메모리 제어기로 송신하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서, 상기 프로세서 시스템에 의해, 상기 액세스될 데이터의 상기 저장 주소에 따라 N+1개의 메모리 액세스 요청을 생성하는 상기 단계 전에, 상기 방법은,
    상기 컴퓨터에 의해 상기 확장 메모리로부터 데이터를 획득하기 위한 지연 파라미터에 따라 값 N을 결정하는 단계
    를 추가로 포함하며, 상기 컴퓨터에 의해 상기 확장 메모리로부터 데이터를 획득하기 위한 상기 지연 파라미터는 다음 파라미터들: 상기 확장 메모리 제어기로부터의 상기 메모리 액세스 요청을 상기 확장 메모리로 전송하는 것에 대한 지연(tPD1), 상기 메모리 액세스 요청에 의해 판독되는 상기 확장 메모리로부터의 데이터를 상기 확장 메모리 제어기로 전송하는 것에 대한 지연(tPD2), 또는 상기 프로세서 시스템에 의해 송신된 2개의 연속적 메모리 액세스 요청 사이의 시간 간격(T_Interval) 중 어느 하나 또는 임의의 조합을 포함하는 처리 방법.
  10. 제9항에 있어서, 상기 컴퓨터에 의해 상기 확장 메모리로부터 데이터를 획득하기 위한 지연 파라미터에 따라 값 N을 결정하는 상기 단계는,
    N≥[(tPD1+tPD2)/T_Interval]이고, [*]은 반올림 함수인 상기 값 N을 결정하는 것을 포함하는 처리 방법.
  11. 제9항 또는 제10항에 있어서, 2개의 연속적 메모리 액세스 요청 사이의 상기 시간 간격 T_Interval은 tGAPmin=tRCD+tRTP+tRP 또는 T_Fence인 처리 방법.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서, 상기 프로세서 시스템에 의해, 상기 액세스될 데이터의 상기 저장 주소에 따라 N+1개의 메모리 액세스 요청을 생성하는 상기 단계는,
    가상 주소(Addr_Virtual)에 대응하는 물리 주소(Addr_Physical)를 획득하기 위해, 상기 액세스될 데이터의 상기 저장 주소(Addr_Virtual)에 따라 가상-대-물리 주소 변환을 수행하는 것 - 상기 액세스될 데이터의 상기 저장 주소는 상기 가상 주소임 - ;
    상기 물리 주소(Addr_Physical)에 따라 N개의 액세스 주소(Addr_Physical(n))를 생성하는 것 - n은 정수이고 1≤n≤N이고, 상기 N개의 액세스 주소의 행 주소들은 Addr_Physical_Row(n)=n*M+Addr_Physical_Row이며, n은 정수이고 1≤n≤N이고, M은 상기 확장 메모리에 포함된 메모리 행들의 수량이고, Addr_Physical_Row는 상기 물리 주소(Addr_Physical)의 행 주소이고; 상기 N개의 물리 주소 각각의 상기 행 주소 이외의 주소는 상기 물리 주소(Addr_Physical)의 상기 행 주소 이외의 주소와 동일한 것임 - ; 및
    상기 프로세서 시스템에 의해, Addr_Physical 및 Addr_Physical(n) - n은 정수이고 1≤n≤N임 - 에 따라 상기 N+1개의 메모리 액세스 요청을 생성하는 것을 포함하는 처리 방법.
  13. 컴퓨터 내의 프로세서 시스템에 의해 확장 메모리에서 액세스될 데이터에 액세스하도록 적용된, 확장 메모리 제어기로서,
    상기 컴퓨터 내의 상기 프로세서 시스템은 메모리 버스를 사용하여 확장 메모리 시스템에 접속되고, 상기 확장 메모리 시스템은 상기 확장 메모리 제어기 및 상기 확장 메모리를 포함하고, 상기 확장 메모리 제어기는,
    수신 모듈;
    실행 모듈; 및
    송신 모듈
    을 포함하며,
    상기 수신 모듈은, 상기 컴퓨터 내의 상기 프로세서 시스템에 의해 순차적으로 송신된 N+1개의 메모리 액세스 요청을 수신하도록 구성되며, 상기 메모리 액세스 요청들 모두에 포함된 액세스 주소들은 서로 상이하고 동일한 물리 주소를 가리키고, 상기 물리 주소는 상기 확장 메모리에서 액세스될 데이터의 저장 주소이고, N≥1이고, N은 정수이고 ;
    상기 실행 모듈은, 상기 N+1개의 메모리 액세스 요청 중 제1 메모리 액세스 요청이 수신될 때 상기 제1 메모리 액세스 요청에서 반송된 상기 액세스 주소에 따라 상기 물리 주소를 결정하고 - 상기 물리 주소는 상기 확장 메모리에서 액세스될 데이터의 상기 저장 주소임 - , 상기 액세스될 데이터를 획득하기 위한 판독 요청을 생성하고, 구체적인 응답 메시지를 생성하고 - 상기 판독 요청은 상기 물리 주소를 포함함 - ;
    상기 확장 메모리에 의해 리턴된 상기 액세스될 데이터가 수신되기 전에, 상기 N+1개의 메모리 액세스 요청 중의 메모리 액세스 요청이 수신될 때마다, 메모리 버스 프로토콜에 명시된 액세스 지연 내에 구체적인 응답 메시지를 생성하고;
    상기 확장 메모리에 의해 리턴된 상기 액세스될 데이터가 수신된 후에 상기 액세스될 데이터를 데이터 버퍼로 기입하고; 구체적인 응답 메시지를 상기 프로세서 시스템으로 리턴하는 것을 정지하고;
    상기 N+1개의 메모리 액세스 요청 중 또 다른 메모리 액세스 요청이 수신될 때 상기 데이터 버퍼로부터 상기 액세스될 데이터를 판독하고, 상기 액세스될 데이터를 상기 송신 모듈로 송신하도록 구성되고;
    상기 송신 모듈은, 상기 판독 요청을 상기 확장 메모리로 송신하고, 상기 구체적인 응답 메시지를 상기 프로세서 시스템으로 리턴하고;
    상기 확장 메모리에 의해 리턴된 상기 액세스될 데이터가 수신되기 전에, 상기 N+1개의 메모리 액세스 요청 중 상기 제1 메모리 액세스 요청 후에 또 다른 메모리 액세스 요청이 수신될 때마다, 상기 구체적인 응답 메시지를 상기 메모리 버스 프로토콜에 명시된 상기 액세스 지연 내에 상기 프로세서 시스템으로 리턴하고;
    상기 실행 모듈로부터 상기 액세스될 데이터를 수신하고, 상기 액세스될 데이터를 상기 프로세서 시스템으로 송신하도록 구성되는 확장 메모리 제어기.
  14. 제13항에 있어서, 상기 N+1개의 메모리 액세스 요청들 모두에서의 상기 액세스 주소들은 동일한 뱅크 주소 및 상이한 행 주소를 포함하는 확장 메모리 제어기.
  15. 제13항 또는 제14항에 있어서, 상기 실행 모듈은,
    상기 N+1개의 메모리 액세스 요청들 모두에 포함된 상기 액세스 주소들과 상기 확장 메모리에서 액세스될 데이터의 상기 물리 주소 사이의 매핑 관계를 미리 설정하고;
    상기 확장 메모리에서 액세스될 데이터의 상기 물리 주소를 획득하기 위해, 상기 제1 메모리 액세스 요청에서 반송된 상기 액세스 주소에 따라, 상기 제1 메모리 액세스 요청에 포함된 상기 주소와 상기 확장 메모리에서 액세스될 데이터의 상기 물리 주소 사이의 상기 매핑 관계를 질의하도록 추가로 구성되는 확장 메모리 제어기.
  16. 제15항에 있어서, 상기 실행 모듈은,
    상기 물리 주소가 상기 제1 메모리 액세스 요청에서 반송된 상기 액세스 주소에 따라 결정된 후에 상기 데이터 버퍼 내에 레코드를 생성하고 - 상기 레코드는 태그 필드 및 데이터 필드를 포함함 - , 상기 태그 필드를 상기 물리 주소로 설정하도록 추가로 구성되는 확장 메모리 제어기.
  17. 제16항에 있어서, 상기 레코드는 유효성 필드를 추가로 포함하고;
    상기 실행 모듈은 상기 레코드 내의 상기 유효성 필드를 무효로 설정하도록 추가로 구성되는 확장 메모리 제어기.
  18. 제17항에 있어서, 상기 실행 모듈은,
    상기 N+1개의 메모리 액세스 요청 중 상기 제1 메모리 액세스 요청 후에 또 다른 메모리 액세스 요청이 수신될 때마다, 상기 물리 주소를 획득하기 위해, 상기 메모리 액세스 요청들 모두에서 반송된 상기 액세스 주소들에 따라 상기 매핑 관계를 질의하고;
    상기 물리 주소에 따라 상기 데이터 버퍼 내의 상기 레코드를 질의하고;
    상기 레코드 내의 상기 유효성 필드가 무효라고 결정될 때 상기 구체적인 응답 메시지를 생성하도록 추가로 구성되는 확장 메모리 제어기.
  19. 제17항에 있어서,
    상기 실행 모듈은, 상기 확장 메모리에 의해 리턴된 상기 액세스될 데이터가 수신된 후에 상기 물리 주소에 대응하는 상기 레코드에 대해 상기 데이터 버퍼를 검색하고, 상기 레코드 내의 상기 데이터 필드를 상기 액세스될 데이터로 설정하고, 상기 유효성 필드를 유효로 설정하도록 추가로 구성되는 확장 메모리 제어기.
  20. 확장 메모리를 포함하는 컴퓨터 시스템으로서,
    상기 컴퓨터 시스템은 프로세서 시스템, 메인 메모리, 제13항 내지 제19항 중 어느 한 항에 따른 상기 확장 메모리 제어기, 및 상기 확장 메모리를 포함하고; 상기 확장 메모리 제어기는 상기 확장 메모리에 접속되고, 상기 확장 메모리 제어기는 메모리 인터페이스를 사용하여 상기 프로세서 시스템에 접속되고, 상기 프로세서 시스템은 상기 메인 메모리에 접속되고; 상기 메인 메모리는 프로그램을 저장하고 실행 명령어를 저장하도록 구성되고; 상기 프로세서 시스템은 상기 메인 메모리에 저장된 상기 실행 명령어를 실행하도록 구성되어, 상기 프로세서 시스템이 제8항 내지 제12항 중 어느 한 항에 따른 상기 컴퓨터에 의해 상기 확장 메모리 시스템 내의 상기 확장 메모리에 액세스하기 위한 상기 방법을 수행하게 하는 컴퓨터 시스템.
KR1020177032218A 2015-04-23 2016-02-03 확장 메모리에 대한 액세스 방법, 디바이스 및 시스템 KR102168017B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510198452.X 2015-04-23
CN201510198452.XA CN106155577B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及系统
PCT/CN2016/073304 WO2016169318A1 (zh) 2015-04-23 2016-02-03 扩展内存的访问方法、设备以及系统

Publications (2)

Publication Number Publication Date
KR20170134704A true KR20170134704A (ko) 2017-12-06
KR102168017B1 KR102168017B1 (ko) 2020-10-20

Family

ID=57142912

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177032218A KR102168017B1 (ko) 2015-04-23 2016-02-03 확장 메모리에 대한 액세스 방법, 디바이스 및 시스템

Country Status (9)

Country Link
US (2) US10545672B2 (ko)
EP (2) EP3674877B1 (ko)
JP (1) JP6685323B2 (ko)
KR (1) KR102168017B1 (ko)
CN (2) CN110059020B (ko)
BR (1) BR112017022547B1 (ko)
CA (1) CA2983479C (ko)
SG (1) SG11201708477UA (ko)
WO (1) WO2016169318A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200070349A (ko) * 2018-07-17 2020-06-17 후아웨이 테크놀러지 컴퍼니 리미티드 I/o 요청 처리 방법 및 기기

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及系统
CN108228076B (zh) 2016-12-14 2020-10-16 华为技术有限公司 访问磁盘的方法和主机
US10733100B2 (en) * 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and apparatus for classifying and buffering write commands
CN107590099B (zh) * 2017-08-31 2021-04-20 深圳市共济科技股份有限公司 一种多主机访问从机的方法、扩展装置及存储介质
CN109783395B (zh) * 2017-11-15 2023-03-31 阿里巴巴集团控股有限公司 内存访问方法、交换芯片、内存模组及电子设备
US10909046B2 (en) 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination
CN109308190B (zh) * 2018-07-09 2023-03-14 北京中科睿芯科技集团有限公司 基于3d堆栈内存架构的共享行缓冲系统及共享行缓冲器
CN109284231B (zh) * 2018-07-24 2023-05-23 江苏微锐超算科技有限公司 内存访问请求的处理方法、装置及内存控制器
CN109189700A (zh) * 2018-10-19 2019-01-11 郑州云海信息技术有限公司 一种扩展内存装置、扩展内存系统、扩展内存的访存方法
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
CN111405603B (zh) * 2019-01-02 2023-05-09 中国移动通信有限公司研究院 一种时延获取方法、测试装置以及计算机存储介质
CN112306918B (zh) * 2019-07-31 2024-06-14 北京百度网讯科技有限公司 数据访问方法、装置、电子设备和计算机存储介质
CN113377704B (zh) * 2021-06-11 2022-04-12 上海壁仞智能科技有限公司 人工智能芯片以及数据操作方法
EP4365748A1 (en) * 2021-07-23 2024-05-08 Huawei Technologies Co., Ltd. Data access method and related device
US11600312B1 (en) * 2021-08-16 2023-03-07 Micron Technology, Inc. Activate commands for memory preparation
CN113704143A (zh) * 2021-08-27 2021-11-26 湖南国科微电子股份有限公司 数据读取方法、装置及计算机设备
CN114721726B (zh) * 2022-06-10 2022-08-12 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备
CN115757196B (zh) * 2022-11-09 2023-09-01 超聚变数字技术有限公司 内存、访问内存方法及计算设备
CN115686153B (zh) * 2022-12-29 2023-03-31 浪潮电子信息产业股份有限公司 一种内存模组及一种电子设备
CN115827504B (zh) * 2023-01-31 2023-07-11 南京砺算科技有限公司 多核心图形处理器的数据存取方法、图形处理器及介质
CN117851291B (zh) * 2024-03-07 2024-06-21 北京象帝先计算技术有限公司 内存访问系统、电子组件及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234461A (ja) * 2003-01-31 2004-08-19 Sony Corp 情報処理装置および方法、並びにプログラム
WO2009125572A1 (ja) * 2008-04-08 2009-10-15 パナソニック株式会社 メモリ制御回路及びメモリ制御方法
JP2011118501A (ja) * 2009-12-01 2011-06-16 Yokogawa Electric Corp データ転送システム
JP2013069210A (ja) * 2011-09-26 2013-04-18 Toshiba Corp メモリシステム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5042003A (en) * 1988-07-06 1991-08-20 Zenith Data Systems Corporation Memory usage system
JP2513024B2 (ja) * 1989-03-16 1996-07-03 日本電気株式会社 拡張記憶アドレス制御方式
JPH05143438A (ja) * 1991-11-19 1993-06-11 Nec Software Kansai Ltd 拡張メモリ管理方式
JP2002063069A (ja) * 2000-08-21 2002-02-28 Hitachi Ltd メモリ制御装置、データ処理システム及び半導体装置
JP2003186740A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd メモリ制御装置、及びメモリ制御方法
JP3513147B2 (ja) * 2002-05-29 2004-03-31 株式会社ハギワラシスコム Usbストレージデバイス及びその制御装置
KR100420444B1 (ko) * 2003-06-03 2004-02-26 주식회사 넥스트웨이 외장형 저장장치
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
CN100444133C (zh) * 2006-06-13 2008-12-17 深圳市研祥智能科技股份有限公司 计算机访问扩充内存的方法
KR20090065504A (ko) * 2006-12-25 2009-06-22 파나소닉 주식회사 메모리 제어 장치, 메모리 장치 및 메모리 제어 방법
JP2010250727A (ja) * 2009-04-20 2010-11-04 Panasonic Corp メモリ制御回路
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9281036B2 (en) * 2013-01-08 2016-03-08 Qualcomm Incorporated Memory device having an adaptable number of open rows
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
CN104346293B (zh) * 2013-07-25 2017-10-24 华为技术有限公司 混合内存的数据访问方法、模块、处理器及终端设备
CN104375946B (zh) * 2013-08-16 2018-04-20 华为技术有限公司 一种数据处理的方法及装置
CN103488436B (zh) 2013-09-25 2017-04-26 华为技术有限公司 内存扩展系统及方法
CN104388436B (zh) 2014-10-29 2016-08-24 中南民族大学 一种水稻诱导抗病基因OsAAA1及其应用
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234461A (ja) * 2003-01-31 2004-08-19 Sony Corp 情報処理装置および方法、並びにプログラム
WO2009125572A1 (ja) * 2008-04-08 2009-10-15 パナソニック株式会社 メモリ制御回路及びメモリ制御方法
JP2011118501A (ja) * 2009-12-01 2011-06-16 Yokogawa Electric Corp データ転送システム
JP2013069210A (ja) * 2011-09-26 2013-04-18 Toshiba Corp メモリシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200070349A (ko) * 2018-07-17 2020-06-17 후아웨이 테크놀러지 컴퍼니 리미티드 I/o 요청 처리 방법 및 기기
US11249663B2 (en) 2018-07-17 2022-02-15 Huawei Technologies Co., Ltd. I/O request processing method and device

Also Published As

Publication number Publication date
US10545672B2 (en) 2020-01-28
JP2018517205A (ja) 2018-06-28
CN110059020A (zh) 2019-07-26
BR112017022547A2 (pt) 2018-10-16
US20180039424A1 (en) 2018-02-08
CN106155577A (zh) 2016-11-23
BR112017022547B1 (pt) 2023-10-10
SG11201708477UA (en) 2017-11-29
EP3674877B1 (en) 2021-12-29
CN110059020B (zh) 2024-01-30
CA2983479C (en) 2020-12-22
EP3279788A1 (en) 2018-02-07
KR102168017B1 (ko) 2020-10-20
CA2983479A1 (en) 2016-10-27
CN106155577B (zh) 2019-03-26
EP3674877A1 (en) 2020-07-01
WO2016169318A1 (zh) 2016-10-27
JP6685323B2 (ja) 2020-04-22
US11237728B2 (en) 2022-02-01
EP3279788A4 (en) 2018-04-04
EP3279788B1 (en) 2019-08-21
US20200150872A1 (en) 2020-05-14

Similar Documents

Publication Publication Date Title
US11237728B2 (en) Method for accessing extended memory, device, and system
US11074961B2 (en) Method of performing internal processing operation of memory device
US10133675B2 (en) Data processing apparatus, and a method of handling address translation within a data processing apparatus
JP2018504694A (ja) 仮想アドレスを使用してアクセスされるキャッシュ
KR20180007374A (ko) 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
JP2011258189A (ja) プロセッサ・メインメモリのための持続性メモリ
US20220179792A1 (en) Memory management device
US20130054896A1 (en) System memory controller having a cache
JP2019531546A (ja) 高度dramメモリコントローラの内部キャッシュをバイパスするための方法および装置
WO2018028629A1 (en) Pattern based preload engine
US10977036B2 (en) Main memory control function with prefetch intelligence
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
US8661169B2 (en) Copying data to a cache using direct memory access
KR102144185B1 (ko) 상용 메모리 버스를 이용하는 프로세싱 인 메모리 장치
US20180285271A1 (en) Sparse superline removal

Legal Events

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