KR20200118170A - 로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법 - Google Patents

로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200118170A
KR20200118170A KR1020207025838A KR20207025838A KR20200118170A KR 20200118170 A KR20200118170 A KR 20200118170A KR 1020207025838 A KR1020207025838 A KR 1020207025838A KR 20207025838 A KR20207025838 A KR 20207025838A KR 20200118170 A KR20200118170 A KR 20200118170A
Authority
KR
South Korea
Prior art keywords
data
length
memory
hardware
blocks
Prior art date
Application number
KR1020207025838A
Other languages
English (en)
Other versions
KR102425596B1 (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 KR20200118170A publication Critical patent/KR20200118170A/ko
Application granted granted Critical
Publication of KR102425596B1 publication Critical patent/KR102425596B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

데이터 레이턴시, 이에 따른 전력 소비 및 데이터 관리 비용을 감소시키는 효율적인 데이터 처리를 가능하게 하는 시스템 및 방법이 제공된다. 다양한 실시예들에서, 이는 메모리 내의 제 1 데이터 블록의 어드레스 포인터, 및 그 데이터 블록을 포함하고 매트릭스 프로세서의 입력과 관련된 데이터의 길이를 식별하는 시퀀서를 사용함으로써 달성된다. 시퀀서는 블록 길이, 입력 길이, 및 메모리 맵에 기초하여, 메모리로부터 탐색되는 데이터 블록의 수를 나타내는 블록 카운트를 계산한다. 어드레스 포인터를 사용하여, 시퀀서는 데이터 블록들이 연속적인지 여부에 의존하는 횟수의 사이클에서 메모리로부터 복수의 데이터 블록을 탐색할 수 있다.

Description

로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법
본 출원은, 피터 조세프 배넌, 케빈 알테어 허드, 에밀 탈프스가 발명자로 열거된, "로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법(Systems and Methods for Low Latency Hardware Memory Management)"이라는 명칭으로 2018년 2월 13일에 출원된 미국 특허 출원 제62/630,096호(대리인 도켓 번호(Atty. docket no.) 20150-2153P(P0827-1PUS))에 대하여 35 USC § 119(e) 하에서 우선권을 주장하며, 상기 출원은 그 전체가 본 명세서에 참조로 포함된다.
또한, 본 출원은, 피터 조세프 배넌, 케빈 알테어 허드, 에밀 탈프스가 발명자로 열거된, "로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법(Systems And Methods For Low Latency Hardware Memory Management)"이라는 명칭으로 2018년 6월 5일에 출원된 공동 소유의 미국 특허 출원 제16/000,248호(20150-2153(P0827-2NUS))에 대한 우선권을 주장하며, 상기 출원은 그 전체가 본 명세서에 참조로 포함된다.
본 발명은 향상된 메모리 판독 동작(memory read operations)에 관한 것으로, 보다 구체적으로, 메모리로부터 하드웨어-가속 처리 장치(hardware-accelerated processing devices)의 특성으로 데이터 탐색(data retrieval)을 정렬(align)하는 효율적인 메모리 관리 방법 및 시스템에 관한 것이다.
당업자는 하드웨어-가속 프로세서를 사용할 때 메모리로부터의 고속 데이터 탐색(high-speed data retrieval)의 중요성을 알 것이다. 하드웨어-가속 처리 시스템은 자율 주행, 보안 및 사용자 인증 프로세스 및 당업자에게 알려진 다른 기술과 같은 시간-민감성 애플리케이션(time-sensitive applications) 내의 데이터의 분석을 가능하게 한다. 이러한 시스템을 설계할 때, 메모리로부터 탐색된 데이터가 충분한 속도로 수행되도록 하여, 하드웨어-가속 프로세서가 이러한 새로운 데이터에 대해 긴 시간 주기 동안 대기할 필요가 없도록 하는 것이 중요하다. 많은 경우에, 기존의 메모리 구조 및 방법은, 판독 요청(read requests)을 처리하고 구현하는데 필요한 시간 때문에, 상기 가속 시스템에 병목현상을 야기할 수 있다.
도 1은 본 기술 분야에 알려진 일반적인 메모리 관리 시스템을 도시한다. 시스템(100)은 일반적으로 범용 컴퓨터 시스템의 모놀리식 칩(monolithic chip)상에 구현되는 중앙 처리 유닛(CPU: Central Processing Unit)(104), 제어기(106), 및 메모리(110)를 포함한다. CPU(104)는 이미지 데이터(102)를 수신하여 처리하는 일반적인 프로세서이다. 이미지 데이터(102)는, 일반적으로 2진수들로 표현되고 데이터의 그룹들 또는 블록들(114)에서 처리되는 비교적 많은 수의 픽셀들을 포함하는 파일(file)이다.
메모리(110)는 디지털 데이터를 저장하도록 설계된 물리적 메모리 장치(physical memory device)(예를 들어, 랜덤 액세스 메모리(RAM: random access memory)이다. 메모리(110)는, 메모리 어드레스 스페이시 메모리(memory address spacey memory)(110)에서 물리적 어드레스(physical addresses)를 정의하고 인덱싱(index)하는 예를 들어 하드웨어-특정 프로토콜(hardware-specific protocols)을 사용하여, 액세스(accessed)되는 개별 데이터 스토리지 위치(individual data storage locations)(114)를 포함하며, 상이한 하드웨어 구조는 종종 이미지 데이터(102)를 메모리에 비효율적으로 저장하며, 이러한 데이터를 탐색(retrieving)하는데 다수의 클록 사이클(multiple clock cycles)을 필요로 하게 한다.
동작 시, 메모리 제어기(106)는, CPU(104)에 의한 기록 명령(write command)을 수신하는 것에 응답하여, 이미지 데이터(102)를 개별 부분들(individual portions)(114)로 분할한다. 상기 개별 부분들은 다양한 개별 스토리지 위치들(individual storage locations)에 저장될 수 있으며, 상기 다양한 개별 스토리지 위치들은, 메모리(110) 내에서 산재(scattered)될 수 있는 블록들로 그룹화될 수 있다. 스토리지 위치들은, 통상적으로, 메모리(110)의 구조, 메모리(110)에 이전에 저장된 임의의 기존 데이터(pre-existing data), 저장된 데이터의 크기(amount), 및 다른 환경들에 기초한다. 다양한 위치(114)는 각각 메모리(110)내에서 메모리 어드레스와 연관된다.
메모리(110)에 이미지 데이터(102)를 저장하는 것은, 예를 들어, 특정 바이트 크기(certain byte size)의 정수배(integer multiples)로 물리적 메모리 어드레스를 디마크(demark)하는 비교적 많은 수의 포인터(pointers)(124)의 사용을 일반적으로 필요로 한다. 각각의 포인터(114)는 메모리(110) 내에 이미지 데이터(102)의 일부를 저장하기 위한 특정 메모리 블록(124) 또는 메모리 블록(124) 내의 위치를 나타낼 수 있다. 메모리 제어기(Memory controller)(106)는 이미지(102)의 상이한 부분들에 대응하는 포인터들(124)을 메모리 위치들(memory locations)(114)에 할당하여, 이에 의해, 메모리(110) 내의 다양한 위치에 걸쳐 분산(distribute)되는 더 작은 데이터 청크(chunks of data)로 단일 이미지를 분할(divide)한다. 예를 들어, 완전한 이미지 데이터(102)가 메모리(110)에 기록되고 저장될 때까지, 제1 포인터(124)에 기초하여 제1 블록(114)이 판독되고, 제2 포인터(126)에 기초하여 제2 블록(116)이 판독되는 등과 같이 된다.
이러한 종래 기술의 메모리 구조 및 데이터 탐색 방법은, 처리 시스템을 불필요하게 느리게(slow down) 하는 대기 시간을 초래할 수 있다. 유사하게, 후속적으로 메모리(110)로부터 이미지를 액세스 및 탐색 또는 복원(restore)하는 것이 요구되면, 각각의 포인터(114)가 처리되어야 할 것이므로, 개별 블록(114)은 이미지 데이터(102)로부터 완전한 이미지를 재구성(rebuild)하기 위해 판독(read out) 및 재조합(reassemble)될 수 있다.
따라서, 데이터 레이턴시(data latency)와, 이에 따른 데이터 관리 비용 및 전력 소비를 감소시키는 효율적인 메모리 관리를 가능하게 하는 시스템 및 방법이 필요하다.
본 발명의 실시예들이 참조되며, 실시예들의 예가 첨부 도면들에 도시될 수 있다. 이러한 도면들은 제한적인 것은 아니며 예시적인 것으로 의도된다. 본 발명이 이러한 실시예들의 맥락에서 일반적으로 설명되었지만, 본 발명의 범위를 이들 특정 실시예들로 제한하도록 의도되지는 않는다는 것을 이해해야 한다.
도 1은 기술 분야에 알려진 일반적인 메모리 관리 시스템을 도시한다.
도 2는 본 개시의 다양한 실시예들에 따른, 메모리로부터 매트릭스 프로세서로 데이터를 매핑하기 위한 메모리 관리 시스템을 도시한다.
도 3은 본 개시의 다양한 실시예들에 따른 시퀀서(sequencer)를 도시한다.
도 4는 본 개시의 다양한 실시예들에 따른 메모리를 관리하기 위한 예시적인 프로세스(process)의 흐름도이다.
다음의 설명에서, 설명의 목적으로, 본 발명의 이해를 제공하기 위해 특정 세부사항들이 제시된다. 그러나, 본 발명이 이러한 세부사항 없이도 실시될 수 있다는 것은 당업자에게 명백할 것이다. 또한, 당업자는, 후술되는 본 발명의 실시예들이 프로세스, 장치, 시스템, 디바이스, 또는 유형의 컴퓨터-판독가능 매체(tangible computer- readable medium) 상의 방법과 같이 다양한 방식들로 구현될 수 있다는 것을 알 것이다.
도면에 도시된 컴포넌트(components) 또는 모듈은 본 발명의 예시적인 실시예를 예시하며, 본 발명을 모호하게 하는 것을 피하기 위한 것이다. 또한, 본 설명 전반에 걸쳐 컴포넌트들은 서브-유닛들(sub-units)을 포함할 수 있는 개별 기능 유닛들(separate functional units)로 설명될 수 있다는 것을 이해할 수 있지만, 당업자는 다양한 컴포넌트들, 또는 그 일부들이 개별 컴포넌트들로 분할될 수 있거나, 또는 (단일 시스템 또는 컴포넌트 내에 통합된 것을 포함하여) 함께 통합될 수 있다는 것을 알 것이다. 본 명세서에서 논의된 기능들(functions) 또는 동작들(operations)은 컴포넌트들로 구현될 수 있다는 것을 유의해야 한다. 컴포넌트들은 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다.
또한, 도면들 내의 컴포넌트들 또는 시스템들 사이의 연결들(connections)은 직접 연결들(direct connections)로 제한되도록 의도되지는 않는다. 오히려, 이들 컴포넌트들 사이에서의 데이터는 중간 컴포넌트에 의해 수정되거나, 재포맷(re-formatted)되거나, 또는 그렇지 않으면 변경될 수 있다. 또한, 추가적이거나 또는 더 적은 접속이 사용될 수 있다. 또한, "접속된(coupled)", "연결된(connected)" 또는 "통신가능하게 접속된(communicatively coupled)"이라는 용어는 직접 접속, 하나 이상의 중간 장치를 통한 간접(indirect) 접속, 및 무선 접속을 포함하는 것으로 이해되어야 하는 것을 유의해야 한다.
본 명세서에서 "일 실시예(one embodiment)", "바람직한 실시예(preferred embodiment)", "실시예(embodiment)", 또는 "실시예들(embodiments)"에 대한 참조는, 실시예와 관련하여 설명된 특정 특징(feature), 구조, 특성, 또는 기능(function)이 본 발명의 적어도 하나의 실시예에 포함되고, 하나 이상의 실시예일 수 있다는 것을 의미한다. 또한, 본 명세서의 다양한 곳에서 상술된 문구들(phrases)의 출현들은 반드시 모두 동일한 실시예 또는 실시예들을 지칭하는 것은 아니다.
본 명세서의 다양한 곳에서 특정 용어들을 사용하는 것은 예시를 위한 것이며, 제한하는 것으로 해석되지 않아야 한다. 서비스, 기능(function) 또는 자원(resource)은 단일 서비스, 기능 또는 자원으로 제한되지 않으며, 이들 용어의 사용은 분산(distributed) 또는 집합(aggregated)될 수 있는 관련 서비스들, 기능들 또는 자원들의 그룹화(grouping)를 지칭할 수 있다. 또한, 메모리, 데이터베이스, 정보 베이스(information base), 데이터 저장(store), 테이블, 하드웨어 등의 사용은, 정보가 입력되거나 그렇지 않으면 기록될 수 있는 시스템 컴포넌트 또는 컴포넌트들을 지칭하기 위해 본 명세서에서 사용될 수 있다.
또한, 본 명세서에 기술된 실시예들은 보안 마이크로컨트롤러들(secure microcontrollers)의 컨텍스트(context)로 주어지지만, 본 개시의 교시들이 임의의 유형의 마이크로컨트롤러로 제한되지 않고 다른 컨텍스트들 및 애플리케이션들(applications)에서 IP 보호 서비스들을 사용하기를 원하는 임의의 소프트웨어 제공자에 동등하게 아마도 관심이 있을 수 있다는 것을 당업자는 알 것이다.
본 명세서에서, 용어 "비휘발성 메모리(non-volatile memory)"는 전력이 제거된 후 그 상태를 유지하는 전기 데이터 스토리지 장치(electrical data storage device)(예를 들어, 플래시 메모리)를 지칭한다. 용어 "물리적 메모리(physical memory)"는 소프트웨어 또는 프로세서에 의해 정의되는 가상 또는 논리적 메모리와 대조적으로, 메모리 기록 및 판독을 가능하게 하는 전기 데이터 스토리지 장치를 지칭한다. "프로세서(processor)"와 "마이크로컨트롤러(microcontroller)"라는 용어는 상호교환가능하게 사용되며, 하나 이상의 데이터 처리 및/또는 제어 동작을 수행하는 전기 회로를 지칭한다. 유사하게, "버퍼(buffer)"와 "메모리(memory)"라는 용어는 물리적 어드레스에 의해 어드레스가능한(addressable) 하나 이상의 스토리지 위치를 포함할 수 있는 물리적 메모리 영역(regions physical memory)를 지칭한다. 본 명세서에서 사용되는 바와 같이, 용어 "포인터(pointer)"는 메모리 장치 내의 물리적 어드레스의 시작(beginning)을 지칭한다.
본 발명의 다양한 실시예에 따르면, 하드웨어-가속 처리 시스템은 판독 동작의 레이턴시를 감소시키기 위해 특정 패턴(particular pattern)으로 메모리 내에 데이터를 저장한다. 특정 실시예에서, 이미지 파일은 가속 프로세서(예를 들어, 매트릭스 프로세서)의 하나 이상의 입력 길이 및/또는 시스템의 다른 특성과 관련된 고정 블록 길이(fixed block lengths)로 파티셔닝(partitioned)된다. 시스템이 콘볼루션 연산들(convolution operations)을 수행하고 있다면, 이러한 고정 블록 길이는 콘볼루션 블록 크기(convolution block size), 스트라이드 길이(stride length), 채널들의 수(number of channels) 및 당업자에게 알려진 다른 콘볼루션 파라미터들(convolution parameters)과 관련될 수 있다. 데이터를 저장하는 이러한 방법은, 시스템이 감소된 수의 포인터들과 대응하는 클록 사이클들을 이용하여 메모리로부터 데이터의 블록들을 탐색하게 한다. 이상적으로, 매트릭스 프로세서로 입력될 데이터 블록(data block)은 단일 포인터(single pointer)를 사용하여 탐색된다. 그러나, 메모리 내에서 데이터가 연속적인지 여부, 매트릭스 프로세서 입력 내에 필요한 특정 데이터 등에 의존하여, 데이터를 탐색하기 위해 복수의 클록 사이클(multiple clock cycles)이 사용되는 경우가 있을 수 있다. 상기 시스텝은, 데이터에 대해 동작하는데 사용되는 상기 가속 프로세서의 특정 특성에 대해 메모리 내에서 데이터 블록의 크기 및 위치를 더 잘 정렬시킴으로써, 메모리 판독의 레이턴시를 감소시킬 수 있다.
도 2는 본 개시의 다양한 실시예들에 따라, 메모리로부터, 매트릭스 프로세서와 같은 하드웨어-가속 프로세서로 데이터를 매핑하기 위한 메모리 관리 시스템을 도시한다. 시스템(200)은 하드웨어-가속 프로세서의 하드웨어 요건들에 따라 특정 동작들을 수행하도록 설계된 특수용(special-purpose) 컴퓨터 시스템의 컴포넌트들을 나타낸다. 실시예들에서, 시스템(200)은 메모리(202), 제어 로직(208), 시퀀서(212), 포맷터(formatter)(214), 캐시(cache) 또는 버퍼(210), 및 매트릭스 프로세서(216)를 포함한다. 당업자는 매트릭스 프로세서(216)가 본 개시의 다양한 실시예들에 적용가능한 다양한 상이한 하드웨어-가속 프로세서들을 나타내는 것을 이해할 것이다.
메모리(202)는, 데이터 블록(204)을 저장하는 본 기술 분야에 알려진 임의의 유형의 메모리(예를 들어, SRAM)일 수 있다. 메모리(202)는, 제어기(controller)에 따라 데이터를 저장할 수 있다. 여기서, 데이터는, 가상 메모리 맵(virtual memory map)을 사용하여 메모리에 걸쳐 매핑될수 있다. 이러한 가상화는, 메모리(202) 내에 내부적으로 저장된 데이터를 매핑하기 위한 보다 효율적인 방식을 가능하게 한다. 시퀀서(sequencer)(212)는, 가상 메모리 맵(virtualized memory map)을 저장 및/또는 인터페이싱(interfacing)하기 위한 컴포넌트들, 블록 크기-벡터 정렬기(block size-to-vector aligner), 및 블록 카운트-데이터 구조 계산기(block count-to-data structure calculator)를 포함할 수 있으며, 도 3을 참조하여 더 상세히 논의될 것이다. 시퀀서(212)는 메모리(202), 캐시/버퍼(210) 또는 이들의 조합과 인터페이싱할 수 있다.
도 2의 시스템(200)에서 컴포넌트들 중 하나에 의해 수행되는 하나 이상의 기능들(functions)은 다른 컴포넌트들에 의해 공유되거나 수행될 수 있다는 것이 이해된다. 예를 들어, 시퀀서(212) 및 포맷터(214)의 하나 이상의 기능은 단일 컴포넌트로 통합될 수 있으며, 또는 가상 메모리 맵은 제어기(208) 및/또는 시퀀서(212)에 저장될 수 있다.
동작 시, 데이터 메모리(202)는, 그 각각이 고정된 크기를 가질 수 있고, 실시예들에서, 이미지와 연관된 2 차원(two-dimensional)(2D)또는 3 차원(three-dimensional)(3D) 데이터 구조(data structure)를 나타낼 수 있는 데이터 블록들(204)을 저장한다. 실시예들에서, 데이터 블록(204)은, 복수의 행들(a number of rows)(가상 또는 실제)에서 연속적인 데이터로 메모리(202)에 저장될 수 있으며, 어드레스 포인터(206)와 연관된 초기 메모리 어드레스(initial memory address)에서 시작한다. 데이터 블록(204)의 크기는 변할 수 있고, 프로그래밍 가능하며, 실시예들에서, 스트라이드(stride), 형상(shape)(예를 들어, 행들 및 열들), 채널들의 수 등과 같은 변환 파라미터들(conversion parameters)에 의해 결정될 수 있으며, 이는 하드웨어-가속 시스템과 관련된다.
실시예들에서, 데이터 블록들(204)이 메모리(202)에 저장되는 메모리 어드레스들은, 메모리(202)의 구조(architecture) 및 각각의 이미지의 크기에 의존할 수 있다. 예를 들어, 메모리(202)는, 정의된(예를 들어, 분산된) 메모리 위치에서 연속적인 가상 어드레스에 데이터 블록(204)(및 나아가, 이미지 데이터)을 저장하기 위해, 가상 메모리 기술을 사용할 수 있다.
실시예들에서, 예를 들어, 이미지 내의 포인트들의 집합(collection of points)을 나타내는 데이터는, 예를 들어, 이미지 데이터를 조합(assembling)하는 것을 돕기 위해, 하나 이상의 사이클들에서 메모리(202)로부터 탐색될 수 있다. 실시예들에서, 메모리(202)에서 연속적인 데이터 블록들(204)은, 예를 들어, 포인터(206)에 의해 결정된 어드레스에서 시작하는 단일 사이클에서, 한 번에 탐색될 수 있는데, 이는 시스템이 엔드 어드레스(end address)를 식별하기 위해 블록의 고정 길이들(fixed lengths)을 사용하여 연속적인 데이터 블록들을 단일 포인터로 매핑(map)할 수 있기 때문이다. 반대로, 데이터 블록(204) 또는 그 내부의 데이터가 연속적이지 않으면, 각각의 후속 사이클 동안, 다른 데이터 블록(204)으로부터 고정 크기(fixed amount)의 데이터가 탐색될 수 있는 새로운 어드레스(대응하는 포인터를 가짐)를 생성함으로써, 두 개 이상의 사이클에서 탐색될 수 있다.
데이터 블록(204)의 크기와 시작 포인트(starting point)가 알려져 있기 때문에, 예를 들어, 시퀀서(212)를 사용함으로써, 후속 데이터 블록(204)이 시작(begin) 및 종료(end)되는 위치를 계산할 수 있다. 시퀀서(212)는, 이미지의 행 및 열의 수와 데이터가 저장된 방식에 기초하여, 특정 판독 요청에 대한 엔드 포인트(end points)를 확인(ascertain)할 수 있다. 실시예들에서, 엔드 포인트들은, 예를 들어, 2D 구조(2D structure)의 행 및 열의 수와 같은 상수로부터 또는 파라미터들 중 어떤 수(any number of parameters)를 사용함으로써, 추론되거나 계산될 수 있다. 이러한 미리 결정된 데이터 스토리지 구조(data storage architecture)는, 시스템의 어떤 특성에 기초하여 메모리에 데이터가 저장되도록 하게 하므로, 보다 효율적인 적시(timely)의 탐색 절차가 구현될 수 있다.
실시예들에서, 제어 로직(208)은 메모리(202)에서 특정 어드레스를 표시하는 전용 포인터(dedicated pointer)(미도시)에 의해 각각 식별될 수 있는 고정 데이터 블록들(204)의 세트(set)를 정의할 수 있는 그러한 파라미터들의 세트를 시퀀서(212)에 제공할 수 있다. 실시예들에서, 시퀀서(212)는, 제어 로직(208)으로부터, 예를 들어, 베이스 레지스터들(base registers)에 저장될 수 있는 복수의 콘볼루션 파라미터들(a number of convolution parameters)을 포함하는 콘볼루션 명령들(convolution instructions)을 수신한다. 콘볼루션 명령들은, 필터 사이즈, 스트라이드 길이, 출력 채널들의 수(the number of outputs channels) 등과 같은 필터 파라미터들(filter parameters)을 포함할 수 있다. 실시예들에서, 시퀀서(212)는 콘볼루션 연산(convolution operation)의 입력들의 어드레스들 또는 입력들을 식별하기 위해 콘볼루션 파라미터들을 사용하고, 메모리(202)에서 대응하는 어드레스 위치들로부터 데이터를 페치(fetch)한다.
실시예에서, 포맷터(214)는, 2 차원 또는 3 차원 데이터(2D or 3D data)를, 행(row) 또는 열(column)로 표현될 수 있는 단일 벡터(single vector) 또는 스트링(string)으로 변환하고, 이에 의해, 상기 데이터를 선형화(linearizing) 또는 벡터화(vectorizing)함으로써, 메모리(202)로부터 탐색된 데이터의 일부 또는 전부를 선형화(linearize)할 수 있다. 실시예에서, 포맷터(214)는, 콘볼루션 파라미터에 따라, 매트릭스 프로세서(matrix processor)(216)의 하드웨어 요건들에 따른 적절한 포맷으로 이미지 데이터를 매핑함으로써, 매트릭스 프로세서(216)에 의한 처리를 위해 메모리(202)에서 이미지 데이터를 준비하여, 매트릭스 프로세서(216)는, 예를 들어, 출력 픽셀들을 생성하기 위해 콘볼루션 계산(convolution calculation)의 일부로 매트릭스 곱셈을 수행할 수 있다.
실시예들에서, 데이터 포맷터(216)는, 예를 들어, 상태 머신(state machine)을 통해, 중첩되고(overlapping)(즉, 동일하거나 또는 중복되는(redundant)), 주어진 콘볼루션 연산에 대해 2 회 이상 액세스되어야 하는 하나 이상의 위치에 존재할 수 있는 입력들을 식별한다.
상태 머신은, 필터 크기 및 스트라이드와 같은 필터 파라미터를 사용하여, 중첩된 데이터를 재사용 가능한(reusable) 데이터로 식별하도록 구성될 수 있으므로, 매트릭스 프로세서(216)는 메모리(202)로부터 데이터를 재액세스(re-access) 및 전송할 필요 없이 연산 대상(operands)을 재사용할 수 있다. 대신에, 실시예에서, 재사용 가능한 데이터는, 예를 들어, 캐시(210)에 저장된 로컬 복사본(local copies)으로부터 로드(load)될 수 있으며, 이에 의해, 계산 노력, 시간 및 전력 소비를 감소시킬 수 있다. 데이터가 메모리(202)로부터 탐색되면, 상기 시스템은, 매트릭스 프로세서(216) 내의 입력에 필요한 데이터를 판독하는데 사용되는 포인터의 수(the number of pointers)를 감소시킴으로써, 가능한 신속하게 이러한 데이터를 탐색하기를 시도한다.
실시예들에서, 예를 들어 각각의 콘볼루션 연산을 위해, 데이터 시퀀서(212)는, 예를 들어 도트 곱셈(dot multiplication)을 수행할 때 매트릭스 프로세서(216)의 주어진 입력 포맷을 매칭시키기 위해, 콘볼루션 연산의 각각의 사이클에서 매트릭스 프로세서(216)에 의해 예상되는 위치들(positions)에 따라 탐색된 입력들을 배열(arrange)할 수 있다. 시퀀서(212)는, 데이터를 판독하기 위해 어드레스를 생성하고, 결과를 기록하고, 콘볼루션 연산을 수행할 때 시스템(200)의 상태를 계속 추적(track)할 수 있다. 실시예들에서, 시퀀서(212)는, 이러한 정보의 일부 또는 전부를 사용하여, 메모리(202) 내의 어느 어드레스들로부터 데이터를 획득하는지와, 예를 들어 후속 콘볼루션 단계에서 매트릭스 프로세서(216)에 의해 적절하게 사용될 수 있는 방식으로 그것을 어떻게 처리할지를 결정한다. 실시예에서, 시퀀서(212)는, 주어진 입력 포맷에 따라 미리 정의된(predefined) 순서로 매트릭스 프로세서(216)와 함께 탐색 및 동기화된 이미지 데이터를 정렬(align)하는 데이터 포맷터(214)에 접속(couple)된다.
실시예들에서, 포맷터(214)는, 탐색된 데이터가 주어진 사이클에서 매트릭스 프로세서(216)를 피드(feed)하기에 충분한 데이터를 포함하는지 여부를 결정하고, 그렇지 않다면, 포맷터(214)는 매트릭스 프로세서(216)가 추가 데이터를 수신하기 위해 예를 들어, 한 사이클(one cycle) 동안 대기하도록 지시(instruct)할 수 있다. 실시예에서, 포맷터(214)는, 추가 판독 동작(additional read operation)을 수행하도록, 시퀀서(212)가 새로운 어드레스 포인터를 식별하도록 지시할 수 있어서, 매트릭스 프로세서(216)에 제공될 수 있는 추가 데이터를 획득하도록, 메모리(202)로부터 데이터의 새로운 배치(new batch)를 페치할 수 있다. 이러한 방식으로, 메모리 장치(202)는 임의의 주어진 사이클에서 단일 판독 동작을 처리할 수 있는 반면에, 시퀀서(212)는 데이터를 매트릭스 프로세서(216)에 전달하기 전에 임의의 횟수의 사이클에 걸쳐 판독 동작을 처리할 수 있다. 실시예들에서, 매트릭스 프로세서(216)에 대해 이용가능한 데이터를 만들기 전에, 포맷터(214)는, 예를 들어, 매트릭스 프로세서(216)의 하드웨어 요건들의 세트에 따라 그것을 필터링함으로써, 데이터를 처리한다. 예를 들어, 포맷터(214)는, 매트릭스 프로세서(216)의 입력에 대해 정렬되는 블록 길이를 갖는 데이터를 출력할 수 있다.
콘볼루션 애플리케이션들(convolution applications)에서, 콘볼루션의 단일 단계를 수행하도록 한 번에 하나의 명령을 전송하기 위해 호스트(예를 들어, CPU)를 대기하는 GPU 대신에, 시퀀서(212)는 전체 콘볼루션이 단일 단계에서 수행될 수 있도록 병렬 처리(parallel processing)를 위해 데이터를 정렬한다. 이러한 병렬 및 파이프라인 프로세서(paralleled and pipelined processor)에서 사용되는 데이터는, 데이터 경로의 크기뿐만 아니라 콘볼루션 연산의 특성에 기초하여 판독된다. 실시예에서, 상기 시스템은 데이터 블록들의 미리 결정된 크기 및 단일 포인터를 사용하여, 감소된 수의 클록 사이클에서 매트릭스 프로세서에 대해 정렬되는 적절한 데이터를 탐색한다. 그렇게 함으로써, 상기 시스템은 판독 요청에 대해 복수의 고정-길이 블록들 및 포인터(206)를 정렬함으로써, 탐색되는 데이터의 엔드 어드레스를 식별한다. 다시 말해, 각각의 데이터 블록을 판독하고, 다음 블록을 판독하기 위해 다음 포인터를 확인하는 등을 해야 할 필요 없이, 이미지가 판독될 수 있다.
특정 실시예들에서, 데이터 블록(206)은 메모리(202) 또는 캐시/버퍼(210)로부터 탐색되며, 특정 서브-블록들(sub-blocks)만이 포맷터(214)로의 입력을 위해 요구된다. 이러한 시나리오에서, 시퀀서(212)는 안에서 관련된 서브-블록들이 식별되는 탐색된 블록의 마스크(mask)를 생성한다. 결과적으로, 이들 서브-블록들은 데이터 블록으로부터 추출(extract)될 수 있고 포맷터(214)에 제공될 수 있다.
도 3은 본 개시의 다양한 실시예들에 따른 시퀀서를 도시한다. 시스템(300)은, 가상 메모리 맵(virtualized memory map)(302), 블록 크기-입력 길이 정렬기(block size-to-input length aligner)(304), 블록 카운트-데이터 구조 계산기(block count-to-data structure calculator)(306), 및 포인터 스토리지(pointer storage)(308)를 포함한다. 실시예들에서, 시퀀서(300)는 프로그래밍 가능할 수 있고, 본 발명의 목적을 달성하기 위해 상이한 또는 추가적인 컴포넌트들을 포함할 수 있다. 예를 들어, 시퀀서(300)는 메모리로부터 데이터를 페치하고, 예를 들어, 단일 버스 레지스터(single bus register)를 사용함으로써 데이터의 가용성을 마크(mark)하는 상태 머신(state machine)을 포함할 수 있다. 또한, 메모리 맵(memory map)(302) 및/또는 포인터 스토리지(308)는 메모리 제어기에서 구현될 수 있다.
실시예들에서, 시퀀서(300)는, 예를 들어, 콘볼루션 연산을 위해, 블록 크기-입력 길이 정렬기(304)를 사용하여, 메모리로부터, 이러한 데이터를 가속 프로세서의 입력으로 벡터화(vectorize)할 포맷터로 판독되는 데이터를 식별 및 정렬한다. 이러한 정렬은, 입력의 벡터 길이, 이전 동작들로부터 중복되는(그리고 국부적(locally)으로 캐시(cached)된 일부 경우들에서) 특정 데이터, 및 판독 요청이 적절한 데이터를 식별하는 것을 보장하는 다른 파라미터들을 고려할 수 있다. 또한, 블록 크기-입력 길이 정렬기(304)는, 이러한 판독 요청의 초기 비트(initial bit)에 대응하는 포인터를 식별할 수 있다. 그렇게 하여, 블록 크기-입력 길이 정렬기(304)는, 상기 설명과 일치하는 방식으로, 저장된 데이터에 대한 복수의 포인터를 저장하는 포인터 스토리지(308)와 통신할 수 있다.
블록 카운트-데이터 구조 계산기(306)는 판독 요청에 대응하는 엔드 어드레스를 식별한다. 그렇게 하여, 엔드 어드레스는 메모리 내에 연속적으로 저장된 블록들의 특정 길이 및 판독 요청의 길이를 사용하여 계산된다. 앞에서 설명한 바와 같이, 판독 요청이 연속적으로 저장된 데이터 블록들의 세트로 충족될 수 있다면, 상기 요청은 단일 클록 사이클(single clock cycle)을 사용하여 탐색될 수 있다. 그러나, 대응하는 데이터가 비연속 방식(non-contiguous manner)으로 저장되면, 복수의 클록 사이클(multiple clock cycles) 및 포인터가 데이터를 탐색하는데 사용된다. 블록 카운트-데이터 구조 계산기는, 적절한 블록들이 연속적인지 여부를 결정하기 위해, (시퀀서 또는 메모리 제어기 내에 위치된) 가상 메모리 맵(302)과 통신할 수 있다.
당업자는 시퀀서(300)가 별개의 장치일 수 있거나 다른 컴포넌트들과 통합될 수 있다는 것을 알 것이다. 부가적으로, 당업자는 시퀀서 내의 컴포넌트들이 메모리 제어기(208) 또는 포맷터(214)와 같은 다른 컴포넌트들에 걸쳐 분산될 수 있다는 것을 알 것이다.
도 4는 본 개시의 다양한 실시예들에 따른 메모리를 관리하기 위한 예시적인 프로세스의 흐름도이다. 단계(402)에서, 파라미터들의 세트에 기초하여, 메모리 맵에 따라, 고정 및 프로그래밍 가능한 블록 길이의 데이터 블록들이 메모리에 저장될 때, 프로세스(400)가 시작된다. 실시예들에서, 파라미터들은 콘볼루션 파라미터들, 이러한 콘볼루션 블록 크기, 스트라이드, 및 채널들의 수를 포함할 수 있으므로, 바람직한 블록 길이가 메모리에 데이터를 저장하기 위해 식별된다.
단계(404)에서, 판독 요청에 응답하여, 어드레스 포인터와 상기 요청과 관련된 데이터의 길이가 식별된다. 실시예들에서, 어드레스 포인터는 판독 요청에 대응하는 메모리 내 제1 데이터 블록의 초기 위치를 식별한다.
단계(406)에서, 블록 길이, 입력 길이, 및/또는 메모리 맵에 기초하여, 메모리로부터 탐색되는 데이터 블록들의 수(a number of data blocks)를 나타내는 블록 카운트가 판독 요청을 만족시키도록 계산된다. 전술한 바와 같이, 카운트에서 식별된 데이터 블록이 연속적으로 저장되면, 판독 요청은 단일 클록 사이클에서 실행될 수 있다. 만약 데이터 블록이 분산되면, 복수의 클록 사이클이 요구될 것이다.
마지막으로, 단계(408)에서, 데이터 블록들은 하나 이상의 사이클들에서 메모리로부터 탐색되며, 그 수는 데이터 블록들, 또는 데이터 블록들에서의 데이터가 연속적인지 여부에 의존할 수 있다.
본 발명의 실시예는, 단계들이 수행되게 하는 하나 이상의 프로세서 또는 처리 유닛에 대한 명령(instructions)으로 하나 이상의 비일시적 컴퓨터-판독가능 매체(non- transitory computer-readable media) 상에 인코딩될 수 있다. 하나 이상의 비일시적 컴퓨터-판독가능 매체는 휘발성 및 비휘발성(non-volatile) 메모리를 포함할 것이라는 것을 유의해야 한다. 하드웨어 구현 또는 소프트웨어/하드웨어 구현을 포함하여 대안적인 구현들이 가능하다는 것을 유의해야 한다. 하드웨어-구현 기능은 ASIC(들), 프로그램가능 어레이, 디지털 신호 처리 회로 등을 사용하여 실현될 수 있다. 따라서, 임의의 청구항의 "수단(means)"이라는 용어는 소프트웨어 및 하드웨어 구현 모두를 다루(cover)도록 의도된다. 유사하게, 본 명세서에서 사용되는 용어 "컴퓨터-판독가능 매체 또는 미디어(computer-readable medium or media)"는 컴퓨터-판독가능 매체 또는 매체에 구현된 명령의 프로그램을 갖는 하드웨어 및/또는 소프트웨어, 또는 이들의 조합을 포함한다. 이러한 구현 대안들을 염두에 두고, 도면들 및 첨부된 설명은 당업자가 프로그램 코드(즉, 소프트웨어)를 기록하고/기록하거나 요구되는 처리를 수행하기 위해 회로들(즉, 하드웨어)을 제조하도록 요구할 수 있는 기능적 정보를 제공한다는 것을 이해해야 한다.
본 발명의 실시예들은 다양한 컴퓨터-구현 동작들을 수행하기 위한 컴퓨터 코드를 갖는 비-일시적 유형의 컴퓨터-판독가능 매체를 갖는 컴퓨터 제품들과 더 관련될 수 있다는 것을 유의해야 한다. 매체 및 컴퓨터 코드는 본 발명의 목적을 위해 특별히 설계되고 구축(construct)될 수 있거나, 또는 관련 기술분야의 당업자에게 알려져 있거나 이용 가능한 종류의 것일 수 있다. 유형의 컴퓨터-판독가능 매체의 예는, 하드 디스크, 플로피 디스크, 및 자기 테이프와 같은 자기 매체; CD-ROM 및 홀로그래픽 장치와 같은 광학 매체; 자기-광학 매체; 및 주문형 집적 회로(ASIC), 프로그램가능 로직 장치(PLD), 플래시 메모리 장치, 및 ROM 및 RAM 장치와 같이 프로그램 코드를 저장 또는 실행하도록 특별히 구성된 하드웨어 장치를 포함하지만, 이에 제한되지는 않는다. 컴퓨터 코드의 예는, 컴파일러에 의해 생성된 것과 같은 머신 코드와, 인터프리터(interpreter)를 사용하여 컴퓨터에 의해 실행되는 상위 레벨 코드(higher level code)를 포함하는 파일을 포함한다. 본 발명의 실시예들은 처리 장치에 의해 실행되는 프로그램 모듈들에 있을 수 있는 머신-실행가능 명령들(machine-executable instructions)로 전체적으로 또는 부분적으로 구현될 수 있다. 프로그램 모듈의 예는, 라이브러리, 프로그램, 루틴, 객체, 컴포넌트, 및 데이터 구조를 포함한다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬, 원격 또는 이들 모두인 설정(settings)에 물리적으로 위치될 수 있다.
당업자는 컴퓨팅 시스템 또는 프로그래밍 언어가 본 발명의 실시에 중요하지 않다는 것을 인식할 것이다. 당업자는 또한 상술된 복수의 엘리먼트들이 물리적으로 및/또는 기능적으로 서브-모듈들로 분리될 수 있거나 또는 함께 결합될 수 있다는 것을 인식할 것이다.
아래의 청구항의 구성 요소는 다수의 종속성, 구성 및 조합을 갖는 것을 포함하여 상이하게 구성(arrange)될 수 있다. 예를 들어, 실시예들에서, 다양한 청구항들의 주제는 다른 청구항들과 결합될 수 있다.
전술한 예 및 실시예는 예시적인 것이며 본 발명의 범위를 제한하지 않는다는 것을 당업자는 이해할 것이다. 명세서의 판독 및 도면의 검토를 통해 당업자에게 명백한 모든 치환, 향상, 등가물, 조합 및 개선이 본 발명에 맞는 사상 및 범위 내에 포함되도록 의도된다.

Claims (20)

  1. 하드웨어-가속 처리 시스템(hardware-accelerated processing system) 내에서 데이터를 탐색하기 위한 방법에 있어서,
    상기 하드웨어-가속 처리 시스템의 적어도 하나의 파라미터와 관련된 정의된 절차에 따라, 메모리 내에 데이터 파일을 저장하는 단계 - 상기 데이터 파일은, 대응하는 복수의 어드레스 포인터들을 가지는 복수의 고정-길이 블록들(fixed-length blocks)로 파티셔닝(partitioned)됨 -;
    상기 복수의 고정-길이 블록들 내에서, 연속적으로(contiguously) 저장되는, 상기 복수의 고정-길이 블록들을 식별하는 메모리 맵을 생성하는 단계;
    판독 요청에 응답하여:
    하드웨어-가속 프로세서(hardware-accelerated processor)로의 입력의 길이와 관련된 데이터의 길이; 및
    상기 메모리 내에서 상기 판독 요청에 대한 제1 데이터 블록을 식별하는 어드레스 포인터(address pointer)
    를 식별하는 단계;
    상기 블록의 길이(block length), 상기 길이, 및 상기 메모리 맵 중 적어도 하나에 기초하여, 상기 판독 요청에 대해 탐색되는 데이터 블록들의 수를 나타내는 블록 카운트 및 마스크를 계산하는 단계; 및
    상기 메모리로부터 하나 이상의 데이터 블록을 탐색하기 위해 상기 어드레스 포인터를 사용하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 하드웨어-가속 프로세서는,
    매트릭스 프로세서인,
    방법.
  3. 제1항에 있어서,
    상기 하나 이상의 데이터 블록이 다차원 포맷(multi-dimensional format)이 되고 상기 입력이 1 차원이 되도록, 상기 하나 이상의 데이터 블록을 상기 하드웨어-가속 프로세서의 상기 입력에 매핑하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 고정-길이 블록은,
    상기 하드웨어-가속 프로세서의 상기 입력의 길이와 관련된,
    방법.
  5. 제1항에 있어서,
    상기 판독 요청은,
    연속적으로 저장되고 하나의 초기 어드레스 포인터(single initial address pointer)를 사용하여 판독되는 고정-길이 데이터 블록들의 제1 세트에 대응하는,
    방법.
  6. 제5항에 있어서,
    상기 판독 요청은,
    단일 클록 사이클에서 수행되는,
    방법.
  7. 제1항에 있어서,
    상기 하드웨어-가속 프로세서의 상기 길이는,
    고정-길이 데이터 블록의 정수배인,
    방법.
  8. 제1항에 있어서,
    상기 판독 요청에 대응하는 상기 복수의 고정-길이 데이터 블록들과 연관된 엔딩 어드레스(ending address)를 계산하는 단계
    를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 엔딩 어드레스는,
    상기 제1 데이터 블록의 상기 어드레스 포인터, 및 상기 고정-길이 데이터 블록의 길이를 이용하여 계산되는,
    방법.
  10. 메모리로부터 하드웨어-가속 처리 시스템으로 데이터를 매핑하기 위한 시스템에 있어서,
    상기 하드웨어-가속 처리 시스템의 적어도 하나의 파라미터와 관련된 정의된 절차에 따라 데이터 파일을 저장하는 메모리 - 상기 데이터 파일은, 대응하는 복수의 어드레스 포인터들을 가지는 복수의 고정-길이 블록들로 파티셔닝됨 -;
    상기 메모리에 접속된 제어기 - 상기 제어기는, 상기 정의된 절차에 따라 데이터를 저장하고, 상기 저장된 데이터의 가상 맵을 생성하도록 구성됨 - ;
    상기 메모리에 접속된 시퀀서
    를 포함하고,
    상기 시퀀서는,
    판독 요청에 대한 복구에 응답하여:
    하드웨어-가속 프로세서로의 입력의 길이와 관련된 데이터의 길이를 식별하고, 상기 메모리 내에서 상기 판독 요청에 대한 제1 데이터 블록을 식별하는 어드레스 포인터를 식별하는 단계;
    상기 복수의 고정-길이 블록들의 길이, 상기 어드레스 포인터, 및 메모리 맵 중 적어도 하나에 기초하여, 상기 메모리로부터 탐색되는 데이터 블록들의 수를 나타내는 블록 카운트를 계산하는 단계; 및
    상기 판독 요청에 대응하는 상기 복수의 고정-길이 데이터 블록들의 서브세트를 탐색하는 단계
    를 수행하는,
    시스템.
  11. 제10항에 있어서,
    상기 시퀀서에 접속된 포맷터
    를 더 포함하고,
    상기 포맷터는,
    상기 데이터의 길이에 기초하여, 메모리로부터 탐색된 상기 복수의 고정-길이 데이터 블록들을 상기 하드웨어-가속 프로세서의 1 차원 입력으로 매핑하는,
    시스템.
  12. 제11항에 있어서,
    상기 하드웨어-가속 프로세서는,
    매트릭스 프로세서인,
    시스템.
  13. 제10항에 있어서,
    상기 포맷터에 접속된 캐시
    를 더 포함하고,
    상기 캐시는,
    상기 하드웨어-가속 프로세서의 복수의 동작들(multiple operations)에 걸쳐 중복되는 데이터를 저장하도록 구성된,
    시스템.
  14. 제10항에 있어서,
    상기 메모리의 가상 맵은,
    상기 시퀀서 또는 상기 제어기에 저장되는,
    시스템.
  15. 제10항에 있어서,
    상기 복수의 고정-길이 데이터 블록들은,
    상기 하드웨어-가속 프로세서의 상기 입력의 길이와 관련된,
    시스템.
  16. 제10항에 있어서,
    상기 판독 요청은,
    연속적으로 저장되고 하나의 초기 어드레스 포인터를 사용하여 판독되는 상기 복수의 고정-길이 데이터 블록들의 제1 세트에 대응하는,
    시스템.
  17. 제16항에 있어서,
    상기 판독 요청은,
    단일 클록 사이클에서 수행되는,
    시스템.
  18. 제10항에 있어서,
    상기 판독 요청에 대응하는 상기 복수의 고정-길이 데이터 블록들과 연관된 엔딩 어드레스를 계산하는 단계
    를 더 포함하는 시스템.
  19. 데이터 처리를 가속화하기 위한 시스템에 있어서,
    상기 하드웨어-가속 처리 시스템의 적어도 하나의 파라미터와 관련된 정의된 절차에 따라, 복수의 데이터 파일을 저장하는 메모리;
    상기 메모리에 접속된 제어기 - 상기 제어기는, 상기 정의된 절차에 따라 데이터를 저장하고, 상기 저장된 데이터의 가상 맵을 생성하도록 구성됨 - ;
    상기 메모리에 접속된 시퀀서 - 상기 시퀀서는, 다차원 매트릭스 프로세서로의 입력이 되는 데이터 블록과 관련된 판독 요청을 생성하도록 구성되고, 상기 입력은, 1 차원이고 제1 길이를 가짐 - ;
    상기 시퀀서에 접속된 포맷터 - 상기 포맷터는, 상기 메모리로부터 탐색된 복수의 데이터 블록들을 상기 제1 길이를 가지는 1 차원 벡터로 변환함 - ; 및
    상기 다차원 매트릭스 프로세서
    를 포함하고,
    상기 다차원 매트릭스 프로세서는,
    제1 세트의 데이터 입력에 대하여 제1 방향으로 및 제2 세트의 데이터 입력에 대하여 제2 방향으로 복수의 수학적 연산들을 수행하는,
    시스템.
  20. 제19항에 있어서,
    상기 메모리는,
    상기 다차원 매트릭스 프로세서의 적어도 하나의 입력의 입력 길이와 관계가 있는 고정-길이 데이터 블록들에 복수의 데이터 블록들을 저장하는,
    시스템.

KR1020207025838A 2018-02-13 2019-02-11 로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법 KR102425596B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862630096P 2018-02-13 2018-02-13
US62/630,096 2018-02-13
US16/000,248 2018-06-05
US16/000,248 US10416899B2 (en) 2018-02-13 2018-06-05 Systems and methods for low latency hardware memory management
PCT/US2019/017472 WO2019160804A1 (en) 2018-02-13 2019-02-11 Systems and methods for low latency hardware memory management

Publications (2)

Publication Number Publication Date
KR20200118170A true KR20200118170A (ko) 2020-10-14
KR102425596B1 KR102425596B1 (ko) 2022-07-27

Family

ID=67541654

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207025838A KR102425596B1 (ko) 2018-02-13 2019-02-11 로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US10416899B2 (ko)
EP (1) EP3752912B1 (ko)
KR (1) KR102425596B1 (ko)
CN (1) CN111788552B (ko)
WO (1) WO2019160804A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11748251B2 (en) * 2021-01-08 2023-09-05 Microsoft Technology Licensing, Llc Storing tensors in memory based on depth

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980025151A (ko) * 1996-09-30 1998-07-06 김영환 선택적인 스킵을 사용한 자동동작화된 기록 데이터 전송
US6725321B1 (en) * 1999-02-17 2004-04-20 Lexar Media, Inc. Memory system
KR20130097972A (ko) * 2012-02-27 2013-09-04 삼성전자주식회사 하드웨어 가속화를 통한 대규모 데이터의 분산 처리 장치 및 방법
KR20160056881A (ko) * 2013-08-08 2016-05-20 다비드 몰로니 컴퓨터 이미징 파이프라인
KR20160084370A (ko) * 2014-12-05 2016-07-13 후아웨이 테크놀러지 컴퍼니 리미티드 컨트롤러, 플래시 메모리 장치, 데이터 블록 안정성을 확인하는 방법, 그리고 플래시 메모리 장치에 데이터를 저장하는 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05303528A (ja) * 1992-04-27 1993-11-16 Oki Electric Ind Co Ltd ライトバック式ディスクキャッシュ装置
US6601104B1 (en) * 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US20130111188A9 (en) 2003-07-24 2013-05-02 Martin Vorbach Low latency massive parallel data processing device
US7243193B2 (en) * 2004-05-27 2007-07-10 Silverbrook Research Pty Ltd Storage of program code in arbitrary locations in memory
US7596639B2 (en) * 2004-09-01 2009-09-29 Lsi Corporation Skip mask table automated context generation
US20060187031A1 (en) * 2005-02-07 2006-08-24 Impinj. Inc. Selecting RFID tags using memory-mapped parameters
US7685396B2 (en) 2007-03-05 2010-03-23 Research In Motion Limited System and method for dynamic memory allocation
US10133802B2 (en) * 2012-10-23 2018-11-20 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
US20150081967A1 (en) * 2013-09-18 2015-03-19 Hewlett-Packard Development Company, L.P. Management of storage read requests
US9383927B2 (en) * 2014-05-28 2016-07-05 SandDisk Technologies LLC Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device
US9747546B2 (en) * 2015-05-21 2017-08-29 Google Inc. Neural network processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980025151A (ko) * 1996-09-30 1998-07-06 김영환 선택적인 스킵을 사용한 자동동작화된 기록 데이터 전송
US6725321B1 (en) * 1999-02-17 2004-04-20 Lexar Media, Inc. Memory system
KR20130097972A (ko) * 2012-02-27 2013-09-04 삼성전자주식회사 하드웨어 가속화를 통한 대규모 데이터의 분산 처리 장치 및 방법
KR20160056881A (ko) * 2013-08-08 2016-05-20 다비드 몰로니 컴퓨터 이미징 파이프라인
KR20160084370A (ko) * 2014-12-05 2016-07-13 후아웨이 테크놀러지 컴퍼니 리미티드 컨트롤러, 플래시 메모리 장치, 데이터 블록 안정성을 확인하는 방법, 그리고 플래시 메모리 장치에 데이터를 저장하는 방법

Also Published As

Publication number Publication date
KR102425596B1 (ko) 2022-07-27
WO2019160804A1 (en) 2019-08-22
US10416899B2 (en) 2019-09-17
EP3752912A4 (en) 2021-11-17
EP3752912A1 (en) 2020-12-23
CN111788552B (zh) 2023-10-24
EP3752912B1 (en) 2023-09-20
US20190250830A1 (en) 2019-08-15
CN111788552A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
US11030131B2 (en) Data processing performance enhancement for neural networks using a virtualized data iterator
US9377959B2 (en) Data storage method and apparatus
US20170177597A1 (en) Biological data systems
WO2015145647A1 (ja) ストレージ装置とデータ処理方法及びストレージシステム
US10146686B2 (en) Lock free container packing
You et al. Spatial join query processing in cloud: Analyzing design choices and performance comparisons
JP2017027149A (ja) 半導体装置
US10810174B2 (en) Database management system, database server, and database management method
Adams et al. Respecting the block interface–computational storage using virtual objects
CN107256233B (zh) 一种数据存储方法和装置
Stehle et al. ParPaRaw: Massively parallel parsing of delimiter-separated raw data
KR102425596B1 (ko) 로우 레이턴시 하드웨어 메모리 관리를 위한 시스템 및 방법
JP6316503B2 (ja) 計算機システム、アクセラレータ及びデータベースの処理方法
US11030714B2 (en) Wide key hash table for a graphics processing unit
KR20230169321A (ko) 데이터 의존적이고 불규칙한 오퍼레이션들을 위한 프로그래밍 가능 가속기
CN113608724A (zh) 一种基于模型缓存实现的离线仓库实时交互方法与系统
JP2023503034A (ja) パターンベースのキャッシュブロック圧縮
KR101827395B1 (ko) 확장성 있는 gpu기반의 대용량 obj 파일 처리 방법 및 장치
CN117271440B (zh) 一种基于freeRTOS文件信息存储方法、读取方法及相关设备
US20230305970A1 (en) Streaming Transfers and Ordering Model
US20240211413A1 (en) Streaming Transfers and Ordering Model
KR102023274B1 (ko) 슬롯별 n-비트 카운터를 이용한 변형 쿠쿠 해시 알고리즘
CN118284889A (zh) 流传输和排序模型
KR20240093895A (ko) 스트리밍 전송들 및 순서화 모델
KR20210033916A (ko) 파일 시스템 디스크에서 내장된 데이터 블록 정보로부터 디렉토리/블록 할당 맵을 재구축하는 장치 및 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right