KR102287677B1 - 데이터 액세스 방법, 장치, 기기 및 저장 매체 - Google Patents

데이터 액세스 방법, 장치, 기기 및 저장 매체 Download PDF

Info

Publication number
KR102287677B1
KR102287677B1 KR1020190134312A KR20190134312A KR102287677B1 KR 102287677 B1 KR102287677 B1 KR 102287677B1 KR 1020190134312 A KR1020190134312 A KR 1020190134312A KR 20190134312 A KR20190134312 A KR 20190134312A KR 102287677 B1 KR102287677 B1 KR 102287677B1
Authority
KR
South Korea
Prior art keywords
access request
data
access
size
buffer area
Prior art date
Application number
KR1020190134312A
Other languages
English (en)
Other versions
KR20200060245A (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 KR20200060245A publication Critical patent/KR20200060245A/ko
Application granted granted Critical
Publication of KR102287677B1 publication Critical patent/KR102287677B1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/0062Bandwidth consumption reduction during 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

본 개시의 실시예에 따르면, 데이터 액세스 방법, 장치, 기기 및 저장 매체가 제공된다. 당해 방법은, 저장 기기에 대한 제1 액세스 요청과 제2 액세스 요청을 획득하는 단계; 제1 액세스 요청에 연관되는 제1 데이터를 소스 기기로부터 미리 할당된 버퍼 영역에 로딩하는 단계 - 버퍼 영역은 저장 기기의 하나의 물리적 저장 블록과 동일한 크기를 가짐 - ; 제2 액세스 요청에 연관되는 제2 데이터의 제1 크기가 버퍼 영역의 사용 가능한 공간의 제2 크기보다 작은지 여부를 결정하는 단계; 제1 크기가 제2 크기보다 작지 않다고 결정된 것에 응답하여 제2 데이터 중의 제1 부분을 결정하는 단계 - 제1 부분은 사용 가능한 공간과 동일한 크기를 가짐 - ; 및 제1 액세스 요청과 제2 액세스 요청에 연관되는 목표 기기에 제1 데이터와 제1 부분을 제공하는 단계; 를 포함한다.

Description

데이터 액세스 방법, 장치, 기기 및 저장 매체{DATA ACCESSING METHOD, APPARATUS, DEVICE, AND STORAGE MEDIUM}
본 개시의 실시예는 주로 데이터 저장 분야에 관한 것으로, 구체적으로, 데이터 액세스 방법, 장치, 기기 및 컴퓨터 판독 가능 저장 매체에 관한 것이다.
기술이 발전됨에 따라, 하드웨어/소프트웨어 통합설계는 이미 다양한 분야에 적용되기 시작하였다. 기존에 단순히 소프트웨어만 설계하거나 하드웨어만 설계하는 것과는 달리, 하드웨어/소프트웨어 통합설계는 소프트웨어의 프로그래밍 가능한 유연성에 기초하고 또한 하드웨어의 병렬 처리 및 파이프라인 처리를 이용하여 데이터 처리 효율을 향상시킬 수 있다.
하드웨어/소프트웨어 통합 시스템에는 복수의 코프로세서가 있을 수 있고 일부 코프로세서들은 작업 과정에서 동시에 하나의 동일한 저장 기기에 액세스할 수 있다. 따라서, 저장 기기의 액세스 효율을 향상시키는 것은 이미 관심의 초점으로 되어 있다.
본 개시의 예시적 실시예에 따르면, 데이터 액세스 방안이 제공된다.
본 개시의 제1 측면으로, 데이터 액세스 방법이 제공된다. 당해 방법은, 저장 기기에 대한 제1 액세스 요청과 제2 액세스 요청을 획득하는 단계; 제1 액세스 요청에 연관되는 제1 데이터를 소스 기기로부터 미리 할당된 버퍼 영역에 로딩하는 단계 - 버퍼 영역은 저장 기기의 하나의 물리적 저장 블록과 동일한 크기를 가짐 - ; 제2 액세스 요청에 연관되는 제2 데이터의 제1 크기가 버퍼 영역의 사용 가능한 공간의 제2 크기보다 작은지 여부를 결정하는 단계; 제1 크기가 제2 크기보다 작지 않다고 결정된 것에 응답하여, 제2 데이터 중의 제1 부분을 결정하는 단계-제1 부분은 사용 가능한 공간과 동일한 크기를 가짐 - ; 및 제1 액세스 요청과 제2 액세스 요청에 연관되는 목표 기기에 제1 데이터와 제1 부분을 제공하는 단계; 를 포함한다.
본 개시의 제2 측면으로, 데이터 액세스 장치가 제공된다. 당해 장치는, 저장 기기에 대한 제1 액세스 요청과 제2 액세스 요청을 획득하도록 구성되는 획득 모듈; 제1 액세스 요청에 연관되는 제1 데이터를 소스 기기로부터 미리 할당된 버퍼 영역에 로딩하도록 구성되는 제1 로딩 모듈 - 버퍼 영역은 저장 기기의 하나의 물리적 저장 블록과 동일한 크기를 가짐 - ;제2 액세스 요청에 연관되는 제2 데이터의 제1 크기가 버퍼 영역의 사용 가능한 공간의 제2 크기보다 작은지 여부를 결정하도록 구성되는 제1 결정 모듈; 제1 크기가 제2 크기보다 작지 않다고 결정된 것에 응답하여 제2 데이터 중의 제1 부분을 결정하도록 구성되는 제2 결정 모듈 - 제1 부분은 사용 가능한 공간과 동일한 크기를 가짐 - ; 및 제1 액세스 요청과 제2 액세스 요청에 연관되는 목표 기기에 제1 데이터와 제1 부분을 제공하도록 구성되는 제1 제공 모듈; 을 포함한다.
본 개시의 제3 측면으로, 기기가 제공되는바, 이는 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램을 저장하는 메모리; 를 포함하고, 하나 또는 복수의 프로그램이 하나 또는 복수의 프로세서에 의하여 실행되는 경우, 하나 또는 복수의 프로세서는 본 개시의 제1 측면에 따른 방법을 구현한다.
본 개시의 제4 측면으로, 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독 가능 저장 매체가 제공되는바, 상기 프로그램이 프로세서에 의하여 실행되는 경우, 본 개시의 제1 측면의 방법이 구현된다.
발명의 내용 부분에서 설명되는 내용은 본 개시의 실시예의 핵심적인 또는 중요한 특징을 한정하고자 하는 것이 아니고 본 개시의 범위를 한정하고자 하는 것도 아님을 이해하여야 한다. 본 개시의 기타 특징은 아래 설명에서 이해하기 수월해질 것이다.
첨부 도면을 결부하고 아래 상세한 설명을 참조하면, 본 개시의 각 실시예의 상술한 및 기타의 특징, 이점 및 측면은 더 분명해질 것이다. 첨부 도면에서, 동일한 또는 유사한 도면 부호는 동일한 또는 유사한 요소를 나타낸다.
도1은 통상의 하드웨어/소프트웨어 통합 시스템 온 칩의 개략도를 도시한다.
도2는 본 개시의 일부 실시예에 따른 저장 시스템의 개략도를 도시한다.
도3은 본 개시의 일부 실시예에 따른 데이터 액세스 방법의 흐름도를 도시한다.
도4A 내지 도4C는 본 개시의 일부 실시예에 따른 서로 다른 데이터를 결합하는 개략도를 도시한다.
도5는 본 개시의 실시예에 따른 데이터 액세스 장치의 개략적인 블록도를 도시한다.
도6은 본 개시의 복수의 실시예를 실시 가능한 컴퓨팅 기기의 블록도를 도시한다.
아래 첨부 도면을 참조하여 본 개시의 실시예에 대하여 더 상세히 설명하고자 한다. 비록 첨부 도면에서 본 개시의 일부 실시예를 나타내었지만, 본 개시는 다양한 형식으로 구현 가능한바, 여기서 서술되는 실시예에 한정되는 것으로 해석되어서는 안되며 반대로 이러한 실시예의 제공은 본 개시를 더욱 투철하게 그리고 완전하게 이해하기 위한 것임을 이해하여야 한다. 본 개시의 첨부 도면 및 실시예는 단지 예시적인 목적일 뿐, 본 개시의 보호 범위를 한정하기 위한 것이 아님을 이해하여야 한다.
본 개시의 실시예에 대한 설명에서, 용어 '포함' 및 그 유사 용어는 개방형 포함, 즉 '포함하나 이에 한정되지 않음'으로 이해되어야 한다. 용어 '~에 기초하여'는 '적어도 부분적으로 ~에 기초하여'로 이해되어야 한다. 용어 '일 실시예' 또는 '당해 실시예'는 '적어도 하나의 실시예'로 이해되어야 한다. 용어 '제1', '제2' 등은 상이한 또는 동일한 대상을 지칭할 수 있다. 아래에는 기타의 명시적인 또는 암묵적인 정의가 더 포함될 수 있다.
상기에서 언급한 바와 같이, 하드웨어/소프트웨어 통합 시스템 온 칩(SoC) 시스템에서, 저장 기기의 액세스 효율은 전체 시스템의 데이터 처리 효율에 직접 영향 주게 된다. 도1은 본 개시의 실시예에 따른 SoC시스템(100)의 개략도를 도시한다. 도1에 도시한바와 같이, SoC시스템(100)은 내장형 프로세서(110), 내장형 프로세서(110)에 연관되는 복수의 코프로세서(120-1, 120-2, 120-3 및 120-N)(코프로세서(120)로 총칭되거나 단독 지칭됨) 및 복수의 저장 기기(130-1, 130-2 및 130-M)(저장 기기(130)로 총칭되거나 단독 지칭됨)를 포함한다. 일부 실시예에서, 저장 기기(130)는 판독 전용 메모리(ROM), 프로그램 가능ROM(PROM), 전기적으로 프로그램 가능한 ROM(EPROM)또는 랜덤 액세스 메모리(RAM) 등을 포함할 수 있다.
도1에 도시한 바와 같이, 복수의 코프로세서(저장 기기(120-1), 저장 기기(120-2) 등과 같은)는 하나의 저장 기기(저장 기기(130-1)와 같은)에 연관될 수 있으므로, 코프로세서(120-1)와 코프로세서(120-2)가 저장 기기(130-1)를 동시에 액세스할 수도 있다. 따라서, 저장 기기(130)에 대한 액세스 효율을 향상시키는 것은 SoC시스템(100)에서의 핵심적인 특징으로 되어 있다.
또한, 하드웨어 설계에서, 저장 기기(130)의 최소 단위(즉 저장 기기(130) 중 하나의 물리적 저장 블록의 크기)는 통상적으로 운영 시스템이 처리 가능한 하나의 데이터의 크기보다 큰바, 이는 저장 기기(130)의 하나의 물리 주소에 복수의 데이터가 저장 가능하도록 한다. 그러나, 운영 시스템은 흔히는 하나의 데이터의 크기를 최소 작업 단위로 하는바, 이는 저장 기기(130)에서 하나의 물리 주소가 흔히는 복수의 파일 주소를 포함하게 한다. 예를 들어, 처리 정밀도가 32비트 플로트(float)인 운영 시스템에서 최소 작업 단위는 4바이트이지만 저장 기기(130)에서의 최소 단위는 예를 들어 16바이트일 수 있다.
이러한 경우, 코프로세서(120)가 저장 기기(130)를 대량으로, 연속으로 액세스하는 경우, 이는 장시간으로 저장 기기(130)의 액세스 포트를 점용하게 되고, 또한 코프로세서(120)의 매 회의 액세스는 단지 파일 시스템 중 하나의 데이터 크기(예를 들면 4바이트)에 불과할 뿐이므로, 이는 저장 기기(130)의 지원 가능한 액세스 비트 폭(16바이트)을 크게 낭비하게 되고, 따라서 저장 기기(130)의 액세스 효율의 저하를 초래한다.
본 개시의 실시예에 따르면, 데이터 액세스 방안이 제공된다. 당해 방안에서, 저장 기기에 대한 제1 액세스 요청과 제2 액세스 요청이 획득되는 경우, 저장 시스템는 저장 기기의 최소 단위와 동일한 크기의 버퍼 영역에 제1 액세스 요청에 연관되는 제1 데이터를 기록하고, 버퍼 영역의 나머지 사용 가능한 공간의 크기가 제2 액세스 요청에 연관되는 제2 데이터를 지원 가능한지 여부를 결정하고, 사용 가능한 공간이 제2 데이터를 지원하지 못하는 경우, 제1 액세스 요청과 제2 액세스 요청에 연관되는 목표 기기에 제1 데이터와 제2 데이터의 제1 부분을 제공하는바, 여기서 제1 부분은 사용 가능한 공간과 동일한 크기를 가진다. 이러한 방식에 기초하여 저장 시스템은 버퍼 영역을 통해 복수의 액세스 요청을 조합함으로써 저장 기기의 사용 가능한 비트 폭을 최대한 이용할 수 있다. 또한, 결합 과정에서, 버퍼 영역에 데이터를 한번만 로딩하면 되므로, 저장 시스템의 액세스 효율을 향상시킨다.
아래 도2 내지 도4에 결부하여 본 개시의 실시예에 따른 데이터 액세스 방안을 설명하고자 한다. 도2는 본 개시의 일부 실시예에 따른 저장 시스템(200)의 개략도를 도시한다. 도2에 도시한 바와 같이, 저장 시스템(200)은 코프로세서(210), 데이터 결합기(220) 및 저장 기기(230)를 포함한다. 일부 실시예에서, 저장 기기(230)는 판독 전용 메모리(ROM), 프로그램 가능ROM(PROM), 전기적으로 프로그램 가능한 ROM(EPROM) 또는 랜덤 액세스 메모리(RAM) 등을 포함할 수 있다. 예를 들어, 저장 기기(230)는 SoC시스템(200) 중의 정적 랜덤 액세스 메모리(SRAM)일 수 있다.
도2에 도시한 바와 같이, 코프로세서(210)는 디코더(212) 및 데이터 프로세서(214)를 포함할 수 있다. 일부 실시예에서, 코프로세서(210)는 예를 들어 내장형 프로세서로부터 액세스 명령어를 수신할 수 있다. 일부 실시예에서, 당해 액세스 명령어는 액세스가 필요한 데이터의 시작 주소, 데이터의 유형과 데이터의 길이 등을 명백히 포함할 수 있다. 당해 명령어를 수신한 후, 코프로세서(210)는 디코더(212)를 이용하여 수신된 명령어를 디코딩함으로써 명령어중의 파일 시스템 주소에 대한 액세스 요청을 저장 기기(230)의 물리 주소에 대한 복수의 액세스 요청으로 변환할 수 있다
일부 실시예에서, 데이터 결합기(220)는 복수의 액세스 요청에 대응되는 서로 다른 데이터를 결합하도록 구성될 수 있는바, 이로써 저장 시스템(200)의 효율이 향상되며, 그 구체적인 결합 과정은 아래 도3 내지 도4에 결부되어 상세히 설명될 것이다. 일부 실시예에서, 데이터 프로세서(214)는 데이터 결합기(220)에서 리턴된 데이터를 처리하도록 구성될 수 있는바, 예를 들면 집계 작업을 한다.
도3은 본 개시의 일부 실시예에 따른 데이터 액세스 방법(300)의 흐름도를 도시한다. 방법(300)은 저장 시스템(200)의 데이터 결합기(220)에 의하여 실시될 수 있다. 아래 도2에 도시한 저장 시스템(200)을 결부하여 방법(300)에 연관되는 동작을 설명하고자 한다.
단계(302)에서, 데이터 결합기(220)는 저장 기기(230)에 대한 제1 액세스 요청과 제2 액세스 요청을 획득한다. 일부 실시예에서는, 상술한 바와 같이, 코프로세서(210)는 디코더(212)를 이용하여, 수신된 명령어를 디코딩하여 이를 저장 기기(230)에 대한 복수의 액세스 요청으로 변환하고, 당해 복수의 액세스 요청을 데이터 결합기(220)에 송신할 수 있는바, 저장 기기(230)에 대한 제1 액세스 요청과 제2 액세스 요청은 동일한 시스템 운영 명령어에 연관된다.
일부 실시예에서, 제1 액세스 요청과 제2 액세스 요청은 저장 기기(230) 중의 상이한 물리 주소에 대한 판독 요청일 수 있다. 일부 실시예에서, 제1 액세스 요청과 제2 액세스 요청은 연속되는 목표 물리 주소를 가질 수 있다. 예를 들어, 제1 액세스 요청은 특정된 저장 블록(예를 들어, 16바이트)에서 앞에서 4개의 바이트를 판독 가능하고, 제2 액세스 요청은 당해 저장 블록에서 다섯 번째 내지 여덟 번째 바이트를 판독 가능하다. 일부 실시예에서, 제1 액세스 요청과 제2 액세스 요청은 비연속되는 목표 물리 주소를 가질 수도 있다. 예를 들어, 제2 액세스 요청은 제1 액세스 요청의 목표 저장 블록과 상이한 기타 저장 블록의 데이터를 판독 가능하거나, 또는 제2 액세스 요청은 제1 액세스 요청의 목표 저장 블록과 동일한 저장 블록에서 상이한 데이터를 판독 가능하다.
일부 실시예에서, 데이터 결합기(220)는 코프로세서(210)로부터 저장 기기(230) 중의 상이한 물리 주소에 대한 복수의 기록 요청을 수신할 수 있다. 저장 기기(230)에 기록되는 데이터는 연속되는 것이어야 하므로, 저장 기기(230)에 대한 복수의 기록 요청이 수신된 것에 응답하여, 데이터 결합기(220)는 복수의 기록 요청 중에서 제1 기록 요청과 제2 기록 요청을 결정할 수 있는바, 여기서 제1 기록 요청에 대응되는 저장 기기(230)에서의 목표 위치와 제2 기록 요청에 대응되는 저장 기기(230)에서의 목표 위치는 연속된다. 예를 들어, 제1 액세스 요청은 순차로 수행되는 첫 번째 기록 요청일 수 있는바, 이는 특정된 저장 블록(예를 들어 16바이트)의 앞에서 4개의 바이트에 대한 것으로, 기록의 정확한 수행을 구현하기 위해, 제2 기록 요청의 목표 물리 주소는 제1 기록 요청의 목표 주소와 연속되어야 하는바, 예를 들면 당해 저장 블록의 다섯 번째 내지 여덟 번째 바이트여야 하는 것이다.
단계(304)에서, 데이터 결합기(220)는 제1 액세스 요청에 연관되는 제1 데이터를 소스 기기로부터 미리 할당된 버퍼 영역에 로딩하고, 버퍼 영역은 저장 기기(230)의 하나의 물리적 저장 블록에 대응되는 크기를 구비한다. 일부 실시예에서, 데이터 결합기(220)는 레지스터를 적용하여 저장 기기의 최소 단위와 동일한 크기의 버퍼 영역을 구성할 수 있다. 도4는 본 개시의 실시예에 따른 서로 다른 데이터를 결합하는 개략도를 도시한다. 도4A에 도시한 바와 같이, 예를 들어, 제1 액세스 요청에 연관되는 제1 데이터(410)의 크기는 10바이트이고, 버퍼 영역(420)의 크기는 메모리(230)의 최소 단위에 정렬되는바, 크기는 16바이트이다.
일부 실시예에서, 데이터 결합기(220)는 또한 파라미터 INDEX를 기록할 수 있는바, 이는 버퍼 영역(420)에서 사용 가능한 공간의 시작 위치를 가리킨다. 일부 실시예에서는, 제1 기록의 경우, INDEX가 0으로 기본 설정되며, 버퍼 영역(320)의 전체 공간은 모두 사용 가능한 상태이다.
일부 실시예에서, 제1 액세스 요청이 판독 요청인 경우, 데이터 결합기(220)는 저장 기기(230)로부터 제1 데이터를 판독하고 제1 데이터(410)를 버퍼 영역(420)에 로딩할 수 있다. 도4B에 도시한 바와 같이, 데이터 결합기(220)는 또한 제1 데이터(410)의 크기(10바이트)에 따라 INDEX 값을 업데이트할 수 있는바, 예를 들어 INDEX는 10으로 업데이트될 수 있다.
일부 실시예에서, 제1 액세스 요청이 기록 요청인 경우, 데이터 결합기(220)는 코프로세서(210)로부터 송신되는 기록 요청에 따라 제1 액세스 요청에 연관되는 제1 데이터(410)를 획득하고, 목표 저장 블록에서의 제1 데이터(410)의 오프셋(offset)을 결정할 수 있다. 예를 들어, 만약 제1 데이터(410)가 목표 저장 블록 (16바이트)에서 다섯 번째 내지 여덟 번째 바이트라면 그 오프셋은 5이다. 제1 데이터(410)가 버퍼 영역(420)에 기록되기 전에, 데이터 결합기(220)는 당해 오프셋에 따라 INDEX 값을 업데이트할 수 있는바, 예를 들어 5로 업데이트한다. 이어서, 데이터 결합기(220)는 당해 INDEX가 가리키는 시작 위치에 따라 제1 데이터(410)를 기록할 수 있는바, 예를 들어, 제1 데이터(410)의 4개 바이트를 버퍼 영역(420)의 다섯 번째 내지 여덟 번째 바이트에 기록할 수 있다. 이어서, 도4B에 도시한 바와 같이, 데이터 결합기(220)는 또한 제1 데이터(410)의 크기(10바이트)에 따라 INDEX 값을 업데이트할 수 있는바, 예를 들면 INDEX를 15로 업데이트한다.
계속하여 도3을 참조하면, 단계(306)에서, 데이터 결합기(220)는 제2 액세스 요청에 연관되는 제2 데이터의 제1 크기가 버퍼 영역의 사용 가능한 공간의 제2 크기보다 작은지 여부를 결정한다. 일부 실시예에서, 데이터 결합기(220)는 버퍼 영역(420)의 INDEX 값 및 버퍼 영역(420)의 크기에 따라 버퍼 영역(420)의 나머지 사용 가능한 공간의 크기를 결정할 수 있다. 예를 들어, 상술한 판독 요청의 예시에서, 나머지 사용 가능한 공간의 크기는 6바이트이다. 예를 들어, 상술한 기록 요청의 예시에서, 나머지 사용 가능한 공간의 크기는 2바이트이다.
단계(306)에서 제1 크기가 제2 크기보다 작지 않은 것이 결정된 것에 응답하여, 방법(300)을 단계(308), 즉 데이터 결합기(220)는 제2 액세스 요청에 연관되는 제2 데이터의 제1 크기가 버퍼 영역의 사용 가능한 공간의 제2 크기보다 작은지 여부를 결정하는 단계로 진행한다. 도4의 예시에 있어서, 도4B에 도시한 바와 같이, 예를 들어, 제2 데이터(430)는 여전히 10바이트 크기이고, 이때 제2 데이터(430)의 크기는 버퍼 영역(420)의 사용 가능한 공간보다 크다. 아래, 판독 요청 및 기록 요청의 상황 각각에 관하여, 단계(308)의 구체적인 과정을 설명하고자 한다.
상술한 제1 액세스 요청과 제2 액세스 요청이 판독 요청인 예시를 계속하여 살펴보기로 한다. 일부 실시예에서, 예를 들어, 데이터 결합기(220)는 INDEX와 버퍼 영역(420)의 크기에 기초하여 사용 가능한 공간의 크기가 6바이트라고 결정할 수 있는바, 이는 제2 데이터(430)의 크기(예를 들면, 10바이트)보다 작다. 이어서, 데이터 결합기(220)는 사용 가능한 공간의 크기(6바이트)에 따라 제2 데이터(430)를 두 부분으로 나눌 수 있는바, 제1 부분(432)은 사용 가능한 공간과 동일한 크기(6바이트)를 가지고, 제2 데이터(430) 중의 나머지 부분은 제2 부분(4바이트)을 구성한다. 이때, 제1 데이터(410)와 제2 데이터(430)의 제1 부분(432)은 저장 기기(230)의 최소 단위(16바이트)의 크기를 구성한다.
상술한 제1 액세스 요청과 제2 액세스 요청이 기록 요청인 예시를 계속하여 살펴보기로 한다. 일부 실시예에서, 예를 들어, 데이터 결합기(220)는 INDEX와 버퍼 영역(420)의 크기에 기초하여 사용 가능한 공간의 크기는 2바이트라고 결정할 수 있는바, 이는 제2 데이터(430)의 크기(예를 들어 10바이트)보다 작다. 이어서, 데이터 결합기(220)는 사용 가능한 공간의 크기(2바이트)에 따라 제2 데이터(430)를 두 부분으로 나눌 수 있는바, 제1 부분(432)은 사용 가능한 공간과 동일한 크기(2바이트)를 가지고, 제2 데이터(430) 중의 나머지 부분은 제2 부분(8바이트)을 구성한다. 이때, 제1 데이터(410)와 제2 데이터(430)의 제1 부분(432)은 저장 기기(230)의 최소 단위(16바이트)의 크기를 구성한다.
계속하여 도3을 참조하면, 단계(310)에서, 데이터 결합기(220)는 제1 액세스 요청과 제2 액세스 요청에 연관되는 목표 기기에 제1 데이터와 제1 부분(432)을 제공한다.
상술한 제1 액세스 요청과 제2 액세스 요청이 판독 요청인 예시를 계속하여 살펴보면, 이러한 경우, 소스 기기는 메모리(230)이고, 목표 기기는 코프로세서(210)이다. 일부 실시예에서, 데이터 결합기(220)는 코프로세서(210) 중의 데이터 프로세서(214)에 버퍼 영역(420)에 저장된 제1 데이터(410) 및 제2 데이터(430)의 제1 부분(432)을 제공할 수 있다. 이러한 방식에 의하면, 파일 시스템의 최소 단위와 저장 기기(230)의 최소 단위의 비정렬 문제가 해결되고, 또한 제2 데이터(430)의 제1 부분(432)을 버퍼 영역(420)으로 판독하지 않아도 되므로, 저장 시스템의 판독 효율이 향상된다.
일부 실시예에서, 코프로세서(210)에 제1 데이터(410) 및 제2 데이터(430)의 제1 부분(432)을 제공하는 것이 완료된 후, 데이터 결합기(220)는 INDEX를 0으로 리셋함으로써, 버퍼 영역(420)의 사용 가능한 공간을 버퍼 영역(420)의 전체 공간으로 업데이트할 수 있다. 일부 실시예에서, 데이터 결합기(220)는 제2 데이터(430)의 제2 부분(434)을 버퍼 영역(420)에 기록하고, 제2 부분(434)의 크기(4바이트)에 기초하여 INDEX 값을 업데이트할 수 있는바, 예를 들면 4로 업데이트할 수 있다.
일부 실시예에서, 데이터 결합기(220)는 이어서 제1 액세스 요청과 제2 액세스 요청에 연관되는 명령어 중의 제3 액세스 요청이 수신되었는지 여부를 결정할 수 있는바, 여기서 제3 액세스 요청의 유형은 제1 액세스 요청과 제2 액세스 요청의 유형과 동일하다(당해 예시에서는 모두 판독 요청이다). 데이터 결합기(220)에 제3 액세스 요청이 수신되지 않은 것이 결정되면, 데이터 결합기(220)는 버퍼 영역(420)의 유효 데이터(예를 들어, 제2 부분(434))를 코프로세서(210)에 송신하여 당해 명령어에 대한 전부의 응답을 완료할 수 있다. 데이터 결합기(220)에 제3 액세스 요청이 수신된 것이 결정되면, 데이터 결합기(220)는 상술한 방법에 따라 계속하여 새로운 판독 요청에 대한 데이터 결합을 실행할 수 있는바, 여기서 상세한 설명은 생략하기로 한다.
일부 실시예에서, 데이터 결합기(220)는 저장 기기(230)의 목표 저장 블록에 버퍼 영역(420)에 저장된 제1 데이터(410) 및 제2 데이터(430)의 제1 부분(432)을 기록할 수 있다. 일부 실시예에서, 데이터 결합기(220)는 버퍼 영역(420)에서 유효 데이터의 영역에 따라 마스크 신호를 생성할 수 있다. 예를 들어, 상술한 예시에서, 버퍼 영역(420)에서 앞에서 4개 비트에는 유효 데이터가 없는바, 따라서 마스크 신호를 통해, 대응되는 저장 블록 중의 앞에서 4개 비트에 대하여 데이터 기록을 수행하지 않을 것을 저장 기기(230)에 통지할 수 있다. 이러한 방식에 의하면, 파일 시스템의 최소 단위와 저장 기기(230)의 최소 단위의 비정렬 문제가 해결되고, 또한 제2 데이터(430)의 제1 부분(432)을 버퍼 영역(420)에 기록하지 않아도 되므로 저장 시스템의 기록 효율이 향상된다.
상술한 제1 액세스 요청과 제2 액세스 요청이 기록 요청인 예시를 계속하여 살펴보면, 이러한 경우, 소스 기기는 코프로세서(210)이고, 목표 기기는 메모리(230)이다. 일부 실시예에서, 저장 기기(230)에 제1 데이터(410) 및 제2 데이터(430)의 제1 부분(432)을 기록하는 것이 완료된 후, 데이터 결합기(220)는 INDEX를 0으로 리셋함으로써, 버퍼 영역(420)의 사용 가능한 공간을 버퍼 영역(420)의 전체 공간으로 업데이트할 수 있다. 일부 실시예에서, 데이터 결합기(220)는 제2 데이터(430)의 제2 부분(434)을 버퍼 영역(420)에 기록하고, 제2 부분(434)의 크기(8바이트)에 기초하여 INDEX 값을 업데이트할 수 있는바, 예를 들면 8로 업데이트할 수 있다.
일부 실시예에서, 데이터 결합기(220)는 이어서 제1 액세스 요청과 제2 액세스 요청에 연관되는 명령어 중의 제3 액세스 요청이 수신되었는지 여부를 결정할 수 있는바, 여기서 제3 액세스 요청의 유형은 제1 액세스 요청과 제2 액세스 요청의 유형과 동일하다(당해 예시에서는 모두 기록 요청이다). 데이터 결합기(220)에 의하여 제3 액세스 요청이 존재하지 않은 것이 결정되면, 데이터 결합기(220)는 버퍼 영역(420)의 유효 데이터(예를 들어, 제2 부분(434))를 저장 기기(230)에 기록하여 당해 명령어에 대한 전부의 응답을 완료할 수 있다. 데이터 결합기(220)에 의하여 제3 액세스 요청이 존재한다는 것이 결정되면, 데이터 결합기(220)는 나아가 목표 주소와 제2 부분(434)의 주소가 연속되는 기록 요청이 존재하는지 여부를 결정할 수 있고, 데이터 결합기(220)에 의하여 새로운 액세스 요청이 존재한다는 것이 결정되면, 데이터 결합기(220)는 상술한 방법에 따라 계속하여 새로운 액세스 요청에 대한 데이터 결합을 수행할 수 있는바, 여기서 상세한 설명은 생략하기로 한다. 주소가 연속되는 기록 요청이 존재하지 않는다면, 데이터 결합기(220)는 버퍼 영역(420)의 유효 데이터(예를 들어, 제2 부분(434))를 저장 기기(230)에 기록하고 그 다음의 미수행된 기록 요청을 수행할 수 있다.
단계(306)에서 제1 크기가 제2 크기보다 작다고 결정된 것에 응답하여, 방법(300)을 단계(312)로 진행하는바, 즉 데이터 결합기(220)는 상기 제2 데이터를 상기 버퍼 영역의 상기 사용 가능한 공간에 기록한다. 일부 실시예에서, 예를 들어 제2 데이터(430)가 버퍼 영역(420)의 사용 가능한 공간의 크기보다 작은 경우, 데이터 결합기는 제2 데이터(430)를 버퍼 영역(420)의 사용 가능한 공간에 직접 기록하고, 제2 데이터(430)의 크기에 기초하여 INDEX 값을 업데이트할 수 있는바, 예를 들어, 제2 데이터(430)의 크기가 4바이트이고 원시 INDEX가 10이면, 업데이트 후의 INDEX는 14이다.
일부 실시예에서, 데이터 결합기(220)는 결합 가능한 새로운 액세스 요청이 있는지 여부를 판단할 수 있는바, 새로운 액세스 요청이 존재한다고 결정되는 경우, 데이터 결합기(220)는 상술한 방안에 기초하고 버퍼 영역(420)과 새로운 INDEX에 따라 데이터 결합 작업을 계속하여 수행할 수 있다. 새로운 액세스 요청이 존재하지 않는다고 결정되는 경우, 데이터 결합은 버퍼 영역(420)의 유효 데이터를 제1 액세스 요청과 제2 액세스 요청에 연관되는 목표 기기에 직접 제공함으로써 명령어에 대한 전부의 응답을 완료할 수 있다.
상술한 방안에 따르면, 본 개시의 데이터 액세스 방안은 하드웨어 주소 공간과 소프트웨어 주소 공간의 비정렬 문제를 해결함으로써, 저장 시스템의 응답 효율을 향상시킨다. 또한, 본 출원의 방안은 독립적인 데이터 결합기를 설치함으로써 당해 독립적인 데이터 결합기가 비정렬 액세스/저장을 지원하지 않는 코프로세서에 추가될 수 있도록 하여 방안의 확장성을 대폭 향상시킨다.
도5는 본 개시의 실시예에 따른 데이터 액세스 장치(500)의 블록도를 도시한다. 장치(500)는 도2의 데이터 결합기(220)에 포함되거나 데이터 결합기(220)로 구현 가능하다. 도5에 도시한 바와 같이, 장치(500)는 저장 기기에 대한 제1 액세스 요청과 제2 액세스 요청을 획득하도록 구성되는 획득 모듈(510)을 포함한다. 장치(500)는 제1 액세스 요청에 연관되는 제1 데이터를 소스 기기로부터 미리 할당된 버퍼 영역에 로딩하도록 구성되는 제1 로딩 모듈(520)을 더 포함하고, 버퍼 영역은 저장 기기의 하나의 물리적 저장 블록과 동일한 크기를 가진다. 장치(500)는 제2 액세스 요청에 연관되는 제2 데이터의 제1 크기가 버퍼 영역의 사용 가능한 공간의 제2 크기보다 작은지 여부를 결정하도록 구성되는 제1 결정 모듈(530)을 더 포함한다. 장치(500)는 나아가, 제1 크기가 제2 크기보다 작지 않다고 결정된 것에 응답하여, 제2 데이터 중의 제1 부분을 결정하도록 구성되는 제2 결정 모듈(540)을 더 포함하고, 제1 부분은 사용 가능한 공간과 동일한 크기를 가진다. 또한, 장치(500)는 제1 액세스 요청과 제2 액세스 요청에 연관되는 목표 기기에 제1 데이터와 제1 부분을 제공하도록 구성되는 제1 제공 모듈(550)을 더 포함한다.
일부 실시예에서, 장치(500)는, 목표 기기에 제1 데이터 및 제1 부분을 제공하는 것이 완료된 것에 응답하여, 버퍼 영역의 사용 가능한 공간을 버퍼 영역의 전체 공간으로 업데이트하도록 구성되는 업데이트 모듈; 및 업데이트된 사용 가능한 공간에 제2 데이터 중의 제1 부분과 상이한 제2 부분을 로딩하도록 구성되는 제2 로딩 모듈; 을 더 포함한다.
일부 실시예에서, 장치(500)는, 제1 액세스 요청과 제2 액세스 요청에 연관되는 명령어 중의 제3 액세스 요청이 수신되었는지 여부를 결정하도록 구성되는 제3 결정 모듈 - 제3 액세스 요청의 유형은 제1 액세스 요청 및 제2 액세스 요청의 유형과 동일함 - ; 및 제3 액세스 요청이 수신되지 않은 것이 결정된 것에 응답하여, 제2 부분을 목표 기기에 제공하도록 구성되는 제2 제공 모듈; 을 더 포함한다.
일부 실시예에서, 장치(500)는, 제1 크기가 제2 크기보다 작은 것에 응답하여, 제2 데이터를 버퍼 영역의 사용 가능한 공간에 로딩하도록 구성되는 제3 로딩 모듈을 더 포함한다.
일부 실시예에서, 장치(500)는, 제1 액세스 요청과 제2 액세스 요청에 연관되는 명령어 중의 제3 액세스 요청이 수신되었는지 여부를 결정하도록 구성되는 제4 결정 모듈 - 제3 액세스 요청의 유형은 제1 액세스 요청 및 제2 액세스 요청의 유형과 동일함 - ; 및 제3 액세스 요청이 수신되지 않은 것이 결정된 것에 응답하여, 제1 데이터와 제2 데이터를 목표 기기에 제공하도록 구성되는 제3 제공 모듈; 을 더 포함한다.
일부 실시예에서, 제1 액세스 요청과 제2 액세스 요청은 판독 요청이고, 소스 기기는 저장 기기이다.
일부 실시예에서, 여기서 제1 액세스 요청과 제2 액세스 요청은 기록 요청이고 목표 기기는 저장 기기이며, 제1 액세스 요청에 대응되는 저장 기기에서의 제1 목표 위치와 제2 액세스 요청에 대응되는 저장 기기에서의 제2 목표 위치는 연속된다.
도6은 본 개시의 실시예를 구현하는데 사용 가능한 예시 기기(600)의 개략적인 블록도를 도시한다. 도시한 바와 같이, 기기(600)는 중앙 처리 유닛(CPU)(601)을 포함하는바, 이는 읽기 전용 메모리(ROM)(602)에 저장된 컴퓨터 프로그램 명령어 또는 저장 유닛(608)으로부터 랜덤 액세스 메모리(RAM)(603)에 로딩된 컴퓨터 프로그램 명령에 근거하여 여러 가지 적당한 동작과 처리를 실행할 수 있다. RAM(603)에는, 또한 기기(600) 조작에 필요한 여러 가지 프로그램 및 데이터가 저장될 수 있다. CPU(601), ROM(602) 및 RAM(603)은 버스(604)를 통해 서로 연결된다. 입력/출력(I/O) 인터페이스(605)도 버스(604)에 연결된다.
기기(600) 중의 복수의 부품은 I/O 인터페이스(605)에 연결되는바, 입력 유닛(606), 예를 들어 키보드, 마우스 등; 출력 유닛(607), 예를 들어 여러 가지 유형의 디스플레이, 스피커 등; 저장 유닛(608), 예를 들어 자기 디스크, 광디스크 등; 및 통신 유닛(609), 예를 들어 네트워크 카드, 모뎀, 무선 통신 송수신기 등을 포함한다. 통신 유닛(609)은 기기(600)가 인터넷과 같은 컴퓨터 네트워크 및/또는 여러 가지 전기 통신 네트워크를 통해 기타 기기와 정보/데이터를 교환하도록 허용한다.
처리 유닛(601)은 상기에서 설명된 각각의 방법 및 처리를 실행하는바, 예를 들어 방법(300)이다. 예를 들어, 일부 실시예에서, 방법(300)은 컴퓨터 소프트웨어 프로그램으로 구현될 수 있는바, 이는 기계 판독 가능 매체, 예를 들어 저장 유닛(608)에 유형적으로(tangibly) 포함된다. 일부 실시예에서, 컴퓨터 프로그램의 일부 또는 전부가 ROM(602) 및/또는 통신 유닛(609)을 통하여 기기(600)에 로딩 및/또는 설치될 수 있다. 컴퓨터 프로그램이 RAM(603)에 로딩되어 CPU(601)에 의해 실행될 시, 전술에서 설명된 방법(300)의 하나 또는 복수의 단계를 실행할 수 있다. 대안적으로, 기타 실시예에서, CPU(601)는 기타 임의의 적당한 방식을 통해(예를 들어, 펌웨어의 도움으로) 방법(300)을 실행하도록 구성될 수 있다.
본 출원에서, 이상에서 설명된 기능은 적어도 부분적으로 하나 또는 복수의 하드웨어 논리 부품에 의해 실행될 수 있다. 예를 들어, 비제한적으로, 사용 가능한 시범 유형의 하드웨어 논리 부품은 필드 프로그램 가능 게이트 어레이(FPGA), 주문형 반도체(ASIC), 특정 용도 표준 제품(ASSP), 시스템 온 칩(SOC), 복합 프로그래머블 논리 소자(CPLD) 등을 포함한다.
본 개시의 방법을 구현하기 위한 프로그램 코드는 하나 또는 복수의 프로그래밍 언어의 임의의 조합을 적용하여 작성할 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 또는 기타 프로그램 가능 데이터 처리 장치의 프로세서 또는 제어기에 제공되어 프로그램 코드가 프로세서 또는 제어기에 의해 실행될 시 흐름도 및/또는 블록도에 규정한 기능/작업이 구현되도록 할 수 있다. 프로그램 코드는 기계에서 전부 실행되거나, 기계에서 일부 실행되거나, 독립적인 소프트웨어 패키지로서 일부는 기계에서 실행되고 일부는 원격 기계에서 실행되거나, 혹은 원격 기계 또는 서버에서 전부 실행될 수 있다.
본 개시의 전반 설명에서, 기계 판독 가능 매체는 유형의 매체일 수 있는바, 이는, 명령어 실행 시스템, 장치 또는 기기에 사용하기 위한, 또는 명령어 실행 시스템, 장치 또는 기기와 결합하여 사용하기 위한 프로그램을 포함 또는 저장할 수 있다. 기계 판독 가능 매체는 기계 판독 가능 신호 매체 또는 기계 판독 가능 저장 매체일 수 있다. 기계 판독 가능 매체는 전자의, 자성의, 광학의, 전자기의, 적외선의 또는 반도체의 시스템, 장치 또는 기기, 또는 상술한 내용의 임의의 적합한 조합을 포함할 수 있으나 이에 한정되지 않는다. 기계 판독 가능 저장 매체의 더 구체적인 예시는 하나 또는 복수의 선에 기초하는 전기 연결, 휴대형 컴퓨터 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 및 프로그램 가능 읽기 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 읽기 전용 메모리(CD-ROM), 광학 저장 기기, 자기 저장 기기, 또는 상술한 내용의 임의의 적합한 조합을 포함하게 된다.
이 외에, 비록 각 작업을 묘사함에 있어서 특정 순서를 적용하였지만, 이러한 작업이 도시된 특정 순서로 또는 순차적 순서로 실행되어야 하거나, 또는 모든 도시한 작업이 실행되어야 하는 것으로, 이로써 기대하는 결과를 취득하기 위한 것임을 이해하여야 한다. 일정한 환경에서는, 멀티태스크 및 병렬 처리가 유익할 수 있다. 마찬가지로, 비록 상기의 설명에는 약간의 구체 구현 디테일이 포함되지만, 이러한 것은 본 개시의 범위에 대한 제한으로 해석되어서는 안된다. 단독의 실시예의 전반 설명에서 설명되는 어떤 특징 또한, 조합 가능하게 하나의 구현에 구현될 수 있다. 반대로, 하나의 구현의 전반 설명에서 설명되는 여러 가지 특징도 단독으로 또는 임의의 적합한 서브조합의 방식으로 복수의 구현에 구현될 수 있다.
비록 이미 구조적 특징 및/또는 방법론적 동작에 특정된 언어를 적용하여 본 주제에 대해 설명하였지만, 첨부된 특허청구범위가 한정하는 주제는 상기에서 설명한 특정 특징 또는 동작에 한정되는 것이 아님을 이해하여야 한다. 반대로, 상기에서 설명한 특정 특징 및 동작은 단지 특허청구범위의 예시 형식을 구현하는 것일 뿐이다.

Claims (16)

  1. 데이터 액세스 방법에 있어서,
    저장 기기에 대한 제1 액세스 요청과 제2 액세스 요청을 획득하는 단계;
    상기 제1 액세스 요청에 연관되는 제1 데이터를 소스 기기로부터 미리 할당된 버퍼 영역에 로딩하는 단계 - 상기 버퍼 영역은 상기 저장 기기의 하나의 물리적 저장 블록과 동일한 크기를 가짐 - ;
    상기 제2 액세스 요청에 연관되는 제2 데이터의 제1 크기가 상기 버퍼 영역의 사용 가능한 공간의 제2 크기보다 작은지 여부를 결정하는 단계;
    상기 제1 크기가 상기 제2 크기보다 작지 않다고 결정된 것에 응답하여, 상기 제2 데이터 중의 제1 부분을 결정하는 단계 - 상기 제1 부분은 상기 사용 가능한 공간과 동일한 크기를 가짐 - ; 및
    제1 액세스 요청과 상기 제2 액세스 요청에 연관되는 목표 기기에 상기 제1 데이터와 상기 제1 부분을 제공하는 단계; 를 포함하는,
    것을 특징으로 하는 데이터 액세스 방법.
  2. 제1항에 있어서,
    상기 목표 기기에 상기 제1 데이터 및 상기 제1 부분을 제공하는 것이 완료된 것에 응답하여, 상기 버퍼 영역의 상기 사용 가능한 공간을 상기 버퍼 영역의 전체 공간으로 업데이트하는 단계; 및
    업데이트된 상기 사용 가능한 공간에 상기 제2 데이터 중 상기 제1 부분과 상이한 제2 부분을 로딩하는 단계; 를 더 포함하는,
    것을 특징으로 하는 데이터 액세스 방법.
  3. 제2항에 있어서,
    상기 제1 액세스 요청과 상기 제2 액세스 요청에 연관되는 명령어 중의 제3 액세스 요청이 수신되었는지 여부를 결정하는 단계 - 상기 제3 액세스 요청의 유형은 상기 제1 액세스 요청 및 상기 제2 액세스 요청의 유형과 동일함 - ; 및
    상기 제3 액세스 요청이 수신되지 않은 것이 결정된 것에 응답하여, 상기 제2 부분을 상기 목표 기기에 제공하는 단계; 를 더 포함하는,
    것을 특징으로 하는 데이터 액세스 방법.
  4. 제1항에 있어서,
    상기 제1 크기가 상기 제2 크기보다 작은 것에 응답하여, 상기 제2 데이터를 상기 버퍼 영역의 상기 사용 가능한 공간에 로딩하는 단계; 를 더 포함하는,
    것을 특징으로 하는 데이터 액세스 방법.
  5. 제4항에 있어서,
    상기 제1 액세스 요청과 상기 제2 액세스 요청에 연관되는 명령어 중의 제3 액세스 요청이 수신되었는지 여부를 결정하는 단계 - 상기 제3 액세스 요청의 유형은 상기 제1 액세스 요청 및 상기 제2 액세스 요청의 유형과 동일함 - ; 및
    상기 제3 액세스 요청이 수신되지 않은 것이 결정된 것에 응답하여, 상기 제1 데이터와 상기 제2 데이터를 상기 목표 기기에 제공하는 단계; 를 더 포함하는,
    것을 특징으로 하는 데이터 액세스 방법.
  6. 제1항에 있어서,
    상기 제1 액세스 요청과 상기 제2 액세스 요청은 판독 요청이고, 상기 소스 기기는 상기 저장 기기인,
    것을 특징으로 하는 데이터 액세스 방법.
  7. 제1항에 있어서,
    상기 제1 액세스 요청과 상기 제2 액세스 요청은 기록 요청이고, 상기 목표 기기는 상기 저장 기기이며, 상기 제1 액세스 요청에 대응되는 상기 저장 기기에서의 제1 목표 위치와 상기 제2 액세스 요청에 대응되는 상기 저장 기기에서의 제2 목표 위치는 연속되는,
    것을 특징으로 하는 데이터 액세스 방법.
  8. 데이터 액세스 장치에 있어서,
    저장 기기에 대한 제1 액세스 요청과 제2 액세스 요청을 획득하도록 구성되는 획득 모듈;
    상기 제1 액세스 요청에 연관되는 제1 데이터를 소스 기기로부터 미리 할당된 버퍼 영역에 로딩하도록 구성되는 제1 로딩 모듈 - 상기 버퍼 영역은 상기 저장 기기의 하나의 물리적 저장 블록과 동일한 크기를 가짐 - ;
    상기 제2 액세스 요청에 연관되는 제2 데이터의 제1 크기가 상기 버퍼 영역의 사용 가능한 공간의 제2 크기보다 작은지 여부를 결정하도록 구성되는 제1 결정 모듈;
    상기 제1 크기가 상기 제2 크기보다 작지 않다고 결정된 것에 응답하여, 상기 제2 데이터 중의 제1 부분을 결정하도록 구성되는 제2 결정 모듈 - 상기 제1 부분은 상기 사용 가능한 공간과 동일한 크기를 가짐 - ; 및
    제1 액세스 요청과 상기 제2 액세스 요청에 연관되는 목표 기기에 상기 제1 데이터와 상기 제1 부분을 제공하도록 구성되는 제1 제공 모듈; 을 포함하는,
    것을 특징으로 하는 데이터 액세스 장치.
  9. 제8항에 있어서,
    상기 목표 기기에 상기 제1 데이터 및 상기 제1 부분을 제공하는 것이 완료된 것에 응답하여, 상기 버퍼 영역의 상기 사용 가능한 공간을 상기 버퍼 영역의 전체 공간으로 업데이트하도록 구성되는 업데이트 모듈; 및
    업데이트된 상기 사용 가능한 공간에 상기 제2 데이터 중 상기 제1 부분과 상이한 제2 부분을 로딩하도록 구성되는 제2 로딩 모듈; 을 더 포함하는,
    것을 특징으로 하는 데이터 액세스 장치.
  10. 제9항에 있어서,
    상기 제1 액세스 요청과 상기 제2 액세스 요청에 연관되는 명령어 중의 제3 액세스 요청이 수신되었는지 여부를 결정하도록 구성되는 제3 결정 모듈 - 상기 제3 액세스 요청의 유형은 상기 제1 액세스 요청 및 상기 제2 액세스 요청의 유형과 동일함 - ; 및
    상기 제3 액세스 요청이 수신되지 않은 것이 결정된 것에 응답하여, 상기 제2 부분을 상기 목표 기기에 제공하도록 구성되는 제2 제공 모듈; 을 더 포함하는,
    것을 특징으로 하는 데이터 액세스 장치.
  11. 제8항에 있어서,
    상기 제1 크기가 상기 제2 크기보다 작은 것에 응답하여, 상기 제2 데이터를 상기 버퍼 영역의 상기 사용 가능한 공간에 로딩하도록 구성되는 제3 로딩 모듈을 더 포함하는,
    것을 특징으로 하는 데이터 액세스 장치.
  12. 제11항에 있어서,
    상기 제1 액세스 요청과 상기 제2 액세스 요청에 연관되는 명령어 중의 제3 액세스 요청이 수신되었는지 여부를 결정하도록 구성되는 제4 결정 모듈 - 상기 제3 액세스 요청의 유형은 상기 제1 액세스 요청 및 상기 제2 액세스 요청의 유형과 동일함 - ; 및
    상기 제3 액세스 요청이 수신되지 않은 것이 결정된 것에 응답하여, 상기 제1 데이터와 상기 제2 데이터를 상기 목표 기기에 제공하도록 구성되는 제3 제공 모듈; 을 더 포함하는,
    것을 특징으로 하는 데이터 액세스 장치.
  13. 제8항에 있어서,
    상기 제1 액세스 요청과 상기 제2 액세스 요청은 판독 요청이고, 상기 소스 기기는 상기 저장 기기인,
    것을 특징으로 하는 데이터 액세스 장치.
  14. 제8항에 있어서,
    상기 제1 액세스 요청과 상기 제2 액세스 요청은 기록 요청이고, 상기 목표 기기는 상기 저장 기기이며, 상기 제1 액세스 요청에 대응되는 상기 저장 기기에서의 제1 목표 위치와 상기 제2 액세스 요청에 대응되는 상기 저장 기기에서의 제2 목표 위치는 연속되는,
    것을 특징으로 하는 데이터 액세스 장치.
  15. 전자 기기에 있어서,
    하나 또는 복수의 프로세서; 및
    하나 또는 복수의 프로그램을 저장하는 메모리; 를 포함하고,
    상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의하여 실행되는 경우, 상기 전자 기기가 제1항 내지 제7항 중 어느 한 항의 방법을 구현하는,
    것을 특징으로 하는 전자 기기.
  16. 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 프로그램이 프로세서에 의하여 실행되는 경우, 제1항 내지 제7항 중 어느 한 항의 방법이 구현되는,
    것을 특징으로 하는 컴퓨터 판독 가능 저장 매체.
KR1020190134312A 2018-11-21 2019-10-28 데이터 액세스 방법, 장치, 기기 및 저장 매체 KR102287677B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811391728.6A CN111208933B (zh) 2018-11-21 2018-11-21 数据访问的方法、装置、设备和存储介质
CN201811391728.6 2018-11-21

Publications (2)

Publication Number Publication Date
KR20200060245A KR20200060245A (ko) 2020-05-29
KR102287677B1 true KR102287677B1 (ko) 2021-08-06

Family

ID=68581402

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190134312A KR102287677B1 (ko) 2018-11-21 2019-10-28 데이터 액세스 방법, 장치, 기기 및 저장 매체

Country Status (5)

Country Link
US (1) US11650754B2 (ko)
EP (1) EP3660651A1 (ko)
JP (1) JP7088897B2 (ko)
KR (1) KR102287677B1 (ko)
CN (1) CN111208933B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111856258B (zh) * 2020-07-24 2023-05-09 北京百度网讯科技有限公司 用于芯片的测试的方法、设备、存储介质和相应的芯片
CN112988727B (zh) * 2021-03-25 2022-09-16 北京百度网讯科技有限公司 数据标注方法、装置、设备、存储介质及计算机程序产品
CN113535092B (zh) * 2021-07-20 2024-05-17 阿里巴巴创新公司 用于减少内存元数据的存储引擎、方法和可读介质
CN115686164A (zh) * 2021-07-26 2023-02-03 瑞昱半导体股份有限公司 供电端装置、供电系统以及非暂态电脑可读取媒体
US11656797B2 (en) * 2021-07-28 2023-05-23 Western Digital Technologies, Inc. Data storage device executing runt write commands as free commands

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940007680A (ko) * 1992-09-30 1994-04-27 로버트 에이. 에셀만 메모리 할당 요구의 축소 방법 및 시스템
US8914590B2 (en) * 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US6957317B2 (en) * 2002-10-10 2005-10-18 Intel Corporation Apparatus and method for facilitating memory data access with generic read/write patterns
JP4713867B2 (ja) * 2004-09-22 2011-06-29 株式会社東芝 メモリコントローラ,メモリ装置及びメモリコントローラの制御方法
JP4418439B2 (ja) * 2006-03-07 2010-02-17 パナソニック株式会社 不揮発性記憶装置およびそのデータ書込み方法
TWI371691B (en) * 2007-12-16 2012-09-01 Infortrend Technology Inc Storage controller for handling data stream and method thereof
CN101251789A (zh) * 2008-03-28 2008-08-27 清华大学 廉价磁盘冗余阵列raid5卷快速扩容方法
US7895381B2 (en) * 2009-02-16 2011-02-22 Himax Media Solutions, Inc. Data accessing system
US9251058B2 (en) * 2010-09-28 2016-02-02 SanDisk Technologies, Inc. Servicing non-block storage requests
US9229809B2 (en) * 2011-09-11 2016-01-05 Microsoft Technology Licensing Llc Nonvolatile media journaling of verified data sets
CN103870492B (zh) * 2012-12-14 2017-08-04 腾讯科技(深圳)有限公司 一种基于键排序的数据存储方法和装置
CN103116552B (zh) * 2013-03-18 2017-03-15 华为技术有限公司 用于在分布式存储系统中分配存储空间的方法和装置
CN105095109B (zh) * 2014-05-21 2018-07-20 华为技术有限公司 缓存访问方法、缓存访问路由器和计算机系统
KR101944876B1 (ko) * 2014-11-28 2019-02-01 후아웨이 테크놀러지 컴퍼니 리미티드 파일 액세스 방법 및 장치 및 스토리지 디바이스
WO2016175028A1 (ja) * 2015-04-28 2016-11-03 日本電気株式会社 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US20160350010A1 (en) * 2015-05-31 2016-12-01 Vmware, Inc. Providing block size compatibility with a storage filter
CN106469126B (zh) * 2015-08-12 2020-07-07 北京忆恒创源科技有限公司 处理io请求的方法及其存储控制器
US10635596B2 (en) * 2015-10-02 2020-04-28 Sony Interactive Entertainment Inc. Information processing device, access controller, information processing method, and computer program for accessing memory having access units of different sizes
WO2017107162A1 (zh) * 2015-12-25 2017-06-29 研祥智能科技股份有限公司 一种异构混合内存组件、系统及存储方法
US10229051B2 (en) * 2015-12-30 2019-03-12 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
CN108833336A (zh) * 2018-04-18 2018-11-16 北京百度网讯科技有限公司 数据处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN111208933A (zh) 2020-05-29
US11650754B2 (en) 2023-05-16
KR20200060245A (ko) 2020-05-29
US20200159461A1 (en) 2020-05-21
CN111208933B (zh) 2023-06-30
EP3660651A1 (en) 2020-06-03
JP2020087470A (ja) 2020-06-04
JP7088897B2 (ja) 2022-06-21

Similar Documents

Publication Publication Date Title
KR102287677B1 (ko) 데이터 액세스 방법, 장치, 기기 및 저장 매체
US10261796B2 (en) Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory
US20180173425A1 (en) Method and apparatus for data copy
US9836397B2 (en) Direct memory access of dynamically allocated memory
US10831481B2 (en) Handling unaligned load operations in a multi-slice computer processor
US7996648B2 (en) Coupled symbiotic operating systems
US20190129740A1 (en) Base state for thin-provisioned volumes
CN111737564B (zh) 一种信息查询方法、装置、设备及介质
WO2016119597A1 (zh) Oltp集群数据库中页面查询方法及数据处理节点
US10606759B2 (en) Firmware or hardware component assist for memory mapped I/O
US9760577B2 (en) Write-behind caching in distributed file systems
US11055813B2 (en) Method, electronic device and computer program product for expanding memory of GPU
US20230185755A1 (en) Software or firmware managed hardware capability and control configuration for pcie devices
KR102471553B1 (ko) 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체
US20140149459A1 (en) Data expanse viewer for database systems
US20210141727A1 (en) Method and system with improved memory input and output speed
CN107977282B (zh) 一种SPI-Nand读取数据页的方法及装置
US11734005B2 (en) Processor with split read
CN108762666B (zh) 一种存储系统的访问方法、系统、介质及设备
US20230168977A1 (en) Apparatus and method for page allocation in many-to-one virtualization environment
US20220365712A1 (en) Method and device for accessing memory
KR20230101878A (ko) 범위 지정자에 기초한 필터링
CN114490118A (zh) 一种基于共享内存的可跨设备的传感器数据管理方法及装置

Legal Events

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