KR20220034939A - 메모리에서 추론 - Google Patents
메모리에서 추론 Download PDFInfo
- Publication number
- KR20220034939A KR20220034939A KR1020227007978A KR20227007978A KR20220034939A KR 20220034939 A KR20220034939 A KR 20220034939A KR 1020227007978 A KR1020227007978 A KR 1020227007978A KR 20227007978 A KR20227007978 A KR 20227007978A KR 20220034939 A KR20220034939 A KR 20220034939A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- access
- memory
- commands
- memory array
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1057—Data output buffers, e.g. comprising level conversion circuits, circuits for adapting load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/4076—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1084—Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 개시는, 예를 들어, 메모리 디바이스 또는 메모리 디바이스를 포함하는 컴퓨팅 시스템에서 추론을 수행하는 것에 관한 것이다. 추론은 함께 액세스되는 데이터를 식별하거나 더 자주 액세스될 데이터를 예측하는 데 사용될 수 있다. 식별된 데이터를 구성하여 데이터에 대한 액세스를 제공하는 효율성을 높일 수 있다.
Description
본 개시는 일반적으로 메모리에 관한 것으로, 보다 구체적으로 메모리에서 추론(speculation)을 수행하는 것과 관련된 장치 및 방법에 관한 것이다.
메모리 디바이스는 일반적으로 컴퓨터 또는 기타 전자 디바이스의 내부, 반도체, 집적 회로로 제공된다. 휘발성 메모리와 비휘발성 메모리를 포함한 다양한 유형의 메모리가 존재한다. 휘발성 메모리는 데이터를 유지하기 위해 전원이 필요할 수 있으며 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM) 등을 포함한다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지하여 영구 데이터를 제공할 수 있으며 NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거 가능 프로그래밍 가능 ROM(EEPROM), 소거 가능 프로그래밍 가능한 ROM(EPROM) 및 저항 가변 메모리, 예를 들어, 상변화 랜덤 액세스 메모리(PCRAM), 저항성 랜덤 액세스 메모리(RRAM) 및 자기저항 랜덤 액세스 메모리(MRAM) 등을 포함할 수 있다.
메모리는 또한 개인용 컴퓨터, 휴대용 메모리 스틱, 디지털 카메라, 휴대 전화, 휴대용 음악 플레이어, 예를 들어, MP3 플레이어, 영화 플레이어 및 기타 전자 디바이스를 포함하지만 이에 제한되지 않는 광범위한 전자 어플리케이션을 위한 휘발성 및 비휘발성 데이터 저장소로 활용된다. 메모리 셀들은 어레이로 배열될 수 있으며, 어레이는 메모리 디바이스에서 사용된다.
다양한 컴퓨팅 시스템은 명령어 세트(예를 들어, 프로그램, 어플리케이션 등)의 실행과 관련하여 액세스되는 메모리(예를 들어, 메모리 시스템)에 연결된 다수의 처리 리소스들을 포함하며, 처리 리소스는 명령어 세트의 실행을 최적화하기 위해 추론을 수행할 수 있다. 프로세서에 의해 수행되는 추론은 명령어 세트가 필요한지 여부가 결정되기 전에 명령어 세트를 수행하는 데 사용될 수 있다. 추론은 프로세서에 의한 명령어 세트의 실행을 간소화할 수 있다.
도 1은 본 개시내용의 다수의 실시예에 따른 메모리 디바이스를 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 2는 본 개시내용의 다수의 실시예에 따른 메모리 디바이스 형태의 장치의 블록도이다.
도 3은 본 개시내용의 다수의 실시예에 따른 메모리에서 추론을 수행하기 위한 방법의 예시적인 흐름도를 도시한다.
도 4는 머신이 본원에서 논의된 다양한 방법론을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템의 예시적인 머신을 도시한다.
도 2는 본 개시내용의 다수의 실시예에 따른 메모리 디바이스 형태의 장치의 블록도이다.
도 3은 본 개시내용의 다수의 실시예에 따른 메모리에서 추론을 수행하기 위한 방법의 예시적인 흐름도를 도시한다.
도 4는 머신이 본원에서 논의된 다양한 방법론을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템의 예시적인 머신을 도시한다.
본 개시는 메모리에서 추론을 수행하는 것과 관련된 장치 및 방법을 포함한다. 데이터의 전송은 명령어를 실행을 제한하는 요소일 수 있다. 예를 들어, 처리 디바이스와 메모리 디바이스 간의 데이터의 전송은 전송 중인 데이터에 대한 작업을 수행하는 처리 디바이스의 능력을 제한할 수 있다. 처리 디바이스와 메모리 디바이스 사이에서 데이터를 전송하는 데 사용되는 시간을 줄이기 위해 처리 디바이스는 추론을 수행할 수 있다.
처리 디바이스에 의해 수행되는 추론은 실행을 최적화하는 데 사용될 수 있다. 예를 들어, 처리 디바이스는 어떤 실행 경로가 활용될 것인지 알기 전에 다수의 다른 실행 경로들을 계산할 수 있다. 실행 경로들 중 어느 것이 활용되는지를 결정하는 것에 응답하여, 처리 디바이스는 실행 경로들의 일부를 폐기할 수 있고 활용된 실행 경로를 유지할 수 있다. 활용할 실행 경로를 식별하기 전에 다른 실행 경로들을 계산하면 처리 디바이스가 활용될 수 있는 반면 그렇지 않은 경우 처리 디바이스는 활용되지 않을 수 있다.
메모리 디바이스에 의해 사용되는 전력을 줄이고 메모리 디바이스로부터 데이터에 액세스하는 데 사용되는 시간을 줄이기 위해 메모리에서 추론이 수행될 수도 있다. 추론은 해당 데이터를 검색하는 데 사용되는 액세스 커맨드의 양을 줄이기 위해 구성될 수 있는 메모리 어레이의 데이터를 식별하기 위해 액세스 커맨드를 활용하여 메모리에서 수행될 수 있다. 데이터(예를 들어, 통계 데이터)는 메모리 디바이스에서 수신된 액세스 커맨드에 기초하여 생성될 수 있다. 데이터는 가장 많이 액세스되는 메모리 어레이의 어드레스, 데이터 액세스 패턴 및/또는 메모리 어레이로부터 액세스될 데이터의 예측을 정의할 수 있다.
본원에서 사용되는 바와 같이, 액세스 커맨드는 다수의 커맨드들을 포함할 수 있다. 액세스 커맨드는 메모리로부터 데이터를 액세스하는 것과 관련된 다른 가능한 커맨드들 중에서 프리 차지 커맨드, 활성화 커맨드, 판독 커맨드, 및/또는 기록 커맨드일 수 있다.
본원에 설명된 예는 액세스 커맨드의 맥락에서 제공되지만, 액세스 커맨드를 포함하는 상이한 유형의 커맨드를 이용하여 추론이 수행될 수 있다. 예를 들어, 데이터(예를 들어, 통계 데이터)는 파워 커맨드 및 액세스 커맨드로부터 수집될 수 있다.
데이터 액세스의 패턴은 메모리 어레이의 어드레스와 관련된 패턴을 포함할 수 있다. 예를 들어, 데이터 액세스의 패턴은 제1 어드레스 다음에 제2 어드레스가 액세스됨을 설명할 수 있다. 제1 어드레스를 수신하면 메모리 디바이스는 제2 어드레스가 다음에 액세스될 것이라고 추론할 수 있다. 메모리 디바이스는 다중 액세스 커맨드 대신 단일 액세스 커맨드를 사용하여 제1 어드레스 및 제2 어드레스가 액세스될 수 있도록 제1 어드레스 및 제2 어드레스를 구성할 수 있다. 데이터 검색에 사용되는 액세스 커맨드의 양을 줄임으로써 에너지가 절약되고 검색 시간이 감소한다.
본원에서 사용된 바와 같이, "다수의(a number of)"는 그러한 것들 중 하나 이상을 지칭할 수 있다. 예를 들어, 다수의 메모리 디바이스들은 하나 이상의 메모리 디바이스를 지칭할 수 있다. 어떤 것의 "복수의(plurality)"는 둘 또는 그 이상을 의미한다. 또한, 특히 도면의 참조 번호와 관련하여 본원에서 사용된 "N"과 같은 지정자는, 그렇게 지정된 다수의 특정 특징이 본 개시내용의 다수의 실시예에 포함될 수 있음을 나타낸다.
본원의 도면은 첫 번째 숫자 또는 숫자들이 도면 번호에 해당하고 나머지 숫자가 도면의 요소 또는 구성 요소를 식별하는 넘버링 규칙을 따른다. 다른 도면들 사이의 유사한 요소 또는 구성 요소는 유사한 숫자를 사용하여 식별될 수 있다. 이해되는 바와 같이, 본원의 다양한 실시예에 도시된 요소는 본 개시내용의 다수의 추가적인 실시예를 제공하기 위해 추가, 교환 및/또는 제거될 수 있다. 또한, 도면에 기재된 구성요소들의 비율 및 상대적인 축척은 본 발명의 다양한 실시 예를 설명하기 위한 것으로, 제한적인 의미로 사용되어서는 안 된다.
도 1은 본 개시내용의 다수의 실시예에 따른 메모리 디바이스(103)를 포함하는 컴퓨팅 시스템(100) 형태의 장치의 블록도이다. 본원에서 사용되는 바와 같이, 예를 들어, 메모리 디바이스(103), 메모리 어레이(110), 및/또는 호스트(102)는 또한 개별적으로 "장치"로 간주될 수 있다.
이 예에서, 시스템(100)은 인터페이스(104)를 통해 메모리 디바이스(103)에 연결된 호스트(102)를 포함한다. 컴퓨팅 시스템(100)은 다양한 다른 유형의 시스템들 중에서 개인용 랩톱 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 이동 전화, 메모리 카드 판독기, 또는 사물 인터넷(IoT) 가능 디바이스일 수 있다. 호스트(102)는 메모리(120)에 액세스할 수 있는 다수의 처리 리소스들(예를 들어, 하나 이상의 프로세서, 마이크로프로세서, 또는 일부 다른 유형의 제어 회로)를 포함할 수 있다. 시스템(100)은 개별 집적 회로를 포함할 수 있거나, 호스트(102)와 메모리 디바이스(103) 모두가 동일한 집적 회로 상에 있을 수 있다. 예를 들어, 호스트(102)는 다중 메모리 디바이스들(103)을 포함하는 메모리 시스템의 시스템 제어기일 수 있고, 시스템 제어기(102)는 중앙 처리 디바이스(CPU)와 같은 다른 처리 리소스에 의해 각각의 메모리 디바이스들(103)에 대한 액세스를 제공한다.
도 1에 도시된 예에서, 호스트(102)는 (예를 들어, 제어기(105)를 통해 메모리 디바이스(103)로부터) 로딩될 수 있는 운영 체제(OS) 및/또는 다양한 어플리케이션들(예를 들어, 프로세스들)을 실행할 책임이 있다. OS 및/또는 다양한 어플리케이션들은 OS 및/또는 다양한 애플리케이션을 포함하는 데이터에 액세스하기 위해 호스트(102)로부터 메모리 디바이스(103)에 액세스 커맨드를 제공함으로써 메모리 디바이스(103)로부터 로딩될 수 있다. 호스트(102)는 또한 OS 및/또는 다양한 애플리케이션의 실행에서 활용되는 데이터를 검색하기 위해 메모리 디바이스(103)에 액세스 커맨드를 제공함으로써 OS 및/또는 다양한 어플리케이션에 의해 활용되는 상기 데이터에 액세스할 수 있다.
명확성을 위해, 시스템(100)은 본 개시내용과 특히 관련된 특징에 초점을 맞추도록 단순화되었다. 메모리 어레이(110)는 예를 들어 DRAM 어레이, SRAM 어레이, STT RAM 어레이, PCRAM 어레이, TRAM 어레이, RRAM 어레이, NAND 플래시 어레이, 및/또는 NOR 플래시 어레이일 수 있다. 어레이(110)는 액세스 라인들(본원에서 워드 라인 또는 선택 라인으로 지칭될 수 있음)에 의해 연결된 로우(row)들 및 감지 라인들(본원에서 디지트 라인 또는 데이터 라인으로 지칭될 수 있음)에 의해 연결된 컬럼(column)들로 배열된 메모리 셀들을 포함할 수 있다. 단일 어레이(110)가 도 1에 도시되어 있지만, 실시예는 이에 제한되지 않는다. 예를 들어, 메모리 디바이스(103)는 다수의 어레이들(110)(예를 들어, 다수의 DRAM 셀들의 뱅크들)를 포함할 수 있다.
메모리 디바이스(103)는 인터페이스(104)를 통해 제공된 어드레스 신호를 래칭(latching)하기 위한 어드레스 회로(106)를 포함한다. 인터페이스는 예를 들어 적절한 프로토콜(예를 들어, 데이터 버스, 어드레스 버스 및 커맨드 버스, 또는 결합된 데이터/어드레스/커맨드 버스)을 사용하는 물리적 인터페이스를 포함할 수 있다. 이러한 프로토콜은 사용자 정의 또는 독점일 수 있거나 인터페이스(104)는 PCIe(Peripheral Component Interconnect Express), Gen-Z, CCIX 등과 같은 표준화된 프로토콜을 사용할 수 있다. 어드레스 신호는 메모리 어레이(110)에 액세스하기 위해 로우 디코더(108) 및 컬럼 디코더(112)에 의해 수신 및 디코딩된다. 감지 회로(111)를 사용하여 감지 라인 상의 전압 및/또는 전류 변화를 감지함으로써 메모리 어레이(110)로부터 데이터가 판독될 수 있다. 감지 회로(111)는 예를 들어 메모리 어레이(110)로부터 데이터의 페이지(예를 들어, 로우)를 판독하고 래칭할 수 있는 감지 증폭기를 포함할 수 있다. I/O 회로(107)는 인터페이스(104)를 통해 호스트(102)와 양방향 데이터 통신을 위해 사용될 수 있다. 판독/기록 회로(113)는 메모리 어레이(110)에 데이터를 기록하거나 메모리 어레이(110)로부터 데이터를 판독하는데 사용된다. 예로서, 판독/기록 회로(113)는 다양한 드라이버, 래치 회로 등을 포함할 수 있다.
제어 회로(105)는 호스트(102)에 의해 제공되는 신호를 디코딩한다. 신호는 호스트(102)에 의해 제공되는 커맨드일 수 있다. 이러한 신호는 데이터 판독 작업, 데이터 기록 작업 및 데이터 소거 작업을 포함하는 메모리 어레이(110)에서 수행되는 동작을 제어하는 데 사용되는 칩 인에이블 신호, 기록 인에이블 신호 및 어드레스 래치 신호를 포함할 수 있습니다. 다양한 실시예에서, 제어 회로(105)는 호스트(102)로부터의 명령어를 실행할 책임이 있다. 제어 회로(105)는 상태 머신, 시퀀서, 및/또는 일부 다른 유형의 제어 회로를 포함할 수 있고, 이는 하드웨어, 펌웨어, 소프트웨어 또는 이 세 가지의 조합 형태로 구현될 수 있다. 일부 예들에서, 호스트(102)는 메모리 디바이스(103) 외부의 제어기일 수 있다. 예를 들어, 호스트(102)는 컴퓨팅 디바이스의 처리 리소스에 연결된 메모리 제어기일 수 있다.
제어 회로(105)는 추론 유닛(109)에 연결될 수 있다. 추론 유닛(109)은 추론을 수행하도록 구성된 회로일 수 있다. 추론을 수행하는 것은 액세스될 데이터를 추론하는 데 사용되는 작업을 설명할 수 있다. 추론 유닛(109)은 버퍼(114)를 포함할 수 있다. 버퍼(114)는 메모리 어레이(110)로부터의 데이터를 저장할 수 있다. 추론 유닛(109)은 메모리 어레이(110)로부터 버퍼(114)로 데이터를 이동시켜 데이터를 액세스하는데 이용되는 액세스 커맨드의 양을 감소시킬 수 있다. 액세스 커맨드는 메모리 어레이(110) 대신 버퍼(114)로부터의 데이터를 제공함으로써 이행될 수 있다.
추론 유닛(109)은 또한 메모리 어레이(110)에 저장된 데이터를 구성할 수 있다. 메모리 어레이(110)에 저장된 데이터를 구성하는 것은 메모리 어레이(110)로부터 버퍼(114)로 데이터를 전송하는 것 및/또는 메모리 어레이(110)의 일 부분에서 메모리 어레이(110)의 다른 부분으로 데이터를 이동시키는 것을 포함할 수 있다. 추론 유닛(109)이 제어 회로(106)의 외부에 있는 것으로 도시되어 있지만, 추론 유닛(109) 및/또는 버퍼(114)는 또한 제어 회로(105)의 일부일 수 있다.
추론 유닛(109)은 메모리 어레이(110)를 제어하기 위해 로우 디코더(108) 및/또는 컬럼 디코더(112)에 연결될 수 있다. 추론 유닛(109)은 메모리 어레이(110)의 로우들 및 컬럼들을 활성화하도록 메모리 어레이(110)를 제어할 수 있다. 추론 유닛(109)은 메모리 어레이(110)에 저장된 데이터에 액세스하기 위해 메모리 어레이(110)의 로우들 및 컬럼들을 활성화할 수 있다. 메모리 어레이에 저장된 데이터는 메모리 어레이(110)의 제1 어드레스로부터 메모리 어레이(110)의 제2 어드레스로 데이터를 이동시키거나 메모리 어레이(110)로부터 버퍼(114)로 데이터를 이동시키기 위해 액세스될 수 있다.
추론 유닛(109)은 제어 회로(105)로부터 메모리 어레이(110)의 제어를 요청할 수 있다. 추론 유닛(109)은 메모리 어레이(110)의 제1 부분으로부터 메모리 어레이의 제2 부분으로 및/또는 데이터를 메모리 어레이(110)로부터 버퍼(114)로 이동시킴으로써 데이터를 전송하기 위한 메모리 디바이스(103)의 제어를 수신할 수 있다. 메모리 어레이(110)의 제어를 허용하는 것에 응답하여, 제어 회로(106)는 메모리 어레이(110)와 상호작용하는 것을 억제할 수 있다. 예를 들어, 제어 회로(106)는 메모리 어레이(110)의 로우들 및/또는 컬럼들을 활성화하는 것을 억제할 수 있다. 추론 유닛(109)은 메모리 어레이(110)로부터 버퍼(114)로 데이터를 전송한 것에 응답하여 및/또는 메모리 어레이(110)의 제1 부분으로부터 메모리 어레이의 제2 부분으로 데이터를 이동하는 것에 응답하여 메모리 디바이스(103)의 제어를 포기할 수 있다.
버퍼(114)는 추론된 액세스 커맨드를 만족시키기 위해 이용되는 전용 버퍼일 수 있다. 다양한 경우에, 버퍼(114)는 추론 유닛(109)에 의해 추론된 액세스 커맨드를 만족시키기 위한 것 외에도 다양한 목적을 위해 활용될 수 있는 공유 버퍼일 수 있다.
도 2는 본 개시내용의 다수의 실시예에 따른 메모리 디바이스(203) 형태의 장치의 블록도이다. 메모리 디바이스(203)는 도 1의 메모리 디바이스(103)와 유사하다. 메모리 디바이스(203)는 추론 유닛(209) 및 추론 버퍼(214)를 포함한다. 메모리 디바이스(203)는 또한 로우 제어(208), 메모리 어레이(210), 감지 증폭기(211)(예를 들어, 감지 증폭기 및 버퍼), 및 컬럼 제어(212)를 포함한다. 로우 제어(208) 및 컬럼 제어(212)는 도 1의 로우 디코더(108) 및 컬럼 디코더(112)와 유사할 수 있다.
메모리 디바이스(203)는 인터페이스들(204-1, 204-2 및 204-3)을 통해 데이터를 수신 및/또는 제공할 수 있다. 인터페이스(204-1)는 커맨드 버스일 수 있고, 인터페이스(204-2)는 어드레스 버스일 수 있고, 인터페이스(204-3)는 데이터 버스일 수 있다. 인터페이스(204-1)는 커맨드의 양방향 통신에 사용될 수 있다. 인터페이스(204-2)는 어드레스의 양방향 통신에 사용될 수 있다. 인터페이스(204-3)는 메모리 어레이(210)에 이전에 저장되거나 저장될 데이터의 양방향 통신에 사용될 수 있다.
추론 유닛(209)은 인터페이스(204)로 지칭되는 인터페이스들(204-1, 204-2 및 204-3)을 통해 제공되는 커맨드, 데이터 및/또는 어드레스에 액세스할 수 있다. 추론 유닛(209)은 메모리 디바이스(203)에 의해 수신되는 커맨드, 데이터, 및/또는 어드레스를 인터셉트할 수 있다. 커맨드, 데이터 및/또는 어드레스를 인터셉트하는 것은 다른 디바이스들/메모리 디바이스(203)의 부분들로의 전달과 무관하게 커맨드, 데이터 및/또는 어드레스에 액세스하는 것을 포함할 수 있다. 예를 들어, 메모리 디바이스(203)는 도 1의 제어 유닛(105)을 통해 인터페이스(204-1)를 통해 커맨드를 수신할 수 있다. 추론 유닛(209)은 제어 유닛 및 추론 유닛(209) 양자 모두가 커맨드를 수신하도록 제어 유닛에 의해 수신되는 커맨드와 무관하게 커맨드에 액세스할 수 있다. 추론 유닛(209)이 제어 회로의 일부로서 구현되는 예에서, 추론 유닛(209)은 제어 회로에 의해 수신된 액세스 커맨드를 스누핑(snooping)할 수 있다. 본원에 사용된 바와 같이, 스누핑은 달리 활용되고 있는 액세스 커맨드의 인터셉트를 지칭할 수 있다. 예를 들어, 액세스 커맨드가 메모리 어레이에 대한 액세스를 제공하기 위해 활용되는 동안 액세스 커맨드가 스누핑될 수 있다. 스누핑은 또한 메모리 어레이에서 데이터에 액세스하는 것 이외의 목적으로 액세스 커맨드를 사용하는 것을 포함할 수 있다. 예를 들어, 액세스 커맨드를 사용하여 메모리 어레이에서 액세스될 가능성이 가장 높은 데이터에 대한 통계 데이터를 생성할 수 있다.
추론 유닛(209)은 액세스될 메모리 어레이에 저장된 데이터를 결정하기 위해 사용될 수 있는 데이터를 생성하기 위해 커맨드, 관련 어드레스, 및/또는 데이터를 처리할 수 있다. 예를 들어, 추론 유닛(209)은 통계 데이터를 생성하기 위해 커맨드, 어드레스, 및/또는 데이터를 처리할 수 있다. 통계 데이터는 다음에 수신될 가능성이 있는 액세스 커맨드를 결정하는 데 사용될 수 있다. 커맨드, 어드레스 및/또는 데이터를 처리하여 메모리 어레이에서 미래의 데이터 액세스를 예측하는 데 사용될 수 있는 패턴을 식별할 수 있다. 미래의 데이터 액세스를 예측하는 것은 추론이라고 할 수 있다. 추론 유닛(209)은 제어 유닛에서 수신되고 및/또는 제어 유닛에 의해 수신될 데이터 액세스, 액세스 커맨드, 및/또는 어드레스를 추론할 수 있다.
추론 유닛(209)은 미래의 데이터 액세스를 예측하기 위해 액세스 커맨드의 양을 활용할 수 있다. 예를 들어, 추론 유닛(209)은 미래의 데이터 액세스를 예측하기 위한 액세스 커맨드 또는 미래의 데이터 액세스를 예측하기 위한 복수의 액세스 커맨드를 사용할 수 있다.
예측된 미래 데이터 액세스는 액세스될 메모리 어레이에서 어드레스를 예측하는 형태일 수 있다. 예측된 미래 데이터 액세스는 또한 메모리 명령에 의해 수신될 예측된 액세스 커맨드의 형태이거나 액세스될 데이터의 유형을 예측하는 것일 수 있다. 예를 들어, 추론 유닛(209)은 메모리 디바이스(203)에 의해 수신된 다음 네 개의 커맨드들이 액세스 커맨드임을 예측할 수 있다. 추론 유닛(209)은 다음 네 개의 액세스 커맨드들에 대응하는 어드레스들을 예측할 수 있다. 추론 유닛(209)은 메모리 디바이스에 의해 수신될 다음 네 개의 액세스 커맨드들에 의해 액세스될 데이터의 유형을 예측할 수 있다. 예를 들어, 추론 유닛(209)은 다음 액세스 커맨드가 0-비트로 구성된 데이터를 요청할 것이라고 예측할 수 있다.
추론 유닛(209)은 액세스될 어드레스들의 패턴을 식별할 수 있다. 예를 들어, 추론 유닛(209)은 액세스될 제1 어드레스 다음에 액세스될 제2 어드레스를 예측할 수 있다. 추론 유닛(209)은 제1 및 그 다음 제2 어드레스들이 액세스된 후의 트리거를 식별할 수 있다.
일부 예들에서, 추론 유닛(209)은 임계 카운터(threshold counter)들에 기초하여 데이터 액세스를 예측할 수 있다. 추론 유닛(209)은 메모리 어레이(210)의 특정 부분에 대한 액세스의 빈도를 추적할 수 있다. 일정 시간 동안 메모리 어레이(210)의 일부에 대한 액세스 양의 임계값에 도달하는 것에 응답하여, 추론 유닛(209)은 예를 들어 메모리 어레이(210)로부터 버퍼(214)로 데이터를 이동할 수 있다.
추론 유닛(209)에 의해 수집된 통계 데이터는 시간 의존적 및/또는 커맨드 의존적일 수 있다. 따라서, 시간이 경과함에 따라 및/또는 새로운 커맨드가 메모리 디바이스(203)에 의해 수신됨에 따라, 커맨드로부터 수집된 이전 데이터는 현재 커맨드에서 수집된 현재 데이터보다 가중치가 적을 수 있다. 추론 유닛(209)에 의해 수집된 통계 데이터의 업데이트에 기초하여, 버퍼(214)에 저장된 데이터는 통계 데이터의 업데이트에 기초하여 변경될 수 있다. 데이터 액세스 예측에 대응하여, 추론 유닛(209)은 데이터를 액세스하는 데 사용되는 액세스 커맨드의 양을 줄이거나 데이터를 제공하는 데 사용되는 시간을 줄이기 위해 메모리 어레이(210)에 데이터를 구성할 수 있다. 데이터를 조직화하는 것은 메모리 어레이(210)의 제1 부분으로부터 메모리 어레이(210)의 제2 부분으로 데이터를 이동시키는 것을 포함할 수 있다. 예를 들어, 제1 어드레스 및 제2 어드레스는 동일한 로우로 재매핑(remapping)될 수 있고 및/또는 제1 어드레스 및 제2 어드레스는 연속적인 어드레스들로 재매핑될 수 있다. 제1 어드레스와 제2 어드레스를 구성하면 제1 및/또는 제2 어드레스를 재매핑하여 단일 액세스 커맨드를 사용하여 액세스될 수 있어, 그들이 액세스 커맨드에 의해 액세스되는 동일한 데이터 페이지에 있도록 한다. 데이터를 구성하는 것은 또한 메모리 어레이(210)에서 버퍼(214)로 데이터를 이동시키는 것을 포함할 수 있다.
버퍼(214)는 다수의 데이터 라인들을 통해 감지 증폭기에 연결될 수 있다. 버퍼(214)의 크기는 감지 증폭기(211)의 크기에 대응할 수 있다. 예를 들어, 버퍼(214)는 감지 증폭기(211)에 의해 래칭된 데이터의 양과 동일한 양의 데이터를 저장할 수 있다. 버퍼(214)는 감지 증폭기(211)에 의해 래칭된 데이터의 양의 배수와 동일한 데이터의 양을 저장할 수 있다. 버퍼(214)는 레지스터, 셀, 및/또는 상이한 유형의 전하 저장 디바이스를 이용하여 데이터를 저장할 수 있다.
메모리 어레이(210)로부터 버퍼(214)로 데이터를 이동하는 것은 메모리 어레이(210)로부터 데이터의 다수의 페이지들을 판독하는 것을 포함할 수 있다. 예를 들어, 제1 페이지의 제1 부분은 버퍼(214)의 제1 부분에 저장될 수 있고 메모리 어레이(210)의 제2 페이지의 제2 부분은 버퍼(214)의 제2 부분에 저장될 수 있어서, 제1 페이지의 제1 부분과 제2 페이지의 제 2 부분이 단일 액세스 커맨드를 이용하여 함께 액세스되는 것을 허용한다. 제1 페이지의 제1 부분 및 제2 페이지의 제2 부분은 제1 페이지의 제1 부분 및 제2 페이지의 제2 부분에 액세스하는데 이용되는 시간의 양을 감소시키기 위해 사양 버퍼(specification buffer)(214)에 저장될 수 있다. 예를 들어, 버퍼(214)에 제1 페이지의 제1 부분을 저장하는 것은 대응하는 액세스 커맨드가 처리될 때 메모리 어레이(210)로부터 데이터 라인(213)으로 제1 페이지의 제1 부분을 이동할 필요를 제거함으로써 제1 페이지의 제1 부분에 액세스하는 데 사용되는 시간을 줄일 수 있다.
추론 유닛(209)은 버퍼(214)에 저장된 데이터를 식별하기 위해 사양 버퍼(214)에 저장된 데이터에 대응하는 메모리 어레이 어드레스를 저장할 수 있다. 추론 유닛(209)은 메모리 디바이스(203)에 의해 수신된 액세스 커맨드를 모니터링할 수 있다. 추론 유닛(209)은 메모리 디바이스(203)의 제어를 요청할 수 있고 수신된 액세스 커맨드가 버퍼(214)에 저장된 데이터의 어드레스와 연관되는 경우 버퍼(214)로부터 인터페이스(204-3)로 데이터를 전달할 수 있다.
일부 예에서, 제어 회로는 사양 버퍼(214)로부터 인터페이스(204-3)로 데이터를 전송할 수 있다. 제어 회로는 버퍼(214)와 직접 통신함으로써 및/또는 사양 유닛(209)이 버퍼(214)로부터 인터페이스(204-3)로 데이터를 이동하도록 요청함으로써 데이터를 전송할 수 있다.
도 2는 버퍼(214)가 추론 유닛(209) 외부에 있는 것으로 도시하지만, 버퍼(114)는 또한 도 1에 도시된 바와 같이 추론 유닛(109) 내부에 있을 수 있다. 내부 버퍼 및/또는 외부 버퍼는 본원에서 설명된 예와 함께 구현되고 활용될 수 있다.
도 3은 본 개시내용의 다수의 실시예에 따라 메모리에서 추론을 수행하기 위한 방법의 예시적인 흐름도를 도시한다. 330에서, 복수의 액세스 커맨드들이 메모리 디바이스에서 수신될 수 있다. 메모리 디바이스는 액세스 커맨드에 대한 수신에 응답하여 메모리 어레이에 대한 액세스를 제공할 수 있다.
332에서, 메모리 어레이는 상기 복수로부터의 액세스 커맨드들 중 하나 이상에 응답하여 액세스될 수 있다. 334에서, 하나 이상의 액세스 커맨드들에 대응하는 패턴 또는 특성이 식별될 수 있다. 패턴은 다른 패턴 또는 특성 중에서 액세스 빈도 및/또는 액세스 커맨드들 간의 관계를 설명할 수 있다.
336에서, 액세스된 데이터는 어레이로부터 어레이에 연결된 복수의 감지 증폭기들로 전송될 수 있다. 338에서, 데이터는 복수의 액세스 커맨드들의 식별된 패턴 또는 특성에 적어도 부분적으로 기초하는 순서로 감지 증폭기들과 메모리 디바이스 내부의 버퍼 사이에서 전송될 수 있다.
일부 예에서, 복수의 액세스 커맨드들의 패턴 및/또는 특성은 데이터의 부분을 식별하는 데 사용될 수 있다. 데이터의 상기 부분은 패턴 및/또는 특성에 의해 식별된 감지 증폭기들로부터 버퍼로 전송될 수 있다. 예를 들어, 패턴 및/또는 특성은 데이터의 로우를 포함하는 복수의 비트들의 제1 부분을 식별할 수 있다. 데이터의 로우의 제1 부분은 버퍼로 전송될 수 있지만 데이터의 로우의 다른 부분은 버퍼로 전송되지 않는다.
복수의 액세스 커맨드들의 패턴 또는 특성은 복수의 액세스 커맨드들에 대응하는 어드레스들을 레지스터들에 저장하고 해당 어드레스들에 대응하는 카운터를 유지함으로써 식별된다.
복수의 액세스 커맨드들 중 하나 이상의 액세스 커맨드들의 수신에 응답하여, 하나 이상의 액세스 커맨드들과 연관된 어드레스가 버퍼에 저장된 데이터에 대응한다는 결정이 내려질 수 있다. 제어 회로 또는 추론 유닛은 수신된 액세스 커맨드와 연관된 어드레스를 버퍼에 저장된 데이터의 어드레스 및/또는 메모리 어레이에 구성된 데이터의 어드레스와 비교할 수 있다. 예를 들어, 메모리 어레이의 제1 부분이 추론을 수행한 결과로서 메모리 어레이의 제2 부분에 저장되는 경우, 메모리 어레이의 제1 부분에 대응하고 수신된 어드레스가 메모리 어레이의 제2 부분에 매핑될 수 있다. 추론 유닛은 매핑된 어드레스를 갖는 데이터를 반환하도록 메모리 디바이스의 제어를 요청할 수 있다.
추론 유닛은, 어드레스가 버퍼에 저장된 특정 데이터에 대응한다는 결정에 응답하여, 버퍼에 저장된 특정 데이터에 대한 액세스를 제공할 수 있다. 액세스는 버퍼에서 데이터 라인을 통해 메모리 디바이스의 데이터 인터페이스로 특정 데이터를 이동함으로써 제공될 수 있다.
수신된 액세스 커맨드와 관련된 어드레스가 버퍼에 저장된 특정 데이터와 대응하지 않는 경우, 어드레스를 버퍼 또는 메모리 어레이의 어드레스에 매핑하지 않고 메모리 어레이에 대한 액세스가 제공될 수 있다. 액세스 커맨드로 수신된 어드레스는 메모리 어레이에 직접 액세스하는 데 사용될 수 있다. 수신된 어드레스가 버퍼에 매핑되지 않은 경우, 제어 회로 및/또는 추론 유닛은 메모리 어레이의 수신된 어드레스에 대한 액세스를 제공할 수 있다.
다양한 예들에서, 복수의 액세스 커맨드들은 다음에 수신된 액세스 커맨드에 의해 액세스될 가능성이 있는 데이터를 식별하도록 처리될 수 있다. 추론 유닛은 액세스될 다음 어드레스(예를 들어, 어드레스에 저장된 데이터)를 추론할 수 있다.
다양한 예에서, 제어 회로는 복수의 커맨드들을 수신하도록 구성될 수 있다. 회로(추론 유닛)는 복수의 커맨드들을 스누핑하고, 복수의 커맨드들에 기초하여 제1 데이터를 생성하고, 제1 데이터 및/또는 메모리 액세스의 예측에 기초하여 메모리 어레이에 저장된 제2 데이터를 구성하도록 더 구성될 수 있다. 제1 데이터는 통계 데이터라고도 할 수 있다. 통계 데이터는 데이터 유형의 카운터, 메모리 어레이의 어드레스, 및/또는 메모리 디바이스에서 수신된 커맨드의 유형에 기초하여 형성될 수 있다.
예를 들어, 메모리 디바이스는 로우에 대응하는 액세스 커맨드가 수신될 때마다 로우와 연관된 카운터를 증가시킬 수 있다. 복수의 카운터들의 업데이트를 기반으로, 메모리 디바이스는 일정 기간 동안 또는 액세스 커맨드의 양에 걸쳐 가장 큰 빈도로 액세스되는 어레이의 로우를 식별할 수 있다. 예를 들어, 메모리 디바이스는 카운터를 활용하여 어레이의 나머지 로우들보다 더 큰 빈도로 제1 및 제2 로우가 액세스됨을 식별하는 통계 데이터를 생성할 수 있다. 로우의 액세스 빈도는 패턴으로 간주될 수 있다. 더 많은 빈도로 로우가 액세스되는 패턴이다. 통계 데이터는 메모리 어레이의 로우에 대응하는 액세스 커맨드의 백분율일 수 있다.
일부 예에서, 통계 데이터는 데이터가 로우에 저장된 후 로우가 액세스되는 빈도를 식별할 수 있다. 예를 들어, 추론 유닛은 기록된 로우를 식별할 수 있고 해당 로우에 데이터를 저장하는 데 뒤따르는 액세스 커맨드의 양을 계산할 수 있다. 로우에 데이터를 저장한 후 로우에 대한 액세스를 추적하는 데 사용되는 카운트가 임계값보다 작은 경우 데이터는 메모리 어레이에 구성되거나 미래의 액세스 커맨드가 해당 로우를 대상으로 할 것이라는 기대와 함께 버퍼로 이동할 수 있다.
어레이의 어드레스 및 카운트를 추적하기 위해 복수의 레지스터들이 사용될 수 있다. 어드레스는 로우 어드레스 및/또는 컬럼 어드레스를 포함할 수 있다. 추론 유닛은 인커밍(incoming) 어드레스를 어레이에 저장된 어드레스와 매칭시키기 위해 비교기를 사용할 수 있다. 추론 유닛은 또한 레지스터에 저장된 어드레스와 인커밍 어드레스 사이의 매칭이 주어지면 레지스터들에 저장된 어드레스들과 관련된 카운터를 증가시킬 수 있다. 추론 유닛은 기록을 최신 상태로 유지하기 위해 큐(que)를 유지할 수도 있다. 예를 들어, 큐는 메모리에 대한 이전 액세스의 양에서 액세스되지 않은 어드레스와 연관된 레지스터를 비우는 데 사용될 수 있다.
다양한 예에서, 추론 유닛은 어레이 또는 카운터들의 어드레스를 추적하는데 사용되는 복수의 레지스터에서 레코드들을 동적으로 기록하거나 축출하기 위해 유한 상태 머신(FSM) 및/또는 시퀀서를 유지할 수 있다. 추론 유닛은 레지스터를 버퍼로 활용할 수 있다. 액세스되는 어레이의 어드레스 및/또는 연관된 카운터를 추적하는 데 사용되는 로우 어드레스 버퍼는 어레이의 로우에 대응하는 데이터를 저장하는 데 사용되는 버퍼(예를 들어, 로우 데이터 버퍼)보다 클 수 있다. 그러나 로우 어드레스 버퍼의 엔트리가 제거될 때 로우 데이터 버퍼의 대응하는 엔트리도 그렇게 되도록 로우 데이터 버퍼의 각 엔트리가 로우 어드레스 버퍼의 엔트리에 대응할 수 있다는 점에서 로우 어드레스 버퍼는 로우 데이터 버퍼와 연관될 수 있다.
제1 데이터를 기반으로 메모리 어드레스가 예측될 수 있다. 예를 들어, 통계 데이터가 어드레스를 가장 자주 액세스된 것으로 식별하는 경우, 그러면 사양 유닛은 제1 데이터를 기반으로 어드레스가 액세스될 것이라고 예측할 수 있다.
예측된 메모리 액세스를 기반으로, 메모리 어레이에 저장된 제2 데이터는 제2 데이터를 검색하는 데 사용되는 액세스의 양을 줄이도록 구성될 수 있다. 일부 경우에는, 제2 데이터를 검색하는 데 사용되는 액세스 양이 메모리 액세스 예측에 따라 변경되지 않을 수 있다. 그러나 제2 데이터에 대한 액세스를 제공하는 데 사용되는 시간이 줄어들 수 있다.
일부 예들에서, 메모리 어레이의 어드레스들 사이 및/또는 메모리 어레이의 어드레스들과 추론 버퍼 사이의 매핑은 어드레스들에 대응하는 데이터를 구성하기 전에 수행될 수 있다. 제2 데이터에 대응하는 메모리 어레이의 어드레스가 구성되기 전에 구성된 후의 제2 데이터에 대응하는 메모리 어레이의 어드레스에 매핑될 수 있다. 즉, 매핑된 어드레스들은 데이터가 이동되기 전의 데이터 어드레스와 데이터가 이동된 후의 데이터 어드레스를 식별할 수 있다.
통계 데이터는 함께 또는 이후에 액세스되는 데이터를 식별할 수 있다. 통계 데이터를 사용하여 가장 자주 액세스되는 데이터 두 세 개를 식별할 수 있다. 통계 데이터는 가장 자주 액세스되는 데이터와 데이터에 액세스하는 순서를 식별하는 데 사용할 수 있다. 일부 예에서, 제어 회로 및 회로(추론 유닛)는 개별 집적 회로 또는 단일 집적 회로에서 구현될 수 있다.
도 4는 머신이 본원에서 논의된 다양한 방법론을 수행하게 하기 위한 명령어 세트가 실행될 수 있는 컴퓨터 시스템(440)의 예시적인 머신을 도시한다. 다양한 실시예에서, 컴퓨터 시스템(440)은 메모리 서브시스템(예를 들어, 도 1의 메모리 디바이스(103))을 포함하거나 이에 연결되거나 이를 활용하는 시스템(예를 들어, 도 1의 시스템(100))에 대응할 수 있거나 제어기(예를 들어, 도 1의 제어기(105))의 동작을 수행하기 위해 사용될 수 있다. 대안적인 실시예에서, 머신은 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 머신에 연결(예를 들어, 네트워크 연결)될 수 있다. 머신은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신의 용량으로 작동할 수 있으며, 예를 들어, 피어 투 피어(또는 분산) 네트워크 환경에서 피어 머신으로, 또는 클라우드 컴퓨팅 인프라 또는 환경에서 서버 또는 클라이언트 시스템으로 작동할 수 있다.
머신은 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인 휴대 정보 단말기(PDA), 휴대폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신이 취해야 할 조치를 지정하는 명령어 세트(순차적이든 아니든)을 실행할 수 있는 모든 머신일 수 있다. 또한, 단일 머신이 예시되어 있지만, "머신"이라는 용어는 본원에서 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 명령어 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합체도 포함하는 것으로 간주되어야 한다.
예시적인 컴퓨터 시스템(440)은 처리 디바이스(402), 메인 메모리(404)(예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM) 등과 같은 동적 랜덤 액세스 메모리(DRAM)), 정적 메모리(406)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등) 및 버스(430)를 통해 서로 통신하는 데이터 저장 시스템(418)을 포함한다.
처리 디바이스(402)는 마이크로프로세서, 중앙 처리 디바이스 등과 같은 하나 이상의 범용 처리 디바이스를 나타낸다. 보다 구체적으로, 처리 디바이스는 CISC(complex instruction set computing), 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서 또는 다른 명령어 세트를 구현하는 프로세서, 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(402)는 또한 하나 이상의 특수 목적 처리 디바이스일 수 있으며, 예를 들어, ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서 등일 수 있다. 처리 디바이스(402)는 본원에서 논의된 동작 및 단계를 수행하기 위한 명령어(426)를 실행하도록 구성된다. 컴퓨터 시스템(440)은 네트워크(420)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(408)를 더 포함할 수 있다.
데이터 저장 시스템(418)은 하나 이상의 명령어 세트(426) 또는 본원에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 소프트웨어가 저장되어 있는 머신 판독가능 저장 매체(424)(컴퓨터 판독 가능 매체라고도 함)를 포함할 수 있다. 명령어(426)는 또한 컴퓨터 시스템(440), 메인 메모리(404) 및 처리 디바이스(402)에 의해 실행되는 동안 메인 메모리(404) 및/또는 처리 디바이스(402) 내에 완전히 또는 적어도 부분적으로 상주할 수 있으며, 또한 기계 판독 가능한 저장 매체를 구성한다.
일 실시예에서, 명령어(426)는 도 1의 호스트(102) 및/또는 메모리 디바이스(103)에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 머신 판독 가능 저장 매체(424)는 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "머신 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야 한다. "머신 판독 가능 저장 매체"라는 용어는 머신에 의한 실행을 위한 명령어 세트를 저장하거나 인코딩할 수 있는 모든 매체를 포함하고 머신이 본 개시의 방법론들 중 임의의 하나 이상을 수행하게 하는 것으로 간주된다. 따라서 "머신 판독 가능 저장 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 제한되지 않는 것으로 간주되어야 한다.
특정 실시예가 본원에서 예시되고 설명되었지만, 당업자는 동일한 결과를 달성하기 위해 계산된 배열이 도시된 특정 실시예를 대체할 수 있음을 이해할 것이다. 본 개시는 본 개시의 다양한 실시예의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 제한적인 것이 아니라 예시적인 방식으로 이루어진 것임을 이해해야 한다. 상기 실시예의 조합, 및 본원에 구체적으로 설명되지 않은 다른 실시예는 상기 설명을 검토할 때 당업자에게 명백할 것이다. 본 개시내용의 다양한 실시예의 범위는 상기 구조 및 방법이 사용되는 다른 응용을 포함한다. 따라서, 본 개시내용의 다양한 실시예의 범위는 첨부된 청구범위 및 그러한 청구범위가 부여되는 균등물의 전체 범위를 참조하여 결정되어야 한다.
전술한 상세한 설명에서, 다양한 특징들은 본 개시를 간소화할 목적으로 단일 실시예에서 함께 그룹화된다. 이러한 개시 방법은 본 개시의 개시된 실시예가 각각의 청구항에서 명시적으로 인용된 것보다 더 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음 청구범위가 반영하는 바와 같이, 독창적인 주제는 단일의 개시된 실시예의 모든 특징보다 적다. 따라서, 다음 청구범위는 이에 의해 상세한 설명에 통합되며, 각 청구범위는 그 자체로 별도의 실시예로 서 있다.
Claims (20)
- 장치에 있어서,
복수의 커맨드(command)들을 수신하도록 구성된 제어 회로; 및
상기 제어 회로에 연결된 회로를 포함하고, 상기 회로는:
상기 복수의 커맨드들을 스누핑(snoop)하고;
상기 복수의 커맨드들에 기초하여 제1 데이터를 생성하고; 그리고
상기 제1 데이터 및 메모리 액세스(memory access)의 예측에 기초하여 메모리 어레이에 저장된 제2 데이터를 구성하도록 구성되는, 장치. - 제1항에 있어서, 상기 회로는, 상기 예측된 메모리 액세스에 기초하여, 상기 제2 데이터를 검색하는 데 사용되는 액세스의 양을 줄이기 위해 상기 메모리 어레이에 저장된 상기 제2 데이터를 구성하도록 더 구성되는, 장치.
- 제1항에 있어서, 상기 회로는 구성되기 전의 상기 제2 데이터에 대응하는 상기 메모리 어레이의 어드레스들을 구성된 후의 상기 제2 데이터에 대응하는 상기 메모리 어레이의 어드레스들에 매핑하도록 더 구성되는, 장치.
- 제3항에 있어서, 상기 복수의 커맨드들 중 하나는 액세스 커맨드를 포함하고, 상기 회로는:
상기 액세스 커맨드가 상기 제2 데이터가 구성된 후 상기 제2 데이터에 매핑된 어드레스와 연관되는 것을 결정하도록 더 구성되는, 장치. - 제4항에 있어서, 상기 회로는, 상기 액세스 커맨드가 상기 제2 데이터와 연관되어 있다는 결정에 응답하여, 매핑된 후 상기 상기 제2 데이터에 대응하는 상기 어드레스에 대한 액세스를 제공하도록 다 구성되는, 장치.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 제어 회로 및 상기 회로는 단일 집적 회로를 포함하는, 장치.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 제1 데이터는 상기 복수의 커맨드들의 패턴 또는 특성을 포함하는, 장치.
- 제7항에 있어서, 상기 제2 데이터를 구성하도록 구성되는 상기 회로는 상기 제2 데이터에 액세스하는 데 사용되는 커맨드의 양을 줄이기 위해 함께 액세스되는 상기 제2 데이터를 그룹화하도록 구성되는 상기 회로를 더 포함하는, 장치.
- 제8항에 있어서, 상기 제2 데이터를 구성하도록 구성되는 상기 회로는 상기 제2 데이터를 상기 메모리 어레이의 로우(row)로 통합함으로써 상기 제2 데이터를 그룹화하도록 구성되는 상기 회로를 더 포함하는, 장치.
- 방법에 있어서,
메모리 디바이스에서 복수의 액세스 커맨드들을 수신하는 단계;
상기 복수의 액세스 커맨드들 중 하나 이상의 액세스 커맨드들에 응답하여 상기 메모리 디바이스의 어레이에 액세스하는 단계;
상기 복수의 액세스 커맨드들의 패턴 또는 특성을 식별하는 단계;
상기 어레이와 상기 메모리 디바이스의 복수의 감지 증폭기들 사이에서 데이터를 전송하는 단계; 및
상기 복수의 액세스 커맨드들의 상기 식별된 패턴 또는 특성에 적어도 부분적으로 기초하는 순서로 상기 감지 증폭기들과 상기 메모리 디바이스 내부의 버퍼 사이에서 데이터를 전송하는 단계를 포함하는, 방법. - 제10항에 있어서, 상기 복수의 액세스 커맨드들의 상기 패턴 또는 특성은 상기 복수의 액세스 커맨드들에 대응하는 어드레스들을 레지스터(register)들에 저장하고 상기 어드레스들에 대응하는 카운터(counter)를 유지함으로써 식별되는, 방법.
- 제10항에 있어서, 상기 복수의 액세스 커맨드들 중 하나 이상의 액세스 커맨드들의 수신에 응답하여, 상기 하나 이상의 액세스 커맨드들과 연관된 어드레스가 상기 버퍼에 저장된 상기 데이터에 대응한다고 결정하는 단계를 더 포함하는, 방법.
- 제12항에 있어서, 상기 어드레스가 상기 버퍼에 저장된 상기 데이터에 대응한다는 결정에 응답하여, 상기 버퍼에 저장된 상기 데이터에 대한 액세스를 제공하는 단계를 더 포함하는, 방법.
- 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 하나 이상의 액세스 커맨드들의 수신에 응답하여, 상기 하나 이상의 액세스 커맨드들과 연관된 어드레스가 상기 버퍼에 저장된 데이터에 대응하지 않는다고 결정하는 단계를 더 포함하는, 방법.
- 제14항에 있어서, 상기 어드레스가 상기 버퍼에 저장된 데이터에 대응하지 않는다는 결정에 응답하여, 상기 메모리 어레이에 대한 액세스를 제공하는 단계를 더 포함하는, 방법.
- 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 데이터는 다음에 수신된 액세스 커맨드에 의해 액세스될 가능성이 있는 데이터를 포함하는, 방법.
- 제16항에 있어서, 상기 다음 액세스 커맨드의 수신에 응답하여:
다른 데이터보다 통계적으로 더 많이 액세스될 가능성이 있는 상이한 데이터를 식별하기 위해 상기 복수의 액세스 커맨드 및 상기 다음에 수신된 액세스 커맨드를 처리하는 단계; 및
상기 메모리 디바이스의 상기 메모리 어레이로부터 상기 메모리 디바이스 내부의 상기 버퍼로 상기 상이한 데이터를 전송하는 단계를 더 포함하는, 방법. - 장치에 있어서,
추론(speculation)을 수행하기 위한 회로를 포함하고, 상기 회로는:
복수의 커맨드들을 스누핑하고;
상기 복수의 커맨드들에 기초하여 제1 데이터를 생성하고; 그리고
상기 제1 데이터에 기초하여 메모리 어레이에 저장된 제2 데이터를 구성하기 위해 상기 메모리 어레이의 제어를 획득하도록 구성되는, 장치. - 제18항에 있어서, 상기 회로는 상기 장치의 제어 회로로부터 제어를 획득하도록 더 구성되는, 장치.
- 제18항 내지 제19항 중 어느 한 항에 있어서, 상기 회로는:
상기 메모리 어레이에 연결된 로우 디코더(row decoder) 및 컬럼 디코더(column decoder)의 제어를 획득하고; 그리고
상기 제2 데이터를 구성하는 것에 응답하여 상기 메모리 어레이의 제어를 포기하도록 더 구성되는, 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/539,509 | 2019-08-13 | ||
US16/539,509 US11169737B2 (en) | 2019-08-13 | 2019-08-13 | Speculation in memory |
PCT/US2020/040488 WO2021029980A1 (en) | 2019-08-13 | 2020-07-01 | Speculation in memory |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220034939A true KR20220034939A (ko) | 2022-03-18 |
Family
ID=74567794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227007978A KR20220034939A (ko) | 2019-08-13 | 2020-07-01 | 메모리에서 추론 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11169737B2 (ko) |
EP (1) | EP4014107A4 (ko) |
KR (1) | KR20220034939A (ko) |
CN (1) | CN113994430A (ko) |
WO (1) | WO2021029980A1 (ko) |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5050095A (en) | 1988-05-31 | 1991-09-17 | Honeywell Inc. | Neural network auto-associative memory with two rules for varying the weights |
JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
US6052760A (en) * | 1997-11-05 | 2000-04-18 | Unisys Corporation | Computer system including plural caches and utilizing access history or patterns to determine data ownership for efficient handling of software locks |
US7234029B2 (en) | 2000-12-28 | 2007-06-19 | Intel Corporation | Method and apparatus for reducing memory latency in a cache coherent multi-node architecture |
US6970985B2 (en) | 2002-07-09 | 2005-11-29 | Bluerisc Inc. | Statically speculative memory accessing |
US7174354B2 (en) | 2002-07-31 | 2007-02-06 | Bea Systems, Inc. | System and method for garbage collection in a computer system, which uses reinforcement learning to adjust the allocation of memory space, calculate a reward, and use the reward to determine further actions to be taken on the memory space |
US7089400B1 (en) * | 2002-08-29 | 2006-08-08 | Advanced Micro Devices, Inc. | Data speculation based on stack-relative addressing patterns |
US7260685B2 (en) * | 2003-06-20 | 2007-08-21 | Micron Technology, Inc. | Memory hub and access method having internal prefetch buffers |
US7130967B2 (en) | 2003-12-10 | 2006-10-31 | International Business Machines Corporation | Method and system for supplier-based memory speculation in a memory subsystem of a data processing system |
US8892821B2 (en) * | 2003-12-10 | 2014-11-18 | International Business Machines Corporation | Method and system for thread-based memory speculation in a memory subsystem of a data processing system |
US7526604B1 (en) * | 2004-08-09 | 2009-04-28 | Nvidia Corporation | Command queueing speculative write prefetch |
US7743202B2 (en) * | 2006-03-09 | 2010-06-22 | Mediatek Inc. | Command controller, prefetch buffer and methods for accessing a serial flash in an embedded system |
US20090106498A1 (en) | 2007-10-23 | 2009-04-23 | Kevin Michael Lepak | Coherent dram prefetcher |
CN101515230B (zh) * | 2008-02-18 | 2012-02-08 | 瑞昱半导体股份有限公司 | 预测存储器存取的装置及其方法 |
CN102270176A (zh) * | 2010-06-03 | 2011-12-07 | 智微科技股份有限公司 | 数据存取方法及其相关的控制系统 |
US9026719B2 (en) * | 2012-11-15 | 2015-05-05 | Elwha, Llc | Intelligent monitoring for computation in memory |
KR102070136B1 (ko) | 2013-05-03 | 2020-01-28 | 삼성전자주식회사 | 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 |
US10067872B2 (en) * | 2015-06-22 | 2018-09-04 | Advanced Micro Devices, Inc. | Memory speculation for multiple memories |
US11010431B2 (en) * | 2016-12-30 | 2021-05-18 | Samsung Electronics Co., Ltd. | Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD |
EP4089531B1 (en) * | 2016-12-31 | 2024-06-26 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
US10394706B2 (en) * | 2017-11-02 | 2019-08-27 | Western Digital Technologies, Inc. | Non-volatile storage with adaptive command prediction |
GB2570110B (en) * | 2018-01-10 | 2020-04-15 | Advanced Risc Mach Ltd | Speculative cache storage region |
US11314445B2 (en) * | 2019-11-19 | 2022-04-26 | Western Digital Technologies, Inc. | Pattern tracking for efficiently predicting control pages |
-
2019
- 2019-08-13 US US16/539,509 patent/US11169737B2/en active Active
-
2020
- 2020-07-01 EP EP20852170.8A patent/EP4014107A4/en active Pending
- 2020-07-01 WO PCT/US2020/040488 patent/WO2021029980A1/en unknown
- 2020-07-01 KR KR1020227007978A patent/KR20220034939A/ko active IP Right Grant
- 2020-07-01 CN CN202080043780.1A patent/CN113994430A/zh active Pending
-
2021
- 2021-10-14 US US17/501,161 patent/US11662950B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11662950B2 (en) | 2023-05-30 |
EP4014107A4 (en) | 2023-10-04 |
EP4014107A1 (en) | 2022-06-22 |
CN113994430A (zh) | 2022-01-28 |
US20220035571A1 (en) | 2022-02-03 |
WO2021029980A1 (en) | 2021-02-18 |
US20210048959A1 (en) | 2021-02-18 |
US11169737B2 (en) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379381B2 (en) | Main memory device having heterogeneous memories, computer system including the same, and data management method thereof | |
US11966329B2 (en) | Address map caching for a memory system | |
KR20210019576A (ko) | 메모리 액세스 가속화를 위한 예측 페이징 | |
KR20190128743A (ko) | 프로그래밍 가능한 버퍼 및 캐시 크기의 메모리 프로토콜 | |
US11960630B2 (en) | Register access | |
US20220284932A1 (en) | Conditional write back scheme for memory | |
US11783872B2 (en) | Apparatuses and methods for performing operations using sense amplifiers and intermediary circuitry | |
US20190042415A1 (en) | Storage model for a computer system having persistent system memory | |
US11860773B2 (en) | Memory access statistics monitoring | |
KR20220050177A (ko) | 3단의 계층적 메모리 시스템 | |
KR20210151250A (ko) | 확장 메모리 인터페이스 | |
US11662950B2 (en) | Speculation in memory | |
US10901734B2 (en) | Memory mapping using commands to transfer data and/or perform logic operations | |
CN113490915A (zh) | 扩展存储器操作 | |
CN114258528A (zh) | 阶层式存储器设备 | |
US11762577B2 (en) | Edge compute components under a memory array | |
CN114258534B (zh) | 阶层式存储器系统 | |
CN114303124A (zh) | 分级存储器设备 | |
CN114341818A (zh) | 分级存储器设备 | |
CN114270324A (zh) | 层次型存储器系统 | |
CN114270442A (zh) | 层次型存储器系统 | |
CN114270311A (zh) | 分级存储器系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |