KR102545689B1 - 버퍼를 갖는 컴퓨팅 시스템 및 그것의 동작 방법 - Google Patents

버퍼를 갖는 컴퓨팅 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102545689B1
KR102545689B1 KR1020150179345A KR20150179345A KR102545689B1 KR 102545689 B1 KR102545689 B1 KR 102545689B1 KR 1020150179345 A KR1020150179345 A KR 1020150179345A KR 20150179345 A KR20150179345 A KR 20150179345A KR 102545689 B1 KR102545689 B1 KR 102545689B1
Authority
KR
South Korea
Prior art keywords
data
write
write buffer
block
buffer entry
Prior art date
Application number
KR1020150179345A
Other languages
English (en)
Other versions
KR20160081797A (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 KR20160081797A publication Critical patent/KR20160081797A/ko
Application granted granted Critical
Publication of KR102545689B1 publication Critical patent/KR102545689B1/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/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • 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
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load

Abstract

본 발명의 실시 예에 따른 컴퓨팅 시스템은 쓰기 버퍼 블록 및 메모리 컴퓨팅 블록을 포함할 수 있다. 상기 쓰기 버퍼 블록은 데이터를 스토리지 셀로 전송하기에 앞서 상기 데이터를 저장하기 위해 쓰기 버퍼 엔트리에 상기 데이터를 수신하고, 상기 쓰기 버퍼 엔트리의 버퍼엔트리 어드레스에 대한 상기 데이터의 유효성 식별을 판단하고, 상기 쓰기 버퍼 엔트리의 상기 유효성 식별에 기초하여 상기 데이터를 저장할 수 있다. 그리고 상기 메모리 컴퓨팅 블록은 상기 쓰기 버퍼 블록에 연결되고, 상기 쓰기 버퍼 블록으로부터 상기 데이터를 읽을 수 있다.

Description

버퍼를 갖는 컴퓨팅 시스템 및 그것의 동작 방법{COMPUTING SYSTEM WITH BUFFER AND METHOD OF OPERATION THEREOF}
본 발명은 컴퓨팅 시스템에 관한 것으로, 좀 더 상세하게는 버퍼 메커니즘을 갖는 컴퓨팅 시스템에 관한 것이다.
현대의 소비자, 그리고 컴퓨팅 시스템, 서버, 기기, 텔레비전, 셀룰러 폰, 자동차, 위성 및 조합 장치와 같은 산업 전기 장치(industrial electronics)는 현대의 삶을 지지하기 위해 증가하는 수준의 기능을 제공한다. 성능 요구가 소비재와 기업 또는 상품 사이에서 변할 수 있지만, 효율적인 메모리 사용과 데이터 계산을 위한 공통적인 요구가 있다.
현존하는 기술에 있어서의 연구 및 개발은 다양한 방향을 제시할 수 있다. 어떤 것은 쓰기 데이터를 곧바로 스토리지 셀로 기록한다. 다른 것은 데이터를 프로세서 내에 있는 버퍼로 제공한다. 그러나, 현존하는 기술에 있어서, 성능 저하를 초래하는 레이턴시는 디바이스를 사용하는 이익을 감소시킨다.
따라서, 효율적으로 데이터를 저장하거나 읽기 위한 버퍼 메커니즘을 갖는 컴퓨팅 시스템에 대한 요구가 있다. 계속 증가하는 상업적 경쟁력의 관점에서, 시장에서의 의미 있는 상품 차별점에 대한 증가하는 소비자 기대치 및 감소하는 기회에 따라, 이러한 문제점에서 발견되는 해답들은 점점 더 중요해지고 있다. 게다가, 비용을 감소시키고, 효율 및 성능을 향상시키고, 그리고 경쟁력을 충족시키려는 필요성은 이러한 문제점에 대한 해답을 발견하기 위한 중요한 필요성에 더 긴급함을 부가시킨다. 이러한 문제점에 대한 해결책을 찾기 위한 노력이 있었으나, 앞선 개발들은 좀 더 효율적인 해결책을 제시하지 못하여 왔다. 따라서, 이러한 문제점에 대한 해결책은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자들에게 오랫동안 피해져 왔다.
본 발명의 목적은 버퍼를 포함하는 컴퓨팅 시스템의 성능을 향상시키는 데 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 쓰기 버퍼 블록으로써, 상기 쓰기 버퍼 블록은 데이터를 스토리지 셀로 전송하기에 앞서 상기 데이터를 저장하기 위해 쓰기 버퍼 엔트리에 상기 데이터를 수신하고, 상기 쓰기 버퍼 엔트리의 버퍼엔트리 어드레스에 대한 상기 데이터의 유효성 식별을 판단하고, 상기 쓰기 버퍼 엔트리의 상기 유효성 식별에 기초하여 상기 데이터를 저장하는 것, 그리고 상기 쓰기 버퍼 블록에 연결되고, 상기 쓰기 버퍼 블록으로부터 상기 데이터를 읽는 메모리 컴퓨팅 블록을 포함할 수 있다.
실시 예로써, 상기 쓰기 버퍼 블록은 쓰기 요청 및 상기 데이터를 상기 스토리지 셀로 전송하기 위한 추측에 근거한 스토리지 쓰기 사이의 충돌 상태에 기초하여 상기 추측에 근거한 스토리지 쓰기를 실행할 수 있다.
다른 실시 예로써, 상기 쓰기 버퍼 블록은 쓰기 요청 및 상기 데이터를 상기 스토리지 셀로 전송하기 위한 추측에 근거한 스토리지 쓰기 사이의 상기 추측에 근거한 스토리지 쓰기를 획득할 수 있다.
또 다른 실시 예로써, 상기 쓰기 버퍼 블록은 뱅크 비지 플래그에 기초하여 상기 데이터를 기록할 수 있다.
또 다른 실시 예로써, 상기 쓰기 버퍼 블록은 상기 쓰기 버퍼 엔트리에 이미 저장된 상기 데이터를 겹쳐 쓰기 할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 데이터를 생성하고, 사용 한계점을 충족하거나 초과하는 쓰기 버퍼 엔트리의 개수에 기초하여 전송될 쓰기 요청을 실행하는 호스트 프로세서, 그리고 상기 호스트 프로세서에 연결되고, 상기 데이터를 메모리 블록에 있는 스토리지 셀로 전송하기에 앞서 상기 데이터를 쓰기 버퍼 블록으로 전송하기 위한 상기 쓰기 요청을 전송하는 호스트 인터페이스를 포함할 수 있다.
실시 예로써, 상기 호스트 프로세서는 상기 데이터가 뱅크 비지 플래그에 기초하여 기록될 수 있는지 여부를 판단할 수 있다.
다른 실시 예로써, 상기 호스트 프로세서는 상기 데이터가 상기 스토리지 셀의 뱅크의 이용 가능성을 판단하기 위한 뱅크 비지 플래그에 기초하여 기록될 수 있는지 여부를 판단할 수 있다.
또 다른 실시 예로써, 상기 호스트 프로세서는 뱅크 업데이트 커맨드를 이용하여 뱅크 비지 플래그를 업데이트 할 수 있다.
또 다른 실시 예로써, 상기 호스트 프로세서는 상기 스토리지 셀로 전송되는 상기 데이터를 판단하기 위해 상기 데이터에 기초하여 쓰기 버퍼 엔트리를 방출할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법은, 쓰기 버퍼 엔트리에 데이터를 수신하는 단계, 상기 쓰기 버퍼 엔트리의 버퍼 엔트리 어드레스에 대한 상기 데이터의 유효성 식별을 판단하는 단계,
상기 쓰기 버퍼 엔트리의 상기 유효성 식별에 기초하여 쓰기 버퍼 블록에 상기 데이터를 저장하는 단계, 그리고 상기 쓰기 버퍼 블록을 액세스하기 위해 상기 데이터를 읽는 단계를 포함할 수 있다.
실시 예로써, 쓰기 요청 및 추측에 근거한 스토리지 쓰기 사이의 충돌 상태에 기초하여 상기 추측에 근거한 스토리지 쓰기를 실행하는 단계를 더 포함할 수 있다.
다른 실시 예로써, 쓰기 요청 및 추측에 근거한 스토리지 쓰기 사이의 상기 추측에 근거한 스토리지 쓰기를 획득하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 뱅크 비지 플래그에 기초하여 상기 데이터를 기록하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 쓰기 버퍼엔트리에 이미 저장된 상기 데이터를 겹쳐 쓰기 하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법은, 호스트 프로세서를 이용하여 데이터를 생성하는 단계, 사용 한계점을 충족하거나 초과하는 쓰기 버퍼 엔트리의 개수에 기초하여 전송되는 쓰기 요청을 실행하는 단계, 그리고 상기 데이터를 메모리 블록에 있는 스토리지 셀로 전송하기에 앞서 상기 데이터를 쓰기 버퍼 블록으로 전송하기 위한 상기 쓰기 요청을 전송하는 단계를 포함할 수 있다.
또 다른 실시 예로써, 상기 데이터가 뱅크 비지 플래그에 기초하여 기록될 수 있는지 여부를 판단하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 데이터가 상기 스토리지 셀의 뱅크의 이용 가능성을 판단하기 위한 뱅크 비지 플래그에 기초하여 기록될 수 있는지 여부를 판단하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 뱅크 업데이트 커맨드를 이용하여 뱅크 비지 플래그를 업데이트 하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 스토리지 셀로 전송되는 상기 데이터를 판단하기 위해 상기 데이터에 기초하여 쓰기 버퍼 엔트리를 방출하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 버퍼를 포함하는 컴퓨팅 시스템의 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 버퍼 메커니즘을 갖춘 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 쓰기 흐름을 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 제어 흐름을 보여주는 도면이다.
도 4는 본 발명의 실시 예를 갖는 컴퓨팅 시스템의 적용 예를 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 동작 방법을 보여주는 순서도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다. 본 명세서에서 사용되는 "및/또는"이라는 용어는 나열된 요소들의 하나 또는 그 이상의 가능한 조합들을 포함할 것이다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 따라서, 본 명세서에서 사용된 제 1 구성요소, 구간, 층과 같은 용어는 본 발명의 사상을 벗어나지 않는 범위 내에서 제 2 구성요소, 구간, 층 등으로 사용될 수 있다.
"모듈"이라는 용어는 그 용어가 사용되는 문맥에 따라 본 발명의 실시 예에서 소프트웨어, 하드웨어 또는 그들의 조합을 포함할 수 있다. 예를 들어, 소프트웨어 모듈은 머신 코드, 펌웨어, 임베디드 코드, 및/또는 애플리케이션 소프트웨어일 수 있다. 또한, 예를 들어, 하드웨어 모듈은 회로, 프로세서(들), 컴퓨터(들), 집적 회로(들), 집적 회로 코어들, 압력 센서(들), 관성 센서(들), 미세 전자 기계 시스템(들)(micro electromechanical system; MEMS), 수동 소자, 또는 그들의 조합일 수 있다. 게다가, 만일 모듈이 장치 청구항 부분에서 사용되었다면, 모듈은 장치 청구항의 목적 및 범위를 위한 하드웨어 회로를 포함하는 것으로 여겨진다.
"아래의", "하부의", "위의", "상부의", 및 이와 유사한 용어들은 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 배치되는 경우를 모두 포함한다. 그리고, 공간적으로 상대적인 이러한 용어들은 도면에 도시된 방향에 더하여 다른 방향을 포함하는 것으로 이해되어야 한다. 예를 들어, 만일 장치가 뒤집히면, "아래의"로 설명된 구성요소는 "위의"가 될 것이다.
본 명세서에서 설명되는 용어는 단지 특정한 실시 예를 설명하기 위한 목적으로 사용되며, 그것에 한정되지 않는다. "하나의"와 같은 용어는 달리 명백하게 지칭하지 않으면 복수의 형태를 포함하는 것으로 이해되어야 한다. "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하며, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 배제하지 않는다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 실시 예에 따른 버퍼 메커니즘을 갖춘 컴퓨팅 시스템(100)을 보여준다. 컴퓨팅 시스템(100)은 호스트 디바이스(102) 및 메모리 블록(104)을 포함할 수 있다. 호스트 디바이스(102)는 메모리 블록(104)과 통신할 수 있다. 예를 들어, 호스트 디바이스(102)는 메모리 블록(104)에 데이터를 저장하기 위해 쓰기 데이터(108)를 나타내는 데이터(106)를 제공할 수 있다. 예를 들어, 호스트 디바이스(102)는 메모리 블록(104)으로부터의 출력으로써 읽기 데이터(110)를 나타내는 데이터(106)를 수신할 수 있다.
호스트 디바이스(102)는 호스트 프로세서(112)를 포함할 수 있다. 호스트 프로세서(112)는 호스트 디바이스(102)에 대한 능력(capability)을 계산할 수 있다. 예를 들어, 호스트 프로세서(112)는 데이터(106)를 생성할 수 있다. 호스트 디바이스(102)는 호스트 인터페이스(114)를 포함할 수 있다. 호스트 인터페이스(114)는 메모리 블록(104)과 통신할 수 있다. 예를 들어, 호스트 인터페이스(114)는 통신 버스(116)를 통하여 쓰기 데이터(108)를 나타내는 데이터(106)를 메모리 블록(104)으로 전송할 수 있다. 호스트 인터페이스(114)는, 호스트 디바이스(102)를 위해 메모리 블록(104)에 의해 생성된, 읽기 데이터(110)와 같은, 리턴 값(return value)을 수신할 수 있다.
통신 버스(116)는 호스트 디바이스(102)와 메모리 블록(104) 사이에서의 통신을 제공할 수 있다. 예를 들어, 통신 버스(116)는 어드레스 버스, 데이터 버스, 컨트롤 버스, 또는 이들의 조합을 나타낼 수 있다. 예를 들어, 통신 버스(116)는 RAM (random access memory) 버스, PCI (peripheral component interconnect) 버스, AGP (accelerated graphics port) 버스, 다양한 다른 버스들, 또는 이들이 조합을 나타낼 수 있다. 다른 예를 들어, 통신 버스(116)는 ISA (Industry Standard Architecture) 버스, MCA (Micro Channel Architecture) 버스, ESA (Extended Industry Standard Architecture) 버스, 또는 이들의 조합을 포함할 수 있다.
메모리 블록(104)은 데이터(106)에 대한 액세스를 제공할 수 있고, 데이터(106)를 저장할 수 있다. 메모리 블록(104)은 컴퓨팅 시스템(100)으로의 컴퓨팅 리소스(computational resource)를 제공할 수 있다. 메모리 블록(104)은 논리 게이트 또는 회로 (아날로그 또는 디지털)와 같은, 하드웨어로 구현될 수 있다. 예를 들어, 메모리 블록(104)은 하드웨어 FSM (finite state machine), 조합 논리(combinatorial logic), 또는 이들의 조합으로 구현될 수 있다.
메모리 블록(104)은 RAM 디바이스 또는 코어(core)를 나타낼 수 있다. 코어로써, 메모리 블록(104)은 (집적 회로 디바이스, 프로세서, ASSP (application specific standard product), ASIC (application specific integrated circuit), 시스템 온 칩, 또는 이들의 조합과 같은) 큰 디바이스로 집적될 수 있다. 메모리 블록(104)은 DRAM (dynamic random access memory)과 같은, 휘발성 메모리를 포함할 수 있다. 메모리 블록(104)은 고체 상태 플래시 메모리(solid state flash memory), PRAM (phase-change RAM), MRAM (magnetoresistive RAM), STT-MRAM (spin-transfer torque MRAM), ReRAM (resistive RAM) 등과 같은, 불휘발성 메모리를 포함할 수 있다. 예를 들어, 메모리 블록(104)은 HMC (hybrid memory cube), HBM (hybrid bandwidth memory), 또는 이들의 조합을 나타낼 수 있다.
메모리 블록(104)은 메모리 인터페이스(118), 메모리 컴퓨팅 블록(120), 쓰기 버퍼 블록(122), 및 스토리지 셀(124)을 포함할 수 있다. 메모리 인터페이스(118)는 메모리 블록(104)에 대한 입/출력 기능을 제공할 수 있다. 메모리 컴퓨팅 블록(120)은 메모리 블록에 대한 컴퓨팅 능력(compute capability)을 제공할 수 있다. 메모리 컴퓨팅 블록(120)은 프로세서, 임베디드 프로세서, 마이크로 프로세서, 하드웨어 컨트롤 로직, 하드웨어 FSM (finite state machine), DSP (digital signal processor), FPGA (field-programmable gate array, 또는 이들의 조합일 수 있다. 쓰기 버퍼 블록(122)은 스토리지 셀(124)로의 쓰기에 앞서 데이터(106)를 임시로 저장할 수 있다. 쓰기 버퍼 블록(122)에 관한 상세한 설명은 후술하기로 한다.
스토리지 셀(124)은 메모리 블록(104)에 데이터(106)를 저장할 수 있다. 스토리지 셀(124)은 뱅크(126)를 포함할 수 있다. 뱅크(126)는 스토리지의 논리적 또는 물리적 단위일 수 있다. 예를 들어, 뱅크(126)는 컬럼(column) 또는 로우(row)에서 조직된 구성(configuration)을 포함할 수 있다.
메모리 인터페이스(118)는 호스트 디바이스(102)로부터 통신 버스(116)를 통하여 입력으로써 데이터(106)를 수신할 수 있다. 메모리 인터페이스(118)는 호스트 디바이스(102)로 통신 버스(116)를 통하여 출력으로써 데이터(106)를 전송할 수 있다.
메모리 인터페이스(118)는, 메모리 인터페이스(118)로부터 쓰기 버퍼 블록(122)까지 화살표로 나타난 것과 같이, 데이터(106)를 쓰기 버퍼 블록(122)으로 전송할 수 있다. 메모리 인터페이스(118)는 메모리 컴퓨팅 블록(120)으로부터 읽기 데이터(110)를 수신하기 위해 통신할 수 있다.
메모리 인터페이스(118)는 다양한 방법으로 구현될 수 있다. 예를 들어, 메모리 인터페이스(118)는 (전기적 인터페이스 또는 광학적 인터페이스 또는 어쿠스틱 인터페이스와 같은) 물리적 계층 지원(physical layer support)을 제공할 수 있다. 메모리 인터페이스(118)는 (전기적, 광학적, 또는 어쿠스틱 타이밍과 같은) 프로토콜 서포트(protocol support)를 제공할 수 있다. 메모리 인터페이스(118)는 도 2에 도시될 것과 같이, 수신된 정보의 일부의 처리, 또는 출력으로써 전송되는 포맷 정보를 제공할 수 있다.
쓰기 버퍼 블록(122)은 메모리 블록(104) 내에 임베디드 될 수 있다. 예를 들어, 쓰기 버퍼 블록(122)은 메모리 인터페이스(118)로부터 쓰기 데이터(108)를 수신할 수 있다. 그 후, 쓰기 버퍼 블록(122)은 쓰기 데이터(106)를 메모리 컴퓨팅 블록(120), 스토리지 셀(124)에 기록할 수 있다. 좀 더 상세한 예로써, 쓰기 버퍼 블록(122)으로부터 메모리 컴퓨팅 블록(120) 및 스토리지 셀(124)까지의 점선으로된 화살표는 전송되는 데이터(106)를 나타낼 수 있다. 쓰기 버퍼 블록(122)에 관한 상세한 설명은 후술 될 것이다.
메모리 컴퓨팅 블록(120)은 메모리 블록(104) 내에 임베디드 될 수 있다. 예를 들어, 메모리 컴퓨팅 블록(120)은 스토리지 셀(124)로부터 메모리 컴퓨팅 블록(120)까지의 화살표로 도시된 것과 같이, 스토리지 셀(124)로부터 읽기 데이터(110)를 수신할 수 있다. 메모리 컴퓨팅 블록(120)은 쓰기 버퍼 블록(122)으로부터의 점선으로 된 화살표로 도시된 것과 같이, 쓰기 버퍼 블록(122)으로부터의 읽기 데이터(110)를 수신할 수 있다.
메모리 컴퓨팅 블록(120)은, 쓰기 버퍼 블록(122)에서 수행되는 데이터(106)에 의해, 화살표로 나타난 바와 같이, 데이터(106)를 메모리 인터페이스(118)로 전송하는 타이밍을 제어할 수 있다. 좀 더 상세한 예로써, 쓰기 버퍼 블록(122)으로부터의 읽기 데이터(110)는 스토리지 셀(124)로부터의 읽기 데이터(110)보다 더 빨리 획득될 수 있다. 만일 메모리 블록(104)이 동기 인터페이스(synchronous interface)를 포함한다면, 메모리 컴퓨팅 블록(120)은 쓰기 버퍼 블록(122)으로부터의 읽기 데이터(110)를 보유하거나 머무르게 하여(hold or stage), 스토리지 셀(124)로부터의 읽기 데이터(110)에 맞추어 조정할 수 있다. 좀 더 상세한 예로써, 만일 메모리 인터페이스(118)가, 요청(128)을 수신한 후 데이터(106)가 고정된 양의 딜레이로 반환되는 동기식이라면, 메모리 컴퓨팅 블록(120)은 쓰기 버퍼 블록(122)으로부터 반환된 읽기 데이터(110)를 보유하여(stage), 일반 데이터 반환 경로(normal data return path)의 타이밍을 일치시키기 위해 스토리지 셀(124)로부터 반환된 읽기 데이터(110)에 맞추어 조정할 수 있다.
요청(128)은 출력을 구하는 커맨드를 나타낼 수 있다. 예를 들어, 요청(128)은 호스트 프로세서(112)에 의해 전송된 쓰기 요청(130), 읽기 요청(132), 또는 이들의 조합을 포함할 수 있다. 쓰기 요청(130)은 데이터(106)를 스토리지 셀(124), 쓰기 버퍼 블록(122), 또는 이들의 조합을 전송하기 위한 커맨드를 나타낼 수 있다. 쓰기 요청(130)에 관한 상세한 설명은 후술하기로 한다.
읽기 요청(132)은 스토리지 셀(124), 쓰기 버퍼 블록(122), 또는 이들의 조합으로부터 데이터(106)를 얻기 위한 켜맨드를 나타낼 수 있다. 좀 더 상세한 예로써, 만일 읽기 요청(132)에 의해 요청된 데이터(106)가 쓰기 버퍼 블록(122)에 존재한다면, 쓰기 버퍼 블록(122)으로부터의 데이터(106)는, 스토리지 셀(124)로부터의 데이터(106) 대신에, 쓰기 버퍼 블록(122)으로부터 메모리 컴퓨팅 블록(120)까지의 점선 화살표에 의해 도시된 것과 같이 반환될 수 있다.
도 2는 본 발명의 실시 예에 따른 쓰기 흐름을 보여주는 도면이다. 쓰기 버퍼 블록(122)은 SRAM (static random access memory) 또는 다른 불휘발성 메모리를 나타낼 수 있다. 쓰기 버퍼 블록(122)은 복수의 쓰기 버퍼 엔트리(202)를 보유할 수 있다. 쓰기 버퍼 엔트리(202)는 쓰기 버퍼 블록(122)을 위한 데이터 엔트리 슬롯이다. 예를 들어, 쓰기 버퍼 엔트리(202)는 DRAM을 나타내는 도 1의 메모리 블록(104)으로의 도 1의 쓰기 데이터(108)의 폭(width)과 동일하거나 더 큰 폭을 가질 수 있다.
쓰기 버퍼 엔트리(202)는 데이터(106)를 체계화하기 위해 복수의 엔트리 필드(204)를 포함할 수 있다. 엔트리 필드(204)는 유효성 식별(validity identification)(206), 버퍼 엔트리 어드레스(208), 데이터(106), 또는 이들의 조합을 포함할 수 있다. 버퍼 엔트리 어드레스(208)는 데이터를 쓰기 버퍼 블록(122)에 위치시키기 위한 정보이다. 데이터(106)를 위한 엔트리 필드(204)는 에러 정정 코드를 포함할 수 있다.
유효성 식별(206)은 메모리 블록(104)으로 기록될 가능성이 있는 데이터(106)를 나타낸다. 유효성 식별(206)은 데이터(106)에 대한 엔트리 필드(204) 내에 유효한 검사 합(valid checksum), 신드롬, 또는 이들의 조합을 포함할 수 있다.
쓰기 데이터(108)의 각각의 예는 유효성 식별(206)을 가질 수 있다. 유효성 식별(206)은 하나의 비트 또는 복수의 비트로 나타낼 수 있다. 좀 더 상세한 예로써, 만일 쓰기 버퍼 엔트리(202)의 폭이 쓰기 데이터(108)의 폭보다 넓다면, 유효성 식별(206)은 복수의 비트에 나타낼 수 있다.
리셋 시간에, 유효성 식별(206)이 클리어(clear) 될 수 있다. 좀 더 상세한 예로써, 리셋 시간은 쓰기 버퍼 블록(122)이 새로운 데이터(106)를 위해 이용 가능한 타이밍을 나타낼 수 있다.
버퍼 엔트리 어드레스(208)는 도 1의 타깃, 랭크, 뱅크, 로우, 또는 컬럼과 같은 정보를 포함할 수 있다. 쓰기 버퍼 엔트리(202) 각각은 버퍼 엔트리 어드레스(208)에 의해 식별될 수 있다. 예를 들어, 쓰기 버퍼 엔트리(202)는, 만일 쓰기 버퍼 엔트리(202)가 쓰기 데이터(108)와 같은 폭을 갖는다면, 쓰기 데이터(108)에 대한 쓰기 어드레스를 나타낼 수 있다.
도 1의 호스트 프로세서(112)는 쓰기 버퍼 블록(122)으로 전송된 쓰기 요청(130)이 개수를 제어하여, 너무 많은 쓰기 요청(130)과 함께 초과하는 것으로부터 쓰기 버퍼 블록(122)을 방지할 수 있다. 좀 더 상세한 예로써, 메모리 블록(104)은 사용 한계점(usage threshold)(210)과 통신하여 버퍼 엔트리(202)의 점유를 지시할 수 있다. 사용 한계점(210)은, 쓰기 요청(130)의 개수를 조절(throttle)하기 위해 쓰기 버퍼 블록(122)이 보유할 수 있는 쓰기 버퍼 엔트리(202)의 최대 개수이다.
예를 들어, 도 2의 유효성 식별을 갖는 사용된 쓰기 버퍼 엔트리(202)의 개수는 사용 한계점(210)을 충족하거나 또는 초과할 수 있다. 그 결과, 메모리 블록(104)은 호스트 프로세서(112)와 통신하여, 쓰기 버퍼 엔트리(202)의 개수가 사용 한계점(210) 미만으로 될 때까지, 메모리 블록(104)으로의 쓰기 요청(130)을 중지하거나 제한할 수 있다. 좀 더 상세한 예로써, 호스트 프로세서(112)는 메모리 블록(104), 쓰기 버퍼 블록(122), 또는 이들의 조합으로 현재 만들어진 도 1의 계류중인 요청(128)을 인식할 수 있다. 그 결과, 호스트 프로세서(112)는 데이터(106)를 전송하기 위해 이용 가능한 쓰기 버퍼 엔트리(202)를 인식할 수 있다. 상세한 것은 후술 될 것이다.
도 1에 메모리 인터페이스(118)로부터 쓰기 버퍼 블록(122)으로의 화살표에 의해 도시된 바와 같이, 쓰기 데이터(108)는, 도 1의 스토리지 셀(124)로 기록되기에 앞서, 쓰기 버퍼 블록(122)을 통과할 수 있다. 좀 더 상세한 예로써, 만일 쓰기 버퍼 블록(122)이 SRAM을 나타낸다면, 데이터(106)는 행해질 쓰기 동작을 보고하기 위해 즉시 기록될 수 있다. 예를 들어, 즉시 기록하는 것은 근본적으로 십억 분의 일 초(zero nanosecond)를 나타낼 수 있다.
데이터 쓰기 레이턴시를 최소화함으로써, 쓰기 버퍼 블록(122)으로 기록될 쓰기 데이터(106)가 컴퓨팅 시스템(100)의 동작을 향상시킬 수 있다는 것이 설명되었다. 데이터(106)는 쓰기 버퍼 블록(122)으로 즉시 기록되기 때문에, 쓰기 회복 시간(write recovery time; tWR)은 근본적으로 0까지 감소할 수 있고, 따라서 쓰기 동작이 향상될 수 있다. 그 결과, 호스트 디바이스(102)는 쓰기 레이턴시에 의한 지연 없이 동작을 계속할 수 있다.
데이터(106)가 쓰기 버퍼 엔트리(202) 없이 이용 가능하지 않은 때와 비교하여, 호스트 디바이스(102)는 레이턴시 없이 기록될 동일한 데이터의 읽기 동작을 수행할 수 있다는 것이 설명되었다. 쓰기 버퍼 블록(122)은 도 1의 메모리 컴퓨팅 블록(120)을 할당하여 스토리지 셀(124) 대신에 쓰기 버퍼 블록(122)으로부터 데이터(106)를 더 빨리 액세스함으로써, 동일한 데이터(106)에 대한 읽기 턴어라운드 시간(turnaround time)을 향상시킬 수 있다.
좀 더 상세한 예로써, 도 1의 메모리 블록(104)이 도 1의 호스트 디바이스(102)로부터 쓰기 요청(130)을 수신할 때, 메모리 블록(104)은 쓰기 버퍼 블록(122)을 검색(look up)하여, 데이터(106)의 유효성 식별(206)이 버퍼 엔트리 어드레스(208)에 대한 "세트"를 나타내는지 여부를 판단할 수 있다. 유효성 식별(206)은 데이터(106)가 쓰기 버퍼 엔트리(202)에 이미 저장되었는지 여부를 나타낼 수 있다.
만일 데이터(106)에 대한 쓰기 버퍼 엔트리(202)가 이미 있다면, 이전의 쓰기 요청(130)은 데이터(106)에 한 쓰기 버퍼 엔트리(202)를 이미 만들었을 것이다. 그 결과, 유효성 식별(206)은 "세트"를 나타낼 수 있다. 새로운 또는 그 다음의 쓰기 요청(130)은 동일한 쓰기 버퍼 엔트리(202)를 재사용할 것이다. 그러나, 새로운 또는 그 다음의 쓰기 요청(130)은 새로운 쓰기 요청(130)으로부터의 데이터(106)를 갖는 쓰기 버퍼 엔트리(202)에 이미 있는 데이터(106)를 겹쳐 쓰기(overwrite) 할 것이다.
만일 데이터(106)에 대한 쓰기 버퍼 엔트리(202)가 없다면, 유효성 식별(206)은 "낫 세트(not set)"를 나타낼 것이고, 쓰기 버퍼 블록(122)은 데이터(106)를 저장하기 위해 다른 버퍼 엔트리 어드레스(208)를 갖는 새로운 비어있는 쓰기 버퍼 엔트리(202) 선택할 수 있다. 유효성 식별(206)은 쓰기 버퍼 블록(122)으로부터 기록되거나, 읽혀지기 위해 세팅될 수 있다.
예를 들어, 0의 tWR에 기초하여, 도 1의 호스트 프로세서(112)는 쓰기 회복 시간 제약을 갖지 않을 수 있다. 좀 더 상세한 예로써, 호스트 프로세서(112)는 도 1의 읽기 요청(132) 또는 쓰기 요청(130)을 포함하는 다른 동작들을 동일한 쓰기 버퍼 엔트리(202) 또는 메모리 블록(104)으로 이슈할 수 있다.
도 1의 쓰기 버퍼 블록(122)으로부터 스토리지 셀(124)로의 점선으로 표시된 화살표에 의해 도시된 바와 같이, 쓰기 데이터(108)는 쓰기 버퍼 블록(122)에 저장된 후, 스토리지 셀(124)로 기록될 수 있다. 호스트 프로세서(112) 또는 메모리 컴퓨팅 블록(120)은 쓰기 데이터(108)가 뱅크 비지 플래그(bank busy flag)(214)에 기초하여 스토리지 셀(124)로 기록되는지 여부를 판단할 수 있다.
예를 들어, 도 2에 도시된 바와 같이, 쓰기 버퍼 블록(122)은 뱅크 비지 플래그(214)를 유지할 수 있다. 만일 호스트 프로세서(112)가 스토리지 셀(124) 내의 특정한 뱅크(126)로 요청(128)을 전송한다면, 뱅크 비지 플래그(214)를 나타내는 대응하는 비트(들)가 세팅될 수 있다. 뱅크 비지 플래그(214)를 세팅함으로써, 쓰기 버퍼 블록(122)은 데이터(106)가 뱅크(126)로 전송되지 않도록 할 수 있다. 대신, 쓰기 버퍼 블록(122)은 뱅크 비지 플래그(214)가 세팅 됨이 없이 다른 뱅크(126)로 데이터(106)를 전송할 수 있다.
쓰기 버퍼 블록(122)은 데이터(106)를 스토리지 셀(124)에 기록할 수 있다. 좀 더 상세한 예로써, 만일 스토리지 셀(124) 내의 대응하는 뱅크(126)가 계류중인 또는 들어오는 트랜잭션(pending or incoming transaction)과 충돌이 없다면, 쓰기 버퍼 블록(122)은 스토리지 셀(124)로 기록할 수 있다. 도 1에 도시된 바와 같이, 쓰기 버퍼 블록(122)으로부터 스토리지 셀(124)까지 점선으로 도시된 화살표는 스토리지 셀(124)로 기록되는 쓰기 데이터(108)를 나타낼 수 있다.
충돌 상태(216)는 복수의 요청들(128)이 서로 간섭하고 있다는 것을 나타낼 수 있다. 예를 들어, 앞서 설명된 바와 같이, 만일 하나의 요청(128)이 뱅크(126)로 데이터(106)를 기록하기를 시도하고, 다른 요청(128)이 동일한 뱅크(126)로 데이터(106)를 기록하기를 시도한다면, 동일한 뱅크(126)로 데이터(106)를 기록하려는 복수의 시도들은 충돌로써 충돌 상태(216)에 나타날 수 있다. 만일 다른 요청(128)이 다른 뱅크(126)로 데이터(106)를 기록하기를 시도한다면, 충돌 상태(216)는 충돌이 없음을 나타낼 수 있다.
쓰기 버퍼 블록(122)은 데이터(106)를 다양한 방법으로 기록할 수 있다. 예를 들어, 쓰기 버퍼 블록(122)은 뱅크 비지 플래그(214)에 기초하여 데이터(106)를 기록할 수 있다. 앞서 설명된 바와 같이, 뱅크 비지 플래그(214)는 쓰기 버퍼 엔트리(202)의 어느 것이라도 스토리지 셀(124)에 기록되지 못하도록 할 수 있다. 좀 더 상세한 예로써, 만일 호스트 프로세서(112)가 요청(128)을 어떤 뱅크(126)로 전송하고, 대응하는 뱅크 비지 플래그(214)가 세팅되었다면, 쓰기 버퍼 블록(122)은 데이터(106)를 동일한 뱅크(126)로 전송하도록 허락되지 않을 것이다. 게다가, 쓰기 버퍼 블록(122)은, 뱅크 비지 플래그(214)가 세팅됨이 없이, 다른 뱅크(126)를 타겟팅하는 데이터(106)를 기록할 수 있다.
호스트 프로세서(112) 또는 메모리 컴퓨팅 블록(120)은 뱅크 비지 플래그(214)를 업데이트 할 수 있다. 좀 더 상세한 예로써, 만일 호스트 프로세서(112)가 뱅크(126)로의 요청(128)의 스케줄링을 제어한다면, 호스트 프로세서(112)는 뱅크 업데이트 커맨드(218)를 가지고 뱅크(126)에 대한 뱅크 비지 플래그(214)의 값을 업데이트 할 수 있다. 뱅크 업데이트 커맨드(218)는 뱅크 비지 플래그(214)의 값을 업데이트 할 수 있다. 요청(128)이 뱅크(126)로 생성되었을 때, 호스트 프로세서(112)는 뱅크(126)가 미리 정해진 기간 동안 이용가능하지 않다는 것을 인식할 수 있다. 예를 들어, 미리 정해진 기간은 100 나노초 이하일 수 있다.
쓰기 버퍼 엔트리(202)는 데이터(106)가 스토리지 셀(124)로 이동한 후 방출될 수 있다. 좀 더 상세한 예로써, 유효성 식별(206)은, 쓰기 버퍼 엔트리(202)가 방출되어 쓰기 버퍼 엔트리(202)가 새로운 요청(128)에 대해 이용 가능하게 되도록 할때, 리셋 될 수 있다.
다른 예로써, 메모리 블록(104)은 호스트 프로세서(112)로부터의 요청(128)을 추적할 수 있다. 좀 더 상세한 예로써, 만일 호스트(118)로부터의 요청(128)이 쓰기 버퍼 블록(122)에 있는 계류중인 쓰기 요청과 충돌이 없다는 충돌 상태(216)를 제공한다면, 계류중인 쓰기 버퍼 엔트리(202) 중 하나가 스토리지 셀(124)로의 추측에 근거한(speculative) 스토리지 쓰기(220)를 위해 선택될 수 있다. 추측에 근거한 스토리지 쓰기(220)는 쓰기 요청(130)과의 충돌없이 스토리지 셀(124)로의 쓰기 버퍼 엔트리(202)를 기록하기 위한 커맨드일 수 있다.
메모리 블록(104)은, 추측에 근거한 스토리지 쓰기(220) 및 추측에 근거한 스토리지 쓰기(220)가 아닌 어떤 장래의 요청(128) 사이에서의 충돌 상태(216)에 기초하여 완료되는 것으로부터 추측에 근거한 스토리지 쓰기(220)를 획득할 수 있다. 예를 들어, 장래의 규모는 추측에 근거한 스토리지 쓰기(220)가 완료되기 전에 나타낼 수 있다. 좀 더 상세한 예로써, 메모리 블록(104)은 메모리 블록(104)의 평행한 구조 때문에 두 개의 다른 타입의 트랜잭션을 동시에 처리할 수 있다.
충돌 상태(216)는, 만일 요청(128)이 추측에 근거한 스토리지 쓰기(220)로서 동일한 뱅크(126)를 타겟팅 한다면, 충돌이 존재할 수 있다는 것을 나타낼 수 있다. 메모리 블록(104)은 스토리지 셀(124)로 데이터를 전송하는 것으로부터 추측에 근거한 스토리지 쓰기(220)를 획득할 수 있고, 요청(128)이 스토리지 셀(124)로 데이터(106)의 전송을 완료하는 것을 허락할 수 있다. 메모리 블록(104)이, 스토리지 셀(124)로 전송되는 것으로부터 데이터를 획득한 후, 추측에 근거한 스토리지 쓰기(220)를 위해 선택된 쓰기 버퍼 엔트리(202)는 재시도할 수 있다. 만일 처리 과정에 아무런 충돌이 없다면, 선택된 쓰기 버퍼 엔트리(202)로부터의 데이터(106)는 스토리지 셀(124)로 전송될 수 있고, 쓰기 버퍼 엔트리(202)는 성공적으로 회수될 수 있다.
도 3은 본 발명의 실시 예에 따른 컴퓨팅 시스템(100)의 제어 흐름을 보여주는 도면이다. 컴퓨팅 시스템(100)은 커맨드 모듈(302)을 포함할 수 있다. 커맨드 모듈(302)은 도 1의 요청(128)과 통신할 수 있다. 예를 들어, 커맨드 모듈(302)은 도 2의 쓰기 버퍼 엔트리(202), 사용 한계점(210), 또는 이들의 조합에 기초하여 요청(128)과 통신할 수 있다. 커맨드 모듈(302)은 도 1의 호스트 프로세서, 메모리 컴퓨팅 블록(120), 또는 이들의 조합에 의해 실행될 수 있다.
좀 더 상세한 예로써, 커맨드 모듈(302)은 사용되는 쓰기 버퍼 블록(122) 내의 쓰기 버퍼 엔트리들(202)의 개수와 사용 한계점(210) 사이의 비교에 기초하여 설정되는 요청(128)을 제어할 수 있다. 앞서 설명된 바와 같이, 만일 사용된 쓰기 버퍼 엔트리(202)의 개수가 사용 한계점(210)을 만족하거나 초과한다면, 커맨드 모듈(302)은 전송되는 것으로부터의 요청(128)을 메모리 블록(104)으로 주지 않을 수 있다. 반대로, 만일, 사용된 쓰기 버퍼 엔트리(202)의 개수가 사용 한계점(210) 미만이라면, 커맨드 모듈(302)은 요청(128)을 메모리 블록(104)으로 전송할 수 있다.
컴퓨팅 시스템(100)은 커맨드 모듈(302)과 연결된 할당 모듈(304)을 포함할 수 있다. 할당 모듈(304)은 도 2의 유효성 식별(206)을 판단할 수 있다. 예를 들어, 할당 모듈(304)은 도 2의 버퍼 엔트리 어드레스(208), 요청(128), 또는 이들의 조합에 기초하여 도 1의 데이터(106)의 유효성 식별(206)을 판단할 수 있다. 할당 모듈(304)은 메모리 블록(104)에 의해 실행될 수 있다.
좀 더 상세한 예로써, 할당 모듈(304)은 버퍼 엔트리(202)가 특정한 데이터(106)을 위해 할당되는지 여부에 기초하여 유효성 식별(206)을 판단할 수 있다. 만일 쓰기 버퍼 엔트리(202)가 할당되면, 할당 모듈(304)은 "세트"로써 유효성 식별(206)을 판단할 수 있다. 반대로, 쓰기 버퍼 엔트리(202)가 할당되지 않는다면, 할당 모듈(304)은 "낫 세트(not set)"로써 유효성 식별(206)을 판단할 수 있다.
컴퓨팅 시스템(100)은 할당 모듈(304)에 연결된 버퍼 실행 모듈(306)을 포함할 수 있다. 버퍼 실행 모듈(306)은 데이터(106)를 처리할 수 있다. 예를 들어, 버퍼 실행 모듈(306)은 데이터(106)를 쓰기 버퍼 모듈 엔트리(202)에 겹쳐 쓰기 할 수 있다. 버퍼 실행 모듈(306)은 쓰기 버퍼 블록(122)에 의해 실행될 수 있다.
버퍼 실행 모듈(306)은 다양한 방법으로 데이터(106)를 실행할 수 있다. 예를 들어, 버퍼 실행 모듈(306)은, 쓰기 버퍼 엔트리(202)가 메모리 블록(104)에 의해 새로이 수신된 도 1의 쓰기 요청(130)의 데이터를 이미 포함하고 있음을 나타내는 유효성 식별(206)에 기초하여, 데이터(106)를 겹쳐 쓰기 할 수 있다. 그 결과, 버퍼 실행 모듈(306)은 쓰기 요청(130)에 포함된 쓰기 데이터(106)를 가지고 쓰기 버퍼 엔트리(202)에 이미 있는 데이터(106)를 겹쳐 쓰기 할 수 있다.
다른 예로써, 버퍼 실행 모듈(306)은 유효성 식별(206)에 기초하여 쓰기 버퍼 엔트리(202)를 선택할 수 있다. 좀 더 상세한 예로써, 유효성 식별(206)은 쓰기 요청(130)에 포함된 데이터(106)가 쓰기 버퍼 엔트리(202)에 저장되지 않았음을 나타낼 수 있다. 그 결과, 버퍼 실행 모듈(306)은 데이터(106)를 저장하기 위해 새로운 버퍼 엔트리 어드레스(208)를 가지고 쓰기 버퍼 엔트리(202)를 선택할 수 있다.
컴퓨팅 시스템(100)은 버퍼 실행 모듈(306)에 연결된 유효성 모듈(availability module)(308)을 포함할 수 있다. 유효성 모듈(308)은 도 1의 스토리지 셀(124)이 이용 가능한지 여부를 판단할 수 있다. 예를 들어, 유효성 모듈(308)은, 뱅크(126)가 도 2의 뱅크 비지 플래그(214), 요청(128), 또는 이들의 조합에 기초하여 이용 가능한지 여부를, 판단할 수 있다. 유효성 모듈(308)은 호스트 프로세서(112), 메모리 블록(104), 또는 이들의 조합에 의해 실행될 수 있다.
좀 더 상세한 예로써, 만일 뱅크 비지 플래그(214)가 세팅되었다면, 유효성 모듈(308)은 뱅크(126)가 이용 가능하지 않은지 여부를 판단할 수 있다. 반대로, 만일 뱅크 비지 플래그(214)가 세팅되지 않았다면, 유효성 모듈(308)은 뱅크(126)가 이용 가능한지 여부를 판단할 수 있다.
컴퓨팅 시스템(100)은 유효성 모듈(308)에 연결된 스토리지 쓰기 모듈(310)을 포함할 수 있다. 스토리지 쓰기 모듈(310)은 데이터(106)를 기록할 수 있다. 예를 들어, 스토리지 쓰기 모듈(310)은 쓰기 데이터(106)를 스토리지 셀(124)로 기록할 수 있다. 스토리지 쓰기 모듈(310)은 버퍼 블록(122), 스토리지 셀(124), 또는 이들의 조합에 의해 실행될 수 있다.
스토리지 쓰기 모듈(310)은 다양한 방법으로 데이터(106)를 기록할 수 있다. 예를 들어, 스토리지 쓰기 모듈(310)은 쓰기 버퍼 엔트리(202), 뱅크 비지 플래그(214), 또는 이들의 조합에 기초하여 데이터(106)를 뱅크(126)로 기록할 수 있다. 좀 더 상세한 예로써, 앞서 설명된 바와 같이, 뱅크 비지 플래그(214)는 뱅크(126)가 기록될 데이터(106)에 대해 이용 가능한지 여부를 지시할 수 있다. 게다가, 쓰기 버퍼 엔트리(202)에 포함된 유효성 식별(206)은 데이터(106)가 뱅크(126)로 기록되기에 이용 가능함을 나타낼 수 있다. 만일 뱅크 비지 플래그(214)가 세팅되지 않았다면, 유효성 식별(206)은 데이터(106)가 이용 가능함을 나타낼 수 있다. 그 결과, 스토리지 쓰기 모듈(310)은 데이터(106)를 스토리지 셀(124)로 기록할 수 있다.
다른 예로써, 스토리지 쓰기 모듈(310)은 충돌 상태(216), 쓰기 버퍼 엔트리(202), 또는 이들의 조합에 기초하여 도 2의 추측에 근거한 스토리지 쓰기(220)를 실행할 수 있다. 좀 더 상세한 예로써, 만일 충돌 상태(216)가 추측에 근거한 스토리지 쓰기(220)와 쓰기 요청(130) 사이에 충돌이 있음을 나타내면, 스토리지 쓰기 모듈(130)은, 데이터(106)를 스토리지 셀(124)로 전송하는 것으로부터, 추측에 근거한 스토리지 쓰기(220)를 획득할 수 있다. 스토리지 쓰기 모듈(310)은 스토리지 셀(124)로 전송될 데이터(106)에 대한 쓰기 요청(130)으로부터 데이터(106)를 기록할 수 있다. 반면, 만일 충돌 상태(216)가 충돌이 없음을 나타낸다면, 스토리지 쓰기 모듈(310)은 추측에 근거한 스토리지 쓰기(220)를 실행하여, 스토리지 셀(124)로 선택된 쓰기 버퍼 엔트리(202)로부터의 데이터(106)를 전송할 수 있다.
컴퓨팅 시스템(100)은 스토리지 쓰기 모듈(310)과 연결될 수 있는 방출 모듈(release module)(312)을 포함할 수 있다. 방출 모듈(312)은 쓰기 버퍼 엔트리(202)를 방출할 수 있고 또는 이용 가능하게 할 수 있다. 예를 들어, 방출 모듈(312)은 스토리지 셀(124)로 전송되는 데이터(106)에 기초하여 쓰기 버퍼 엔트리(202)를 방출할 수 있다. 좀 더 상세한 예로써, 방출 모듈(312)은 쓰기 버퍼 엔트리(202)를 방출하여 새로운 요청(128)으로부터의 데이터(106)를 저장할 수 있다. 방출 모듈(312)은 호스트 프로세서(112), 메모리 블록(104), 또는 이들의 조합에 의해 실행될 수 있다.
컴퓨팅 시스템(100)은 읽기 모듈(314)을 포함할 수 있다. 읽기 모듈(314)은 데이터(106)를 읽을 수 있다. 예를 들어, 읽기 모듈(314)은 쓰기 버퍼 블록(122), 스토리지 셀(124), 또는 이들의 조합으로부터 데이터(106)를 읽을 수 있다. 읽기 모듈(314)은 메모리 컴퓨팅 블록(120)에 의해 실행될 수 있다.
읽기 모듈(314)은 다양한 방법으로 데이터(106)를 읽을 수 있다. 예를 들어, 만일 도 1의 읽기 요청(132)에 의해 요청된 데이터(106)가 쓰기 버퍼 블록(122)에 존재한다면, 읽기 모듈(314)은 쓰기 버퍼 블록(122)으로부터 데이터(106)를 읽을 수 있다. 만일 데이터(106)가 쓰기 버퍼 블록(122)에 존재하지 않는다면, 읽기 모듈(314)은 스토리지 셀(124)로부터 데이터를 읽을 수 있다.
도 4는 본 발명의 실시 예를 갖는 컴퓨팅 시스템(100)의 적용 예를 보여주는 도면이다. 도 4는 컴퓨터 서버, 자동차의 대시 보드/컨트롤 센터, 스마트 폰, 모바일 디바이스, 노트북 컴퓨터, 및 이와 유사한 것과 같은, 컴퓨팅 시스템(100)을 위한 다양한 실시 예를 보여준다.
이 적용 예는 도 1의 데이터(106) 쓰기 및 읽기를 위한 향상된 효율성을 제공할 수 있다. 도 1의 호스트 디바이스(102)는, 데이터(106)를 스토리지 셀(124)로 전송하기 전에, 데이터(106)를 쓰기 버퍼 블록(122)으로 전송할 수 있다. tWR은, 스토리지 셀(124) 대신에 쓰기 버퍼 블록(122)에 저장되는 데이터(106)를 갖는 것에 기초하여 근본적으로 0까지 감소할 수 있다. 이는 도 1의 메모리 컴퓨팅 블록(120)이 스토리지 셀(124) 대신에 쓰기 버퍼 블록(122)으로부터 데이터(106)를 읽을 수 있음으로써 달성될 수 있다. 데이터(106)를 쓰기 버퍼 블록(122)으로 전송하는 것은 데이터를 스토리지 셀(124)로 전송하는 것으로부터의 레이턴시를 감소시킴으로써 효율성을 향상시킬 수 있다.
컴퓨터 서버, 대시 보드, 및 노트북 컴퓨터와 같은, 컴퓨팅 시스템(100)은 본 발명의 다양한 실시 예를 갖는 인쇄 회로 기판 또는 본 발명의 다양한 실시 예를 갖는 전자 조립 제품(electronic assembly)과 같은, 하나 또는 그 이상의 서브 시스템(미도시)을 포함할 수 있다. 컴퓨팅 시스템(100)은 어댑터 카드로 구현될 수도 있다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템(100)의 동작 방법을 보여주는 순서도이다. 방법(500)은, 블록(502)에서, 데이터를 스토리지 셀로 전송하기에 앞서 상기 데이터를 저장하기 위해 쓰기 버퍼 엔트리에 데이터를 수신하는 단계; 블록(504)에서, 상기 쓰기 버퍼 엔트리의 버퍼 엔트리 주소에 대한 상기 데이터의 유효성 식별을 판단하는 단계; 블록(506)에서, 상기 쓰기 버퍼 엔트리에 대한 상기 유효성 식별에 기초하여 쓰기 버퍼 블록에 데이터를 저장하는 단계; 그리고 블록(508)에서, 상기 쓰기 버퍼 블록을 액세스하기 위해 상기 데이터를 읽는 단계를 포함할 수 있다. 방법(500)은 쓰기 요청 및 추측에 근거한 스토리지 쓰기 사이에서의 충돌 상태에 기초하여 상기 충돌에 근거한 스토리지 쓰기를 실행하는 단계; 상기 쓰기 요청 및 상기 충돌에 근거한 스토리지 쓰기 사이에서 상기 추돌에 근거한 스토리지 쓰기를 획득하는 단계; 뱅크 비지 플래그에 기초하여 상기 데이터를 기록하는 단계; 그리고 상기 쓰기 버퍼 엔트리에 이미 저장된 상기 데이터를 겹쳐 쓰기 하는 단계를 더 포함할 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
100: 컴퓨팅 시스템
102: 호스트 디바이스
104: 메모리 블록
106: 데이터
108: 쓰기 데이터
110: 읽기 데이터
112: 호스트 프로세서
114: 호스트 인터페이스
116: 통신 버스
118: 메모리 인터페이스
120: 메모리 컴퓨팅 블록
122: 쓰기 버퍼 블록
124: 스토리지 셀
126: 뱅크
128: 요청
130: 쓰기 요청
132: 읽기 요청
202: 쓰기 버퍼 엔트리
204: 엔트리 필드
206: 유효성 식별
208: 버퍼 엔트리 어드레스
210: 사용 한계점
214: 뱅크 비지 플래그
216: 충돌 상태
218: 뱅크 업데이트 커맨드
220: 추측에 근거한 스토리지 쓰기

Claims (10)

  1. 데이터를 스토리지 셀로 전송하기에 앞서 상기 데이터를 저장하기 위해 쓰기 버퍼 엔트리에 상기 데이터를 수신하고, 상기 쓰기 버퍼 엔트리의 버퍼 엔트리 어드레스에 대한 상기 데이터의 유효성 식별을 판단하고, 상기 쓰기 버퍼 엔트리의 상기 유효성 식별에 기초하여 상기 데이터를 저장하는 쓰기 버퍼 블록; 그리고
    상기 쓰기 버퍼 블록에 연결되고, 상기 쓰기 버퍼 블록으로부터 상기 데이터를 읽는 메모리 컴퓨팅 블록을 포함하되,
    상기 쓰기 버퍼 블록은 쓰기 요청 및 상기 데이터를 상기 스토리지 셀로 전송하기 위한 추측에 근거한 스토리지 쓰기 사이의 충돌 상태에 기초하여 상기 추측에 근거한 스토리지 쓰기를 실행하고, 그리고
    상기 쓰기 버퍼 블록은 상기 데이터에 대한 상기 쓰기 버퍼 엔트리가 존재하는 경우, 상기 유효성 식별 및 상기 쓰기 요청에 응답하여 상기 쓰기 버퍼 엔트리에 이미 저장된 상기 데이터를 겹쳐 쓰기 하는 컴퓨팅 시스템.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 쓰기 버퍼 블록은 쓰기 요청 및 상기 데이터를 상기 스토리지 셀로 전송하기 위한 추측에 근거한 스토리지 쓰기 사이의 상기 추측에 근거한 스토리지 쓰기를 획득하는 컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    상기 쓰기 버퍼 블록은 뱅크 비지 플래그에 기초하여 상기 데이터를 기록하는 컴퓨팅 시스템.
  5. 삭제
  6. 데이터를 생성하고, 사용 한계점을 충족하거나 초과하는 쓰기 버퍼 엔트리의 개수에 기초하여 전송될 쓰기 요청을 실행하는 호스트 프로세서; 그리고
    상기 호스트 프로세서에 연결되고, 상기 데이터를 메모리 블록에 있는 스토리지 셀로 전송하기에 앞서 상기 데이터를 쓰기 버퍼 블록으로 전송하기 위한 상기 쓰기 요청을 전송하는 호스트 인터페이스를 포함하되,
    상기 쓰기 버퍼 블록은 상기 쓰기 버퍼 엔트리의 버퍼 엔트리 어드레스에 대한 상기 데이터의 유효성 식별을 판단하고,
    상기 쓰기 버퍼 블록은 상기 쓰기 버퍼 엔트리의 상기 유효성 식별에 기초하여 상기 데이터를 저장하고,
    상기 쓰기 버퍼 블록은 상기 쓰기 요청 및 상기 데이터를 상기 스토리지 셀로 전송하기 위한 추측에 근거한 스토리지 쓰기 사이의 충돌 상태에 기초하여 상기 추측에 근거한 스토리지 쓰기를 실행하고, 그리고
    상기 쓰기 버퍼 블록은 상기 데이터에 대한 상기 쓰기 버퍼 엔트리가 존재하는 경우, 상기 유효성 식별 및 상기 쓰기 요청에 응답하여 상기 쓰기 버퍼 엔트리에 이미 저장된 상기 데이터를 겹쳐 쓰기 하는 컴퓨팅 시스템.
  7. 제 6 항에 있어서,
    상기 호스트 프로세서는 상기 데이터가 뱅크 비지 플래그에 기초하여 기록될 수 있는지 여부를 판단하는 컴퓨팅 시스템.
  8. 제 6 항에 있어서,
    상기 호스트 프로세서는 상기 데이터가 상기 스토리지 셀의 뱅크의 이용 가능성을 판단하기 위한 뱅크 비지 플래그에 기초하여 기록될 수 있는지 여부를 판단하는 컴퓨팅 시스템.
  9. 제 6 항에 있어서,
    상기 호스트 프로세서는 뱅크 업데이트 커맨드를 이용하여 뱅크 비지 플래그를 업데이트하는 컴퓨팅 시스템.
  10. 제 6 항에 있어서,
    상기 호스트 프로세서는 상기 스토리지 셀로 전송되는 상기 데이터를 판단하기 위해 상기 데이터에 기초하여 쓰기 버퍼 엔트리를 방출하는 컴퓨팅 시스템.
KR1020150179345A 2014-12-30 2015-12-15 버퍼를 갖는 컴퓨팅 시스템 및 그것의 동작 방법 KR102545689B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462098248P 2014-12-30 2014-12-30
US62/098,248 2014-12-30
US14/735,765 US9753655B2 (en) 2014-12-30 2015-06-10 Computing system with write buffer including speculative storage write and method of operation thereof
US14/735,765 2015-06-10

Publications (2)

Publication Number Publication Date
KR20160081797A KR20160081797A (ko) 2016-07-08
KR102545689B1 true KR102545689B1 (ko) 2023-06-20

Family

ID=56164203

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150179345A KR102545689B1 (ko) 2014-12-30 2015-12-15 버퍼를 갖는 컴퓨팅 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9753655B2 (ko)
KR (1) KR102545689B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10270705B1 (en) * 2013-12-18 2019-04-23 Violin Systems Llc Transmission of stateful data over a stateless communications channel
US10101933B2 (en) * 2016-02-26 2018-10-16 Toshiba Memory Corporation Controller and memory system
JP6967959B2 (ja) * 2017-12-08 2021-11-17 キオクシア株式会社 メモリシステムおよび制御方法
US11157202B2 (en) * 2018-12-28 2021-10-26 Micron Technology, Inc. Memory management utilizing buffer reset commands
US10838863B2 (en) * 2019-02-01 2020-11-17 EMC IP Holding Company LLC Storage system with write cache release protection
GB2582638B (en) * 2019-03-29 2021-10-06 Kigen Uk Ltd An apparatus, method and computer program for managing memory page updates within non-volatile memory
US20230053087A1 (en) * 2020-02-03 2023-02-16 Samsung Electronics Co., Ltd. Data management system and method of controlling
US11941287B2 (en) * 2020-06-17 2024-03-26 EMC IP Holding Company, LLC System and method for near-instant unmapping and write-same in a log-structured storage cluster

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415353B1 (en) * 1998-10-01 2002-07-02 Monolithic System Technology, Inc. Read/write buffers for complete hiding of the refresh of a semiconductor memory and method of operating same

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638534A (en) 1995-03-31 1997-06-10 Samsung Electronics Co., Ltd. Memory controller which executes read and write commands out of order
US6122715A (en) * 1998-03-31 2000-09-19 Intel Corporation Method and system for optimizing write combining performance in a shared buffer structure
US6735139B2 (en) 2001-12-14 2004-05-11 Silicon Storage Technology, Inc. System and method for providing asynchronous SRAM functionality with a DRAM array
KR100585116B1 (ko) * 2003-12-13 2006-06-01 삼성전자주식회사 멀티 뱅크 메모리의 억세스 효율을 개선한 아비터, 이를구비한 메모리 억세스 중재 시스템 및 그 방법
KR20070093750A (ko) * 2006-03-15 2007-09-19 삼성전자주식회사 반도체 메모리 장치 및 그에 따른 시스템
CN101155172B (zh) * 2006-09-27 2013-01-23 国际商业机器公司 数据处理系统中的性能事件的检测和记录装置以及方法
KR20100058825A (ko) * 2008-11-25 2010-06-04 삼성전자주식회사 저항체를 이용한 반도체 장치, 이를 이용한 카드 또는 시스템 및 상기 반도체 장치의 구동 방법
KR101638764B1 (ko) * 2008-12-19 2016-07-22 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 균일한 판독 대기시간을 위한 중복 데이터 저장
US8473657B2 (en) * 2009-03-23 2013-06-25 Lsi Corporation High speed packet FIFO output buffers for switch fabric with speedup
US8495286B2 (en) 2009-12-10 2013-07-23 International Business Machines Corporation Write buffer for improved DRAM write access patterns

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415353B1 (en) * 1998-10-01 2002-07-02 Monolithic System Technology, Inc. Read/write buffers for complete hiding of the refresh of a semiconductor memory and method of operating same

Also Published As

Publication number Publication date
US20160188224A1 (en) 2016-06-30
US9753655B2 (en) 2017-09-05
KR20160081797A (ko) 2016-07-08

Similar Documents

Publication Publication Date Title
KR102545689B1 (ko) 버퍼를 갖는 컴퓨팅 시스템 및 그것의 동작 방법
US9052835B1 (en) Abort function for storage devices by using a poison bit flag wherein a command for indicating which command should be aborted
US10642496B2 (en) Out of order read transfer with host memory buffer
US10521118B2 (en) Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
US9898341B2 (en) Adjustable priority ratios for multiple task queues
CN109471593B (zh) 存储装置及其数据训练方法
US20180113615A1 (en) Storage device generating adaptive interrupt and operating method thereof
KR102446733B1 (ko) 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치
CN102460405B (zh) 用于通过存储器装置来控制主机存储器存取的方法及系统
CN109298833B (zh) 存储设备及对包括其的电子设备的温度控制
US20150106574A1 (en) Performing Processing Operations for Memory Circuits using a Hierarchical Arrangement of Processing Circuits
US11055022B2 (en) Storage system and method for early host command fetching in a low queue depth environment
US20170075572A1 (en) Extending hardware queues with software queues
KR20160013351A (ko) 데이터 저장 장치 및 그것의 데이터 처리 방법
US10740243B1 (en) Storage system and method for preventing head-of-line blocking in a completion path
US10203896B2 (en) Method operating universal flash storage (UFS) device, method operating UFS host, and method operating system including both
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
US10372338B2 (en) Memory controller and data processing circuit with improved system efficiency
KR20150081635A (ko) 불휘발성 반도체 메모리를 포함하는 저장 장치 및 그것의 관리 방법
CN116601601A (zh) 在多过程系统内执行可编程原子单元资源的方法
US9501401B2 (en) Method of operating a memory system, the memory system, and a memory controller
US9971549B2 (en) Method of operating a memory device
CN116737083B (zh) 存储器访问电路及存储器访问方法、集成电路和电子设备
CN114579484A (zh) 数据存储装置及其操作方法
US20160266974A1 (en) Memory controller, data storage device and data write method

Legal Events

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