KR101754545B1 - 플래시 메모리들에서 커맨드 완료의 확인 - Google Patents
플래시 메모리들에서 커맨드 완료의 확인 Download PDFInfo
- Publication number
- KR101754545B1 KR101754545B1 KR1020167007288A KR20167007288A KR101754545B1 KR 101754545 B1 KR101754545 B1 KR 101754545B1 KR 1020167007288 A KR1020167007288 A KR 1020167007288A KR 20167007288 A KR20167007288 A KR 20167007288A KR 101754545 B1 KR101754545 B1 KR 101754545B1
- Authority
- KR
- South Korea
- Prior art keywords
- transfer request
- completion
- register
- bit
- door bell
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1014—One time programmable [OTP] memory, e.g. PROM, WORM
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Bus Control (AREA)
- Retry When Errors Occur (AREA)
- Executing Machine-Instructions (AREA)
- Read Only Memory (AREA)
- Storage Device Security (AREA)
- Communication Control (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Memory System (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Telephone Function (AREA)
Abstract
플래시 메모리들에서 커맨드 완료의 확인이 개시된다. 예시적인 양태는 소프트웨어 로크 및 미해결 요청 변수를 제거하고 트랜스퍼 요청 완료 레지스터로 대체하는 것을 포함한다. 트랜스퍼 요청 완료 레지스터는 범용 플래시 저장 (UFS) 트랜스퍼 프로토콜 (UTP) 트랜스퍼 요청 리스트 (UTRL) 슬롯들로 맵핑될 수도 있다. 호스트의 제어기 - 하드웨어 컴포넌트 - 는 도어벨 레지스터가 클리어되는 것과 동시에, 트랜스퍼 요청 완료시 트랜스퍼 요청 완료 레지스터에서 비트를 세팅할 수도 있다. 상기 비트가 판독된 후에, 그 비트는 트랜스퍼 요청 완료 레지스터에서 클리어된다.
Description
우선권 주장
본 출원은 2013 년 9 월 10 일에 출원된 "SYSTEMS AND METHODS FOR ASCERTAINING COMMAND COMPLETION IN FLASH MEMORY" 라는 명칭의 미국 특허 가출원 제 61/875,907 호를 우선권 주장하며, 상기 가출원은 그 전체가 본원에 참조로서 통합된다.
본 출원은 또한, 2014 년 8 월 25 일에 출원된 "ASCERTAINING COMMAND COMPLETION IN FLASH MEMORIES" 라는 명칭의 미국 특허 출원 제 14/467,404 호를 우선권 주장하며, 상기 출원은 그 전체가 본원에 참조로서 통합된다.
I. 본 개시의 분야
본 개시의 기술은 일반적으로 플래시 메모리 및 플래시 메모리에 대한 커맨드들을 프로세싱하는 것에 관련된다.
II. 배경기술
플래시 메모리는 카메라들, 오디오 플레이어들, 스마트 폰들, 태블릿들, 등등과 같은 모바일 단말들을 포함하는 많은 종류의 컴퓨팅 디바이스들에서 일반적이다. 플래시 메모리는 2 가지 일반적인 타입들 - 탈착가능형 또는 내장형 중 하나일 수도 있고, 몇몇 표준들이 양자의 일반 타입들을 위해 존재한다. 내장된 상황들에 대하여 초기에 설계된 하나의 표준은, JEDEC (Joint Electron Device Engineering Council) 에 의해 제시된 UFS (Universal Flash Storage) 표준이다. 다른 일반적인 표준은 내장형 멀티 미디어 제어기 (eMMC) 표준이다.
UFS 표준에서, 호스트는 메모리 엘리먼트들을 보유한 디바이스와 통신한다. 호스트는 데이터를 메모리 엘리먼트들 내에 기록하고, 메모리 엘리먼트들로부터 데이터를 판독하고, 캐시를 동기화하는 것과 같은 "트랜스퍼 요청" 작업들을 실행하도록 디바이스에 커맨드들을 이슈한다. 설계에 의해, UFS 는 다수의 동시의 트랜스퍼 요청들을 지원한다. 트랜스퍼 요청들은 호스트의 제어기에서 구동되는 소프트웨어이고, 도어벨 레지스터로 불리는 레지스터 및 (적어도 LINUX 구현에서) 미해결 요청 변수로서 지칭되는 소프트웨어 변수를 사용한다. 용어 "미해결 요청 변수" 는 LINUX 에 특정되는 반면, 다른 오퍼레이팅 시스템들은 유사한 변수들을 사용하고, 이들 모두가 본원에서 미해결 요청 변수들로 지칭된다. 각각의 트랜스퍼 요청은 도어벨 레지스터 및 미해결 요청 변수에서 슬롯 및 대응하는 비트를 점유한다. 새로운 트랜스퍼 요청을 전송할 때, 소프트웨어는 그 레지스터 및 변수에서의 슬롯에 대응하는 비트를 세팅한다. 레지스터에서 비트를 세팅하는 것은 새로운 트랜스퍼 요청이 준비된 것을 제어기에 통지한다. 트랜스퍼 요청이 완료되면, 하드웨어는 레지스터에서 슬롯에 대응하는 비트를 클리어하고, 그 후 소프트웨어는 레지스터에서의 비트를 미해결 요청 변수에서의 비트들과 비교하여 완료된 요청들을 발견한다. 특정 엘리먼트들이 상이한 명칭들을 가질 수도 있지만, eMMC 도 유사한 것에 유의한다.
호스트가 도어벨 레지스터를 세팅하기 전에 및 미해결 요청 변수를 업데이트한 후에 인터럽트를 수신한다면, 호스트는 요청이 전송되었기 전에 요청이 완료된 것을 인식할 수도 있다. 그러한 상황에서, 소프트웨어가 요청을 완료할 수도 있지만, 에러가 있다. 대안적으로, 호스트가 레지스터를 세팅한 후에 인터럽트를 수신하고, 요청이 미해결 요청 변수를 업데이트하기 전에 완료되었다면, 그 요청은 손실될 수도 있다. 또 다른 상황은 다른 트랜스퍼 요청 완료 인터럽트가 도달할 때까지 요청들을 지연시킨다. 그러한 상황은 요청을 지연시키고, 따라서 성능 저하를 발생하며, 지연이 무기한으로 또는 커맨드를 중단시키는 에러가 발생할 때까지 지속되게 한다. 현재, 그러한 상황들은 소프트웨어 로크 (lock) 의 사용을 통해 회피된다. 그러나, 그러한 소프트웨어 로크들은 느리고, 다른 트랜스퍼 요청들을 차단할 수도 있다. 추가로, 그러한 소프트웨어 로크들 또는 차단들은 일반적으로, 특히 멀티-코어 프로세서들에서 성능의 저하를 발생하는 레이턴시를 증가시킨다.
상세한 설명에 개시된 양태들은 플래시 메모리들에서 커맨드 완료를 확인하는 것을 포함한다. 예시적인 양태는 소프트웨어 로크 및 미해결 요청 변수를 제거하고 트랜스퍼 요청 완료 레지스터로 대체하는 것을 포함한다. 트랜스퍼 요청 완료 레지스터는 범용 플래시 저장 (UFS) 트랜스퍼 프로토콜 (UTP) 트랜스퍼 요청 리스트 (UTRL) 슬롯들로 맵핑될 수도 있다. 호스트의 제어기 - 하드웨어 컴포넌트 - 는 도어벨 레지스터가 클리어되는 것과 동시에, 트랜스퍼 요청 완료시 트랜스퍼 요청 완료 레지스터에서 비트를 세팅할 수도 있다. 상기 비트가 판독된 후에, 그 비트는 트랜스퍼 요청 완료 레지스터에서 클리어된다. UFS 가 구체적으로 고려되지만, 내장형 멀티 미디어 제어기 (eMMC) 와 같은 다른 플래시 메모리 표준들이 또한 본 개시물의 양태들로부터 유리할 수도 있다 (예컨대, eMMC 는 UTRL 과 기능적으로 등가인 TDL (Task Descriptor List) 을 갖는다). 소프트웨어 로크 및 미해결 요청 변수를 대체하는 것은 그러한 소프트웨어 로크들의 사용에 의해 발생할 수도 있는 트랜스퍼 요청 차단들을 제거하고 레이턴시를 감소시킴으로써 성능을 개선시킨다. 특히, 완료 및 이슈 컨텍스트들은 동시에 작업될 수 있다. 트랜스퍼 요청들은 동시에 다수의 컨텍스트들로부터 이슈될 수도 있다. 이들 다수의 컨텍스트들의 사용은 특히, 스마트폰들과 같은 멀티-코어 디바이스들에서 성능을 개선시킨다.
이와 관련하여 일 양태에서, UFS 시스템이 개시된다. UFS 시스템은 UTRL 에 대응하는 다수의 비트들을 갖는 도어벨 레지스터를 포함한다. UFS 시스템은 또한 동일한 수의 비트들을 갖는 완료 레지스터를 포함한다. UFS 시스템은 추가로, 도어벨 레지스터 및 완료 레지스터에 동작가능하게 커플링된 제어 시스템을 포함한다. 제어 시스템은 전송 요청 시작을 위해 도어벨 레지스터에서 도어벨 비트를 세팅하도록 구성된다. 다른 방식으로 언급하면, 도어벨 레지스터에서 비트가 발생될 때, 그 비트는 제어기에게 트랜스퍼 요청이 준비되었고 프로세싱될 수 있다는 것을 시그널링한다 (즉, 데이터를 트랜스퍼하기 시작한다). 제어 시스템은 또한, 트랜스퍼 요청 완료시 완료 레지스터에서 완료 비트를 세팅하도록 구성된다. 제어 시스템은 또한, 트랜스퍼 요청 완료시 도어벨 비트를 클리어하도록 구성된다.
다른 양태에서, 메모리 시스템이 개시된다. 메모리 시스템은 다수의 비트들을 갖는 도어벨 레지스터를 포함한다. 메모리 시스템은 또한, 동일한 수의 비트들을 갖는 완료 레지스터를 포함한다. 메모리 시스템은 또한, 도어벨 레지스터 및 완료 레지스터에 동작가능하게 커플링된 제어 시스템을 포함한다. 제어 시스템은 전송 요청 시작을 위해 도어벨 레지스터에서 도어벨 비트를 세팅하도록 구성된다. 제어 시스템은 또한, 트랜스퍼 요청 완료시 완료 레지스터에서 완료 비트를 세팅하도록 구성된다. 제어 시스템은 또한, 트랜스퍼 요청 완료시 도어벨 비트를 클리어하도록 구성된다.
또 다른 양태에서, 메모리 시스템을 제어하는 방법이 개시된다. 그 방법은 호스트에서 트랜스퍼 요청을 생성하는 단계를 포함한다. 방법은 또한, 호스트의 도어벨 레지스터에서 트랜스퍼 요청을 식별하는 비트를 세팅하는 단계를 포함한다. 방법은 또한, 통신 인터페이스를 통해 트랜스퍼 요청을 디바이스로 전달하는 단계를 포함한다. 방법은 또한, 트랜스퍼 요청과 연관된 트랜스퍼를 완료하는 단계를 포함한다. 방법은 또한, 도어벨 레지스터에서 비트를 클리어하는 단계를 포함한다. 방법은 또한, 완료 레지스터에서 완료 비트를 세팅하는 단계를 포함한다.
다른 양태에서, 내장형 멀티 미디어 제어기 (eMMC) 메모리 시스템이 개시된다. 그 메모리 시스템은 eMMC 작업 디스크립터 리스트에 대응하는 다수의 비트들을 갖는 도어벨 레지스터를 포함한다. 메모리 시스템은 또한, 동일한 수의 비트들을 갖는 완료 통지 레지스터를 포함한다. 메모리 시스템은 또한, 도어벨 레지스터 및 완료 통지 레지스터에 동작가능하게 커플링되고, 전송 요청 시작을 위해 도어벨 레지스터에서 도어벨 비트를 세팅하도록 구성된 제어 시스템을 포함한다. 제어 시스템은 또한, 트랜스퍼 요청 완료시 완료 통지 레지스터에서 완료 비트를 세팅하도록 구성된다. 제어 시스템은 또한, 트랜스퍼 요청 완료시 도어벨 비트를 클리어하도록 구성된다.
도 1 은 본 개시물의 예시적인 양태들 없이, 호스트와 디바이스 간의 예시적인 접속의 블록 다이어그램이다.
도 2a 는 동기화 로크들 또는 본 개시물의 양태들 없이, 메모리 시스템에서 발생할 수도 있는 제 1 경쟁 상태를 예시한다.
도 2b 는 동기화 로크들 또는 본 개시물의 양태들 없이, 메모리 시스템에서 발생할 수도 있는 제 2 경쟁 상태를 예시한다.
도 3 은 도 2a 및 도 2b 에 예시된 것과 같은 경쟁 상태들을 방지하기 위해 로크를 사용하는 종래의 데이터 흐름 프로세스의 흐름도를 예시한다.
도 4 는 본 개시물의 예시적인 양태들에 따른 호스트 레지스터들을 갖는 호스트와 디바이스 간의 예시적인 접속의 블록 다이어그램이다.
도 5 는 도 4 의 호스트와 디바이스 간의 데이터 흐름의 예시적인 프로세스를 예시하는 흐름도이다.
도 6 은 도 4 에 예시된 호스트와 디바이스를 채용할 수 있는 예시적인 프로세서-기반의 시스템의 블록 다이어그램이다.
도 2a 는 동기화 로크들 또는 본 개시물의 양태들 없이, 메모리 시스템에서 발생할 수도 있는 제 1 경쟁 상태를 예시한다.
도 2b 는 동기화 로크들 또는 본 개시물의 양태들 없이, 메모리 시스템에서 발생할 수도 있는 제 2 경쟁 상태를 예시한다.
도 3 은 도 2a 및 도 2b 에 예시된 것과 같은 경쟁 상태들을 방지하기 위해 로크를 사용하는 종래의 데이터 흐름 프로세스의 흐름도를 예시한다.
도 4 는 본 개시물의 예시적인 양태들에 따른 호스트 레지스터들을 갖는 호스트와 디바이스 간의 예시적인 접속의 블록 다이어그램이다.
도 5 는 도 4 의 호스트와 디바이스 간의 데이터 흐름의 예시적인 프로세스를 예시하는 흐름도이다.
도 6 은 도 4 에 예시된 호스트와 디바이스를 채용할 수 있는 예시적인 프로세서-기반의 시스템의 블록 다이어그램이다.
지금부터 도면들을 참조하여, 본 개시물의 몇몇 예시적인 양태들이 설명된다. 단어 "예시적인"은 본원에서 "실시형태인, 예시인 또는 예증인" 것을 의미하기 위해 사용된다. "예시적인"으로서 본원에서 설명된 임의의 양태는 다른 양태들에 비해 더 선호되거나 또는 더 유익한 것으로 해석될 필요는 없다.
상세한 설명에 개시된 양태들은 플래시 메모리들에서 커맨드 완료를 확인하는 것을 포함한다. 예시적인 양태는 소프트웨어 로크 및 미해결 요청 변수를 제거하고 트랜스퍼 요청 완료 레지스터로 대체하는 것을 포함한다. 트랜스퍼 요청 완료 레지스터는 범용 플래시 저장 (UFS) 트랜스퍼 프로토콜 (UTP) 트랜스퍼 요청 리스트 (UTRL) 슬롯들로 맵핑될 수도 있다. 호스트의 제어기 - 하드웨어 컴포넌트 - 는 도어벨 레지스터가 클리어되는 것과 동시에, 트랜스퍼 요청 완료시 트랜스퍼 요청 완료 레지스터에서 비트를 세팅할 수도 있다. 상기 비트가 판독된 후에, 그 비트는 트랜스퍼 요청 완료 레지스터에서 클리어된다. UFS 가 구체적으로 고려되지만, 내장형 멀티 미디어 제어기 (eMMC) 와 같은 다른 플래시 메모리 표준들이 또한 본 개시물의 양태들로부터 유리할 수도 있다 (예컨대, eMMC 는 UTRL 과 기능적으로 등가인 TDL (Task Descriptor List) 을 갖는다). 소프트웨어 로크 및 미해결 요청 변수를 대체하는 것은 그러한 소프트웨어 로크들의 사용에 의해 발생할 수도 있는 트랜스퍼 요청 차단들을 제거하고 레이턴시를 감소시킴으로써 성능을 개선시킨다. 특히, 완료 및 컨텍스트들을 이슈하는 것은 동시에 작업될 수 있다. 트랜스퍼 요청들은 동시에 다수의 컨텍스트들로부터 이슈될 수도 있다. 이들 다수의 컨텍스트들의 사용은 특히, 스마트폰들과 같은 멀티-코어 디바이스들에서 성능을 개선시킨다.
본 개시물의 양태들을 어드레싱하기 전에, 종래의 시스템들의 개관 및 그로부터 발생하는 이슈들이 도 1 내지 도 3 을 참조하여 제시된다. 본 개시물의 예시적인 양태들은 이하 도 4 를 참조하여 시작한다.
이와 관련하여, 도 1 은 컨덕터들 (14) 을 통해 디바이스 (12) 에 커플링되는 호스트 (10) 의 블록 다이어그램이다. 호스트 (10) 와 디바이스 (12) 간의 통신들은 2013 년 9 월에 발표된 UFS v2.0 표준에 부합한다. 본 개시물은 UFS 에 집중하고 있지만, 다른 플래시 표준들이 또한, 내장형 멀티 미디어 제어기 (eMMC) 를 포함하는 본 개시물의 양태들에서 유리할 수도 있다. 호스트 (10) 는 적절한 통신 인터페이스 (18) 에 동작가능하게 커플링된 하드웨어 기반 시스템인 호스트 제어기 (16) 를 포함한다. 호스트 제어기 (16) 는 호스트 소프트웨어 (20) 과 상호 동작한다. 종합적으로, 호스트 제어기 (16) 와 호스트 소프트웨어 (20) 는 제어 시스템이다.
도 1 을 계속 참조하여, 디바이스 (12) 는 적절한 통신 인터페이스 (24) 에 동작가능하게 커플링된 하드웨어 기반 시스템인 제어기 (22) 를 포함한다. 디바이스 (12) 는 추가로, 메모리 유닛 (26) (예컨대, NAND (Negated AND 또는 NOT AND) 플래시 스토리지 디바이스) 을 포함한다. 디바이스 (12) 는 추가로, 작업 큐 (28) 를 포함한다. 종합적으로, 제어기 (22) 및 제어기 (22) 의 동작과 연관된 임의의 소프트웨어는 제어 시스템이다.
호스트 (10) 는 추가로, 도어벨 레지스터 (30) (UTRLDBR) 를 포함한다. 도어벨 레지스터 (30) 는 호스트 제어기 (16) 에 의해 핸들링되는 트랜스퍼 요청 슬롯들의 개수와 동일한 수의 비트들을 갖는 하드웨어 기반 컴포넌트이다. 즉, 도어벨 레지스터 (30) 는 UFS 표준 프로토콜 트랜스퍼 요청 리스트에 대응하는 다수의 비트들을 갖는다.
도 1 을 계속 참조하여, 종래의 UFS 시스템에서, 호스트 (10) 를 통합하는 컴퓨팅 엘리먼트는 데이터를 메모리 유닛 (26) 으로 판독하거나 기록해야할 수도 있다. 따라서, 요청되는 데이터 트랜스퍼를 나타내는 트랜스퍼 요청이 호스트 제어기 (16) 로 전송될 수도 있다. 그 후, 호스트 소프트웨어 (20) 는 트랜스퍼 요청에 슬롯을 할당한다. 호스트 제어기 (16) 는 다수의 트랜스퍼 요청들을 핸들링하기 위해 (도시되지 않은) 다수의 슬롯들을 가질 수도 있다. 다수의 트랜스퍼 요청들은 특히, 멀티코어 프로세서들에서 일반적이다. 호스트 소프트웨어 (20) 가 디바이스 (12) 에 대한 트랜스퍼 요청을 준비했을 때, 호스트 소프트웨어 (20) 는 트랜스퍼 요청이 연관되는 슬롯에 대응하는 비트를 도어벨 레지스터 (30) 에서 세팅한다. 도어벨 레지스터 (30) 에서 비트를 세팅하는 것은, 트랜스퍼 요청을 통신 인터페이스 (18) 를 통해 디바이스 (12) 로 전송하도록 호스트 제어기 (16) 에 시그널링한다.
디바이스 (12) 는 UFS 표준 내의 관련 증거가 많은 (well documented) 규칙들에 따라 트랜스퍼 요청을 핸들링한다. 데이터 트랜스퍼가 발생하고, 데이터 트랜스퍼가 완료되면, 호스트 제어기 (16) 는 도어벨 레지스터 (30) 에서 비트를 클리어함으로써 호스트 소프트웨어 (20) 에 통지한다. 동작 시, 호스트 (10) 는 트랜스퍼 요청 인터럽트를 수신할 수도 있다. 호스트 소프트웨어 (20) 는 어떤 작업들이 완료되었는지 및 어떤 슬롯들이 이미 할당되었는지를 알기 위해 도어벨 레지스터 (30) 를 체크한다. 그러나, 추가 정보의 부재로, 호스트 소프트웨어 (20) 는 완료된 작업들에 대하여 0 으로 세팅된 비트들과 아직 전송되지 않은 요청에 대하여 0 으로 세팅된 비트들 간을 구별할 수 없다. 따라서, 호스트 소프트웨어는, 어떤 슬롯들이 할당되었는지를 표시하는 미해결 요청 변수 (미도시) 를 보유한다.
미해결 요청 변수는 트랜스퍼 요청을 전송할 준비들이 시작하면 업데이트되고, 트랜스퍼 요청에 대한 응답이 디바이스 (12) 로부터 수신되면 클리어된다. 호스트 소프트웨어 (20) 는 어떤 슬롯들이 요청들을 완료했는지를 알기 위해, 미해결 요청 변수를 도어벨 레지스터 (30) 와 비교한다. 추가 제어의 부재로, UFS 시스템은 에러들, 지연들, 중단된 커맨드들, 또는 커맨드들의 손실을 야기하는 경쟁 상태들을 가질 수도 있다. 2 개의 그러한 경쟁 상태들이 도 2a 및 도 2b 에 예시된다.
이와 관련하여, 도 2a 는 프로세스 (34) 를 통해, 미해결 요청 변수가 업데이트되기 전에 전송 요청이 정지될 때 무엇이 발생하는지를 예시한다. 프로세스 (34) 는 소프트웨어 및 하드웨어를 포함하는 상이한 엘리먼트들에 의해 구현될 수도 있고, 분리된 별개의 컴포넌트들 (예컨대, 상이한 서브-루틴들, 상이한 소프트웨어 모듈들, 상이한 IC, 등등) 일 수도 있은 것이 인식되어야 한다. 특히, 앞서 언급된 것과 같이, 도 1 의 호스트 소프트웨어 (20) 가 디바이스 (12) 에 대한 트랜스퍼 요청을 준비한 경우, 호스트 소프트웨어 (20) 는 트랜스퍼 요청이 연관되는 슬롯에 대응하는 비트를 도어벨 레지스터 (30) 에서 세팅한다 (블록 36). 호스트 (10) 의 컨텍스트는, 호스트 (10) 가 일부 다른 트랜스퍼 요청을 프로세싱하거나 일부 입력 데이터를 프로세싱하는 것에 대응하여 변화한다 (블록 38). 디바이스 (12) 는 트랜스퍼 요청을 프로세싱한다 (블록 40). 디바이스 (12) 는 트랜스퍼 요청을 프로세싱하기 위해 임의의 시간을 요구할 수도 있다. 디바이스 (12) 가 트랜스퍼 요청을 프로세싱하고 있지만, 컨텍스트 스위치, '전송 커맨드 프로세스' 를 전송하는 것 대 슬립하는 것이 발생할 수도 있다. 디바이스 (12) 가 트랜스퍼 요청을 완료하면, 디바이스 (12) 는 완료된 작업 통지를 전송한다. 그 후에, 호스트 (10) 는 완료 인터럽트를 발생한다 (블록 42). 이 지점에서, 컨텍스트가 변화하였기 때문에, 미해결 요청 변수는 결코 업데이트되지 않았다. 따라서, 완료 인터럽트에서, 호스트 (10) 는 도어벨 레지스터 (30) 를 체크하고 (블록 44), 미해결 요청 변수를 판독한다 (블록 46). 그러나, 앞서 언급된 것과 같이, 미해결 요청 변수가 업데이트되지 않았고, 따라서 완료된 요청은 인식되지 않으며 (블록 48), 커맨드는 중단되거나 타임 아웃된다 (블록 50).
유사하게, 도 2b 는 (앞서 설명되고, 프로세스 (34) 에서 설명된 경쟁 상태를 회피하기 위해 실행된 순서와 반대로) 미해결 요청 변수의 업데이트가 도어벨 레지스터 (30) 를 업데이트하기 전에 발생하는 프로세스 (52) 를 예시한다. 프로세스 (52) 는 소프트웨어 및 하드웨어를 포함하는 상이한 엘리먼트들에 의해 구현될 수도 있고, 분리된 별개의 컴포넌트들 (예컨대, 상이한 서브-루틴들, 상이한 소프트웨어 모듈들, 상이한 IC, 등등) 일 수도 있은 것이 인식되어야 한다. 그러나, 프로세스 (52) 는 커맨드가 완료되지만, 에러들이 있는, 다른 경쟁 상태 (즉, 2 개의 프로세스들이 동일한 리소스에 대하여 경쟁하는 중임) 를 발생한다. 특히, 프로세스 (52) 는 미해결 요청 변수가 업데이트되는 시점 (블록 54) 에서 시작한다. 다른 트랜스퍼 요청에 대한 완료 인터럽트가 발생된다 (블록 56). 그러나, 그 인터럽트는 도어벨 레지스터 (30) 를 업데이트하기 전에 발생한다. 따라서, 도어벨 레지스터 (30) 가 판독될 경우 (블록 58), 비트는 세팅되지 않는다. 그러나, 미해결 요청 변수가 판독될 경우 (블록 60), 호스트 소프트웨어 (20) 는 트랜스퍼 요청을 보고, 완료된 요청을 인식한다 (블록 62). 따라서, 호스트 소프트웨어 (20) 는 요청을 완료할 것이지만, 에러가 있다 (블록 64).
종래의 시스템들은 소프트웨어 로크의 사용을 통해 이들 경쟁 상태들을 방지한다. 소프트웨어 로크들은 레이턴시를 증가시킨다. 완료를 위해, 도 3 은 전송 요청 컨텍스트 (66) 및 요청 완료 컨텍스트 (68) 와 연관된 흐름 프로세스들을 예시한다. 전송 요청 컨텍스트 (66) 와 연관된 프로세스는 전송 요청 컨텍스트 시작과 함께 시작한다 (블록 70). 호스트 (10) 는 트랜잭션 데이터를 준비한다 (블록 72). 그 후에, 호스트 소프트웨어 (20) 는 로크를 세팅하고 인터럽트들을 디스에이블한다 (블록 74). 소프트웨어는 미해결 요청 변수를 세팅하고 (블록 76), 그 후에 도어벨 레지스터 (30) 가 세팅된다 (블록 78). 도어벨 레지스터 (30) 가 세팅된 후에, 로크가 디스에이블되고 인터럽트들이 인에이블된다 (블록 80). 로크가 제거된 후에, 전송 요청 컨텍스트가 종료한다 (블록 82).
도 3 을 계속 참조하여, 요청 완료 컨텍스트 (68) 가 시작한다 (블록 84). 호스트 제어기 (16) 는 도어벨 레지스터 (30) 에서 비트(들)을 클리어한다 (블록 85). 요청 완료 인터럽트가 발생하고, 호스트 소프트웨어 (20) 에 의해 로크가 생성된다 (블록 86). 호스트 (10) 는 호스트 소프트웨어 (20) 에서 미해결 요청 변수를 판독한다 (블록 88). 그 후에, 호스트 (10) 는 도어벨 레지스터 (30) 를 판독하고 (블록 90), 도어벨 레지스터 (30) 및 미해결 요청 변수를 참조하여 완료된 요청들을 결정한다 (블록 92). 각각의 완료된 요청에 대하여 (블록 94), 서브루틴이 수행되며, 여기서 응답 코드가 판독되고 (블록 96), 임의의 에러들이 핸들링되며 (블록 98), 상위 계층 (예컨대, 제 1 인스턴스에서 요청을 이슈한 소프트웨어) 에 요청 완료가 통지된다 (블록 100). 모든 완료된 요청들이 블록 94 에서 처리되었다면, 미해결 요청 변수의 대응하는 비트들이 클리어되고 (블록 101), 그 후 호스트 소프트웨어 (20) 는 로크를 제거하고 종료하며 (블록 102), 그 결과 요청 완료 컨텍스트의 종료가 발생한다 (블록 104). 전송 요청 컨텍스트 (66) 와 요청 완료 컨텍스트 (68) 양자에서 로크들의 존재는 지정자, 록킹된 시퀀스에 의해 강조된다 (블록 106).
전송 요청 컨텍스트 (66) 와 요청 완료 컨텍스트 (68) 의 프로세스들과 대조적으로, 본 개시물의 양태는 로크의 제거를 허용하고, 수반되는 단점들이 경감된다. 이와 관련하여, 도 4 는 (때때로 완료 통지 레지스터로 지칭되는) 커맨드 완료 레지스터 (UTRLCNR; 32) 를 포함하는 호스트 (10') 를 예시한다. 대부분의 다른 요청들에서, 호스트 (10') 는 도 1 의 호스트 (10) 와 동일한 엘리먼트들을 갖는 점에 유의한다. 도어벨 레지스터 (30) 와 마찬가지로, 커맨드 완료 레지스터 (32) 는 하드웨어 기반이고 호스트 제어기 (16) 에 의해 핸들링되는 슬롯들의 개수와 동일한 수의 비트들을 갖는다. 즉, 커맨드 완료 레지스터 (32) 의 사용은 로크들 대신 하드웨어 솔루션을 허용한다. 하드웨어 솔루션의 사용에 의해, 요청들의 전송 및 완료는 임의의 지점에서 시작할 수 있다. 다수의 컨텍스트들이 동시에 동작하게 하는 능력은, 특히 멀티-코어 프로세서들에 대하여, 동작 효율들을 개선시킨다.
이와 관련하여, 도 5 는 전송 요청 컨텍스트 (108) 및 요청 완료 컨텍스트 (110) 를 제공한다. 전송 요청 컨텍스트 (108) 가 시작하고 (블록 112), 호스트 소프트웨어 (20) 는 트랜잭션 데이터를 준비한다 (블록 114). 호스트 소프트웨어 (20) 는 도어벨 레지스터 (30) 를 세팅하고 (블록 116), 전송 요청이 종료한다 (블록 118). 미해결 요청들에 대하여 소프트웨어 변수를 세팅할 필요가 없기 때문에, 발생하는 인터럽트에 대해 걱정할 필요가 없다.
도 5 를 계속 참조하여, 요청 완료 컨텍스트 (110) 가 시작한다 (블록 120). 초기에, 하드웨어는 도어벨 레지스터 (30) 를 클리어하고 커맨드 완료 레지스터 (32) 를 세팅한다 (블록 122). 인터럽트들이 발생한다 (블록 124). 호스트 소프트웨어 (20) 는 어떤 작업들이 완료되는지를 확인하기 위해 커맨드 완료 레지스터 (32) 를 판독한다 (블록 126). 각각의 완료된 작업에 대하여, 서브루틴이 시작하며 (블록 128), 여기서 응답 코드가 판독되고 (블록 130), 임의의 에러들이 핸들링되며 (블록 132), 호스트 소프트웨어 (20) 가 커맨드 완료 레지스터 (32) 를 클리어한다 (블록 134). 호스트 소프트웨어 (20) 가 커맨드 완료 레지스터 (32) 를 클리어한 후에, 상위 계층 (예컨대, 요청을 이슈한 소프트웨어) 에는 요청 완료가 통지된다 (블록 136). 클리어 및 통지 이후에, 비트에 대응하는 커맨드 완료 레지스터 (32) 에서의 슬롯은 요구되는 또는 정의되는 바에 따라 반전될 수도 있다. 모든 완료된 요청들이 프로세싱되면 (블록 128), 요청 완료 컨텍스트 (110) 가 종료한다 (블록 138). 로크가 (도 3 에서 106 으로 강조된) 인터럽트들을 디스에이블하는 시간 주기와는 대조적으로, 블록 (139) 은 인터럽트들이 임의의 지점에서 발생할 수 있고, 특히 종래의 시스템들이 로크를 부과하는 시간들 동안 발생할 수도 있는 것을 강조한다. 앞서 논의된 것과 같이, 로크의 제거는 성능을 개선시키고, 새로운 하드웨어 (즉, 커맨드 완료 레지스터 (32)) 의 추가가 개선된 성능에 대한 허용가능한 트레이드오프로서 관찰된다.
본원에 개시된 양태들에 따라 플래시 메모리들에서 커맨드 완료를 확인하는 것은 임의의 프로세서-기반 디바이스에서 제공되거나, 임의의 프로세서-기반 디바이스에 통합될 수도 있다. 제한이 아닌 예들은, 셋톱 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정된 로케이션 데이터 유닛, 모바일 로케이션 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 포터블 컴퓨터, 데스크톱 컴퓨터, 개인 디지털 보조장치 (PDA), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 포터블 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, 디지털 비디오 디스크 (DVD) 플레이어, 및 포터블 디지털 비디오 플레이어를 포함한다.
이와 관련하여, 도 6 은 도 4 에 도시된 호스트 (10') 및 디바이스 (12) 를 채용할 수 있는 프로세서-기반 시스템 (140) 의 일 예를 예시한다. 이러한 예에서, 프로세서-기반 시스템 (140) 은, 각각 하나 이상의 프로세서들 (144) 을 포함하는 하나 이상의 중앙 프로세싱 유닛들 (CPU들; 142) 을 포함한다. CPU(들) (142) 은 마스터 디바이스일 수도 있고, 호스트 (10') 을 포함할 수도 있다. CPU(들) (142) 은 일시적으로 저장된 데이터로의 신속한 액세스를 위해 프로세서(들) (144) 에 커플링된 캐시 메모리 (146) 를 가질 수도 있다. CPU(들) (142) 은 시스템 버스 (148) 에 커플링된다. 잘 알려진 것과 같이, CPU(들) (142) 은 시스템 버스 (148) 를 통해 어드레스, 제어, 및 데이터 정보를 교환함으로써 이들 다른 디바이스들과 통신한다. 예를 들어, CPU(들) (142) 은 디바이스 (12) 를 포함할 수도 있는 메모리 시스템 (150) 에 버스 트랜잭션 요청들을 통신할 수 있다. 도 6 에 예시되지는 않았지만, 다중 시스템 버스들 (148) 이 제공될 수 있고, 여기서 각각의 시스템 버스 (148) 는 상이한 패브릭을 구성한다.
다른 마스터 및 슬레이브 디바이스들이 시스템 버스 (148) 에 접속될 수 있다. 도 6 에 예시된 것과 같이, 이들 디바이스들은, (구체적으로 예시되지 않은) 다수의 메모리 유닛들을 가질 수도 있는 메모리 시스템 (150), 하나 이상의 입력 디바이스들 (152), 하나 이상의 출력 디바이스들 (154), 하나 이상의 네트워크 인터페이스 디바이스들 (156), 및 하나 이상의 디스플레이 제어기들 (158) 을, 예들로서 포함할 수 있다. 입력 디바이스(들) (152) 은 입력 키들, 스위치들, 음성 프로세서들, 등을 포함하지만 이에 제한되지 않는 임의의 타입의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들) (154) 은 오디오, 비디오, 다른 시각적 표시자들, 등을 포함하지만 이에 제한되지 않는 임의의 타입의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들) (156) 은 데이터의 네트워크 (160) 로 및 네트워크 (160) 로부터의 교환을 허용하도록 구성된 임의의 디바이스들일 수 있다. 네트워크 (160) 는 유선 또는 무선 네트워크, 개인 또는 공공 네트워크, 로컬 영역 네트워크 (LAN), 광역 네트워크 (WLAN), 및 인터넷을 포함하지만 이에 제한되지 않는 임의의 타입의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들) (156) 은 요구되는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다.
CPU(들) (142) 은 또한, 하나 이상의 디스플레이들 (162) 에 전송된 정보를 제어하기 위해, 시스템 버스 (148) 를 통해 디스플레이 제어기(들) (158) 에 액세스하도록 구성될 수도 있다. 디스플레이 제어기(들) (158) 은 하나 이상의 비디오 프로세서들 (164) 을 통해 디스플레이되도록 정보를 디스플레이(들) (162) 로 전송하고, 하나 이상의 비디오 프로세서들 (164) 은 디스플레이될 정보를 디스플레이(들) (162) 에 적합한 포맷으로 프로세싱한다. 디스플레이(들) (162) 은 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이 등을 포함하지만 이에 제한되지 않는 임의의 타입의 디스플레이를 포함할 수 있다.
당업자들은 추가로, 본원에 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어, 메모리에 또는 다른 컴퓨터 판독가능 매체에 저장되고 프로세서 또는 다른 프로세싱 디바이스에 의해 실행되는 명령들, 또는 이들 양자의 조합들로서 구현될 수도 있음을 인식할 것이다. 본원에 설명된 디바이스들은 예들로서, 임의의 회로, 하드웨어 컴포넌트, 집적 회로 (IC), 또는 IC 칩에서 채용될 수도 있다. 본원에 개시된 메모리는 임의의 타입 및 사이즈의 메모리일 수도 있고, 원하는 임의의 타입의 정보를 저장하도록 구성될 수도 있다. 이러한 상호교환 가능성을 분명히 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 일반적으로 그들의 기능의 관점에서 상기 기술되었다. 그러한 기능이 어떻게 구현되는지는 특정 애플리케이션, 설계 선택들, 및/또는 전체 시스템에 부과되는 설계 제약들에 따라 달라진다. 당업자는 설명된 기능을 각각의 특정 애플리케이션에 대하여 다양한 방식으로 구현할 수도 있지만, 그러한 구현의 결정들이 본 개시의 범위로부터의 일탈을 야기하는 것으로서 해석되지는 않아야 한다.
본원에서 개시된 구현들과 연계하여 설명된 여러가지 예시적인 논리 블록들, 모듈들, 및 회로들은 본원에서 개시된 기능들을 수행하도록 설계된 프로세서, 디지털 신호 프로세서 (DSP), 주문형 반도체 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA) 또는 다른 프로그래머블 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 이들의 임의의 조합에 의해 구현되거나 수행될 수도 있다. 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들면, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 연계한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성으로서 구현될 수도 있다.
본원에 개시된 양태들은 하드웨어에서 및 하드웨어에 저장된 명령들에서 구현될 수도 있고, 예컨대, RAM (Random Access Memory), 플래시 메모리, ROM (Read Only Memory), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), 레지스터, 하드디스크, 클리어가능 디스크, CD-ROM, 또는 종래 기술에서 공지된 임의의 다른 형태의 컴퓨터 판독가능 매체 내에 상주할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되어, 프로세가 저장 매체로부터 정보를 판독하거나 저장 매체에 정보를 기록할 수 있다. 대안에서, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서 및 저장 매체는 ASIC 에 상주할 수도 있다. ASIC 는 원격 스테이션에 상주할 수도 있다. 대안에서, 프로세서와 저장 매체는 원격 스테이션, 기지국, 또는 서버에 개별 컴포넌트들로 상주할 수도 있다.
본원의 임의의 예시적인 양태들에 설명된 동작 단계들은 예들 및 논의를 제공하도록 설명되는 것에 또한 유의한다. 설명된 동작들은 예시된 순서들이 아닌 다수의 상이한 순서들로 수행될 수도 있다. 추가로, 단일 동작 단계에서 설명되는 동작들은 실제로 다수의 상이한 단계들에서 수행될 수도 있다. 추가로, 예시적인 양태들에서 논의되는 하나 이상의 동작 단계들이 결합될 수도 있다. 흐름도 다이어그램들에서 예시된 동작 단계에 당업자에게 용이하게 인식되는 것과 같은 다수의 상이한 변경들이 적용될 수도 있음이 이해될 것이다. 당업자는 또한, 정보 및 신호들이 임의의 다양한 상이한 기술들 및 기법들을 사용하여 표현될 수도 있음을 이해할 것이다. 예를 들어, 상기 설명 전반에 걸쳐 참조될 수도 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압, 전류, 전자기파, 자계 또는 자성 입자, 광계 또는 광자, 또는 이들의 임의의 조합에 의해 표현될 수도 있다.
앞서의 본 개시물의 설명은 당업자들이 개시물을 제조하거나 이용하는 것을 가능하게 하기 위해 제공된다. 본 개시물의 다양한 수정들이 당업자들에게 쉽게 자명할 것이고, 본원에 정의된 일반적인 원리들은 본 개시물의 사상 또는 범위를 벗어나지 않으면서 다양한 변형들에 적용될 수도 있다. 따라서, 본 개시물은 본원에 설명된 예시들 및 설계들로 제한되지 않고, 본원에 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위에 부합되고자 한다.
Claims (26)
- 범용 플래시 스토리지 (UFS) 시스템으로서,
UFS 트랜스퍼 프로토콜 (UTP) 트랜스퍼 요청 리스트 (UTRL) 에 대응하는 다수의 비트들을 갖는 도어벨 레지스터;
동일한 수의 비트들을 갖는 완료 통지 레지스터; 및
상기 도어벨 레지스터 및 상기 완료 통지 레지스터에 동작가능하게 커플링된 제어 시스템을 포함하며,
상기 제어 시스템은,
전송 요청 시작을 위해 상기 도어벨 레지스터에서 도어벨 비트를 세팅하고;
트랜스퍼 요청 완료시 상기 완료 통지 레지스터에서 완료 비트를 세팅하고; 그리고
트랜스퍼 요청 완료시 상기 도어벨 비트를 클리어하도록
구성되는, 범용 플래시 스토리지 시스템. - 제 1 항에 있어서,
상기 제어 시스템은 추가로, 트랜스퍼 요청을 디바이스에 이슈하도록 구성되는, 범용 플래시 스토리지 시스템. - 제 2 항에 있어서,
상기 전송 요청 시작은 상기 트랜스퍼 요청과 연관되는, 범용 플래시 스토리지 시스템. - 제 1 항에 있어서,
호스트를 디바이스에 커플링하도록 구성된 통신 인터페이스를 더 포함하는, 범용 플래시 스토리지 시스템. - 제 2 항에 있어서,
상기 제어 시스템은 추가로, 상기 트랜스퍼 요청의 완료를 프로세싱한 후에 상기 완료 비트를 클리어하도록 구성되는, 범용 플래시 스토리지 시스템. - 제 5 항에 있어서,
상기 제어 시스템은 추가로, 상기 완료 비트를 클리어한 후에 상기 완료 비트와 연관된 슬롯을 재사용하도록 구성되는, 범용 플래시 스토리지 시스템. - 제 2 항에 있어서,
상기 트랜스퍼 요청은 데이터를 상기 디바이스에 기록하기 위한 기록 커맨드를 포함하는, 범용 플래시 스토리지 시스템. - 제 2 항에 있어서,
상기 트랜스퍼 요청은 데이터를 상기 디바이스로부터 판독하기 위한 판독 커맨드를 포함하는, 범용 플래시 스토리지 시스템. - 제 1 항에 있어서,
셋톱 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정된 로케이션 데이터 유닛, 모바일 로케이션 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 포터블 컴퓨터, 데스크톱 컴퓨터, 개인 디지털 보조장치 (PDA), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 포터블 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, 디지털 비디오 디스크 (DVD) 플레이어, 및 포터블 디지털 비디오 플레이어로 이루어진 그룹으로부터 선택된 디바이스에 통합되는, 범용 플래시 스토리지 시스템. - 메모리 시스템으로서,
다수의 비트들을 갖는 도어벨 레지스터;
동일한 수의 비트들을 갖는 완료 레지스터; 및
상기 도어벨 레지스터 및 상기 완료 레지스터에 동작가능하게 커플링된 제어 시스템을 포함하며,
상기 제어 시스템은,
전송 요청 시작을 위해 상기 도어벨 레지스터에서 도어벨 비트를 세팅하고;
트랜스퍼 요청 완료시 상기 완료 레지스터에서 완료 비트를 세팅하고; 그리고
트랜스퍼 요청 완료시 상기 도어벨 비트를 클리어하도록
구성되는, 메모리 시스템. - 메모리 시스템을 제어하는 방법으로서,
호스트에서 트랜스퍼 요청을 생성하는 단계;
상기 호스트의 도어벨 레지스터에서 상기 트랜스퍼 요청을 식별하는 비트를 세팅하는 단계;
통신 인터페이스를 통해 상기 트랜스퍼 요청을 디바이스로 전달하는 단계;
상기 트랜스퍼 요청과 연관된 트랜스퍼를 완료하는 단계;
상기 도어벨 레지스터에서 상기 비트를 클리어하는 단계; 및
완료 레지스터에서 완료 비트를 세팅하는 단계를 포함하는, 메모리 시스템을 제어하는 방법. - 제 11 항에 있어서,
상기 트랜스퍼 요청을 생성하는 단계는 데이터를 상기 디바이스로부터 판독하기 위한 판독 커맨드를 생성하는 단계를 포함하는, 메모리 시스템을 제어하는 방법. - 제 11 항에 있어서,
상기 트랜스퍼 요청을 생성하는 단계는 데이터를 상기 디바이스에 기록하기 위한 기록 커맨드를 생성하는 단계를 포함하는, 메모리 시스템을 제어하는 방법. - 제 11 항에 있어서,
상기 트랜스퍼를 시작하는 단계를 더 포함하는, 메모리 시스템을 제어하는 방법. - 제 11 항에 있어서,
소프트웨어 로크에 대한 요구 없이 상기 트랜스퍼 요청에 대한 인터럽트들을 핸들링하는 단계를 더 포함하는, 메모리 시스템을 제어하는 방법. - 제 11 항에 있어서,
제 2 트랜스퍼 요청에 의해 생성된 인터럽트를 수신하는 단계를 더 포함하는, 메모리 시스템을 제어하는 방법. - 제 11 항에 있어서,
상기 트랜스퍼 요청의 완료를 프로세싱한 후에 상기 완료 비트를 클리어하는 단계를 더 포함하는, 메모리 시스템을 제어하는 방법. - 제 17 항에 있어서,
상기 완료 비트를 클리어한 후에 상기 완료 비트와 연관된 슬롯을 재사용하는 단계를 더 포함하는, 메모리 시스템을 제어하는 방법. - 내장형 멀티 미디어 제어기 (eMMC) 메모리 시스템으로서,
eMMC 작업 디스크립터 리스트 (TDL) 에 대응하는 다수의 비트들을 갖는 도어벨 레지스터;
동일한 수의 비트들을 갖는 완료 통지 레지스터; 및
상기 도어벨 레지스터 및 상기 완료 통지 레지스터에 동작가능하게 커플링된 제어 시스템을 포함하며,
상기 제어 시스템은,
전송 요청 시작을 위해 상기 도어벨 레지스터에서 도어벨 비트를 세팅하고;
트랜스퍼 요청 완료시 상기 완료 통지 레지스터에서 완료 비트를 세팅하고; 그리고
트랜스퍼 요청 완료시 상기 도어벨 비트를 클리어하도록
구성되는, 내장형 멀티 미디어 제어기 메모리 시스템. - 제 19 항에 있어서,
상기 제어 시스템은 추가로, 트랜스퍼 요청을 디바이스에 이슈하도록 구성되는, 내장형 멀티 미디어 제어기 메모리 시스템. - 제 20 항에 있어서,
상기 전송 요청 시작은 상기 트랜스퍼 요청과 연관되는, 내장형 멀티 미디어 제어기 메모리 시스템. - 제 19 항에 있어서,
호스트를 디바이스에 커플링하도록 구성된 통신 인터페이스를 더 포함하는, 내장형 멀티 미디어 제어기 메모리 시스템. - 제 20 항에 있어서,
상기 제어 시스템은 추가로, 상기 트랜스퍼 요청의 완료를 프로세싱한 후에 상기 완료 비트를 클리어하도록 구성되는, 내장형 멀티 미디어 제어기 메모리 시스템. - 제 23 항에 있어서,
상기 제어 시스템은 추가로, 상기 완료 비트를 클리어한 후에 상기 완료 비트와 연관된 슬롯을 재사용하도록 구성되는, 내장형 멀티 미디어 제어기 메모리 시스템. - 제 20 항에 있어서,
상기 트랜스퍼 요청은 데이터를 상기 디바이스에 기록하기 위한 기록 커맨드를 포함하는, 내장형 멀티 미디어 제어기 메모리 시스템. - 제 20 항에 있어서,
상기 트랜스퍼 요청은 데이터를 상기 디바이스로부터 판독하기 위한 판독 커맨드를 포함하는, 내장형 멀티 미디어 제어기 메모리 시스템.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361875907P | 2013-09-10 | 2013-09-10 | |
US61/875,907 | 2013-09-10 | ||
US14/467,404 | 2014-08-25 | ||
US14/467,404 US9348537B2 (en) | 2013-09-10 | 2014-08-25 | Ascertaining command completion in flash memories |
PCT/US2014/052667 WO2015038325A1 (en) | 2013-09-10 | 2014-08-26 | Ascertaining command completion in flash memories |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160054494A KR20160054494A (ko) | 2016-05-16 |
KR101754545B1 true KR101754545B1 (ko) | 2017-07-19 |
Family
ID=52626699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167007288A KR101754545B1 (ko) | 2013-09-10 | 2014-08-26 | 플래시 메모리들에서 커맨드 완료의 확인 |
Country Status (19)
Country | Link |
---|---|
US (1) | US9348537B2 (ko) |
EP (2) | EP3044687A1 (ko) |
JP (2) | JP6173603B2 (ko) |
KR (1) | KR101754545B1 (ko) |
CN (1) | CN105556497B (ko) |
AU (1) | AU2014318238B2 (ko) |
BR (1) | BR112016005368B1 (ko) |
CA (1) | CA2920748C (ko) |
CL (1) | CL2016000555A1 (ko) |
HK (1) | HK1222239A1 (ko) |
MX (1) | MX350915B (ko) |
MY (1) | MY177952A (ko) |
NZ (1) | NZ717400A (ko) |
PH (1) | PH12016500339A1 (ko) |
RU (1) | RU2016107810A (ko) |
SA (1) | SA516370693B1 (ko) |
SG (1) | SG11201600764RA (ko) |
TW (1) | TWI570568B (ko) |
WO (1) | WO2015038325A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11941246B2 (en) | 2021-06-07 | 2024-03-26 | SK Hynix Inc. | Memory system, data processing system including the same, and operating method thereof |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9881680B2 (en) | 2014-06-03 | 2018-01-30 | Qualcomm Incorporated | Multi-host power controller (MHPC) of a flash-memory-based storage device |
US9690720B2 (en) * | 2014-06-03 | 2017-06-27 | Qualcomm Incorporated | Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device |
US9632953B2 (en) * | 2014-06-03 | 2017-04-25 | Qualcomm Incorporated | Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers |
RU2610681C1 (ru) * | 2016-02-18 | 2017-02-14 | Акционерное общество "Научно-исследовательский институт вычислительных комплексов им. М.А. Карцева" (АО "НИИВК им. М.А. Карцева") | Способ сохранения информации в аварийных регистраторах |
KR20180045103A (ko) * | 2016-10-24 | 2018-05-04 | 삼성전자주식회사 | 적응형 인터럽트를 생성하는 데이터 저장 장치 및 그것의 동작 방법 |
US10466903B2 (en) | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
CN110073323B (zh) * | 2017-03-24 | 2022-10-25 | 西部数据技术公司 | 使用控制器存储器缓冲区进行推测性执行命令的系统和方法 |
US10452278B2 (en) | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
US10725835B2 (en) | 2017-05-03 | 2020-07-28 | Western Digital Technologies, Inc. | System and method for speculative execution of commands using a controller memory buffer |
US10509569B2 (en) | 2017-03-24 | 2019-12-17 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
US10296249B2 (en) | 2017-05-03 | 2019-05-21 | Western Digital Technologies, Inc. | System and method for processing non-contiguous submission and completion queues |
KR20190051530A (ko) | 2017-11-07 | 2019-05-15 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법 |
JP6954864B2 (ja) | 2018-04-13 | 2021-10-27 | ルネサスエレクトロニクス株式会社 | 半導体装置およびufsシステム |
KR102075689B1 (ko) * | 2018-08-16 | 2020-02-10 | 주식회사 넥스트칩 | 태스크의 기능 안전을 보장하기 위한 방법 및 장치 |
KR20210016938A (ko) * | 2019-08-06 | 2021-02-17 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 그것의 동작방법 |
CN116235139B (zh) * | 2020-07-31 | 2024-07-30 | 华为技术有限公司 | 一种处理器、ufs控制方法及计算机系统 |
KR20220105304A (ko) * | 2021-01-20 | 2022-07-27 | 에스케이하이닉스 주식회사 | 시스템 및 시스템의 동작 방법 |
CN114296639B (zh) * | 2021-12-10 | 2024-02-20 | 深圳大普微电子科技有限公司 | 命令处理方法及闪存设备 |
CN117012267B (zh) * | 2023-06-30 | 2024-03-19 | 珠海妙存科技有限公司 | 对ufs所写入数据的验证方法、控制器及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060235999A1 (en) * | 2005-04-15 | 2006-10-19 | Shah Hemal V | Doorbell mechanism |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3783255A (en) * | 1972-07-12 | 1974-01-01 | Gte Automatic Electric Lab Inc | Data handling system maintenance arrangement for processing system trouble conditions |
US5870758A (en) * | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
US6353845B1 (en) * | 1998-06-25 | 2002-03-05 | International Business Machines Corporation | Computer system, program product and method for tracking asynchronous I/O with timeout support |
US6434637B1 (en) * | 1998-12-31 | 2002-08-13 | Emc Corporation | Method and apparatus for balancing workloads among paths in a multi-path computer system based on the state of previous I/O operations |
US6275876B1 (en) * | 1999-05-21 | 2001-08-14 | International Business Machines Corporation | Specifying wrap register for storing memory address to store completion status of instruction to external device |
US6587893B1 (en) | 2000-04-28 | 2003-07-01 | Hewlett-Packard Development Company, L.P. | Method and apparatus to determine when all outstanding fetches are complete |
US6341367B1 (en) * | 2000-07-25 | 2002-01-22 | Lsi Logic Corporation | Hardware realized state machine |
US7328304B2 (en) * | 2004-02-27 | 2008-02-05 | Intel Corporation | Interface for a block addressable mass storage system |
US7219178B2 (en) * | 2004-09-30 | 2007-05-15 | Arm Limited | Bus deadlock avoidance |
JP2006195746A (ja) * | 2005-01-13 | 2006-07-27 | Oki Electric Ind Co Ltd | マルチレイヤバスシステム |
JP4848562B2 (ja) * | 2005-08-22 | 2011-12-28 | 新世代株式会社 | マルチプロセッサ |
JP4814617B2 (ja) * | 2005-11-01 | 2011-11-16 | 株式会社日立製作所 | ストレージシステム |
US7587543B2 (en) * | 2006-01-23 | 2009-09-08 | International Business Machines Corporation | Apparatus, method and computer program product for dynamic arbitration control |
GB2440758B (en) * | 2006-08-08 | 2011-03-30 | Advanced Risc Mach Ltd | Interconnect logic for a data processing apparatus |
US8156273B2 (en) * | 2007-05-10 | 2012-04-10 | Freescale Semiconductor, Inc. | Method and system for controlling transmission and execution of commands in an integrated circuit device |
US7657682B2 (en) * | 2007-09-14 | 2010-02-02 | Freescale Semiconductor, Inc. | Bus interconnect with flow control |
EP4092590A1 (en) * | 2009-07-10 | 2022-11-23 | BlackBerry Limited | System and method for performing serialization of devices |
US8549204B2 (en) * | 2010-02-25 | 2013-10-01 | Fresco Logic, Inc. | Method and apparatus for scheduling transactions in a multi-speed bus environment |
JP5957647B2 (ja) * | 2010-06-18 | 2016-07-27 | シーゲイト テクノロジー エルエルシーSeagate Technology LLC | スケーラブルな記憶装置 |
JP2012073851A (ja) * | 2010-09-29 | 2012-04-12 | Sony Corp | バスシステムおよびそのデッドロック回避回路 |
TWI521343B (zh) * | 2011-08-01 | 2016-02-11 | Toshiba Kk | An information processing device, a semiconductor memory device, and a semiconductor memory device |
US8700834B2 (en) * | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
EP2761481A4 (en) * | 2011-09-30 | 2015-06-17 | Intel Corp | PRESENTATION OF DIRECT ACCESS STORAGE DEVICE IN LOGIC READER MODEL |
US8341342B1 (en) * | 2012-03-23 | 2012-12-25 | DSSD, Inc. | Storage system with incremental multi-dimensional RAID |
US8301832B1 (en) * | 2012-03-23 | 2012-10-30 | DSSD, Inc. | Storage system with guaranteed read latency |
US8370567B1 (en) * | 2012-03-23 | 2013-02-05 | DSSD, Inc. | Storage system with self describing data |
-
2014
- 2014-08-25 US US14/467,404 patent/US9348537B2/en active Active
- 2014-08-26 SG SG11201600764RA patent/SG11201600764RA/en unknown
- 2014-08-26 JP JP2016540914A patent/JP6173603B2/ja active Active
- 2014-08-26 WO PCT/US2014/052667 patent/WO2015038325A1/en active Application Filing
- 2014-08-26 EP EP14767183.8A patent/EP3044687A1/en not_active Ceased
- 2014-08-26 MY MYPI2016700399A patent/MY177952A/en unknown
- 2014-08-26 KR KR1020167007288A patent/KR101754545B1/ko active IP Right Grant
- 2014-08-26 BR BR112016005368-0A patent/BR112016005368B1/pt active IP Right Grant
- 2014-08-26 NZ NZ717400A patent/NZ717400A/en not_active IP Right Cessation
- 2014-08-26 MX MX2016002983A patent/MX350915B/es active IP Right Grant
- 2014-08-26 CA CA2920748A patent/CA2920748C/en not_active Expired - Fee Related
- 2014-08-26 CN CN201480049956.9A patent/CN105556497B/zh active Active
- 2014-08-26 AU AU2014318238A patent/AU2014318238B2/en not_active Ceased
- 2014-08-26 EP EP22194758.3A patent/EP4177764A1/en active Pending
- 2014-08-26 RU RU2016107810A patent/RU2016107810A/ru not_active Application Discontinuation
- 2014-08-29 TW TW103130009A patent/TWI570568B/zh active
-
2016
- 2016-02-19 PH PH12016500339A patent/PH12016500339A1/en unknown
- 2016-03-07 SA SA516370693A patent/SA516370693B1/ar unknown
- 2016-03-10 CL CL2016000555A patent/CL2016000555A1/es unknown
- 2016-08-30 HK HK16110301.5A patent/HK1222239A1/zh unknown
-
2017
- 2017-05-09 JP JP2017092848A patent/JP6599397B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060235999A1 (en) * | 2005-04-15 | 2006-10-19 | Shah Hemal V | Doorbell mechanism |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11941246B2 (en) | 2021-06-07 | 2024-03-26 | SK Hynix Inc. | Memory system, data processing system including the same, and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
RU2016107810A (ru) | 2017-10-16 |
SG11201600764RA (en) | 2016-03-30 |
JP6599397B2 (ja) | 2019-10-30 |
TWI570568B (zh) | 2017-02-11 |
CL2016000555A1 (es) | 2016-11-18 |
MX2016002983A (es) | 2016-06-02 |
CN105556497B (zh) | 2017-11-07 |
TW201523267A (zh) | 2015-06-16 |
RU2016107810A3 (ko) | 2018-06-25 |
MX350915B (es) | 2017-09-25 |
CA2920748A1 (en) | 2015-03-19 |
AU2014318238A1 (en) | 2016-03-17 |
JP2017152041A (ja) | 2017-08-31 |
KR20160054494A (ko) | 2016-05-16 |
JP2016539429A (ja) | 2016-12-15 |
BR112016005368B1 (pt) | 2022-09-27 |
SA516370693B1 (ar) | 2018-10-04 |
MY177952A (en) | 2020-09-28 |
US20150074338A1 (en) | 2015-03-12 |
EP4177764A1 (en) | 2023-05-10 |
HK1222239A1 (zh) | 2017-06-23 |
CA2920748C (en) | 2017-09-05 |
WO2015038325A1 (en) | 2015-03-19 |
PH12016500339B1 (en) | 2016-05-02 |
PH12016500339A1 (en) | 2016-05-02 |
NZ717400A (en) | 2017-06-30 |
US9348537B2 (en) | 2016-05-24 |
AU2014318238B2 (en) | 2017-06-08 |
EP3044687A1 (en) | 2016-07-20 |
JP6173603B2 (ja) | 2017-08-02 |
CN105556497A (zh) | 2016-05-04 |
BR112016005368A2 (ko) | 2017-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101754545B1 (ko) | 플래시 메모리들에서 커맨드 완료의 확인 | |
RU2640652C2 (ru) | Обеспечение очереди команд во встроенной памяти | |
US20160371222A1 (en) | COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER | |
IE20080798A1 (en) | Hot plug device with means to initiate a hot plug operation on the device | |
CN108780387B (zh) | 虚拟化环境中的存储资源管理 | |
CN107408092B (zh) | 用于多端口物理层(phy)的锁相环(pll)的共享控制 | |
WO2021155491A1 (en) | Data transfer with media transfer protocol (mtp) over universal serial bus (usb) | |
JP5482472B2 (ja) | データ転送装置およびデータ転送方法 | |
CN117055813A (zh) | 针对存储器元件的分叉存储器管理 | |
KR20120043478A (ko) | 다중 바이트 전송을 위한 직렬 데이터 송수신 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |