KR101861471B1 - 플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc) 에서의 커맨드 트랩 - Google Patents

플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc) 에서의 커맨드 트랩 Download PDF

Info

Publication number
KR101861471B1
KR101861471B1 KR1020167033809A KR20167033809A KR101861471B1 KR 101861471 B1 KR101861471 B1 KR 101861471B1 KR 1020167033809 A KR1020167033809 A KR 1020167033809A KR 20167033809 A KR20167033809 A KR 20167033809A KR 101861471 B1 KR101861471 B1 KR 101861471B1
Authority
KR
South Korea
Prior art keywords
request
iov
command
trap
response
Prior art date
Application number
KR1020167033809A
Other languages
English (en)
Other versions
KR20170013269A (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 KR20170013269A publication Critical patent/KR20170013269A/ko
Application granted granted Critical
Publication of KR101861471B1 publication Critical patent/KR101861471B1/ko

Links

Images

Classifications

    • 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or 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
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (IOV) 호스트 제어기 (HC) (IOV-HC) 에서의 커맨드 트랩이 개시되어 있다. 하나의 양태에서, IOV-HC는 다수의 입/출력 (I/O) 클라이언트들 중 하나의 입/출력 (I/O) 클라이언트의 클라이언트 레지스터 인터페이스 (CRI) 로부터 요청을 수신하도록 구성된다. IOV-HC는 요청이 전송 프로토콜 엔진에 전달되기 이전에 요청의 콘텐츠를 검사한다. 컨텐츠에 기초하여, IOV-HC는 요청이 더 프로세싱되어야 하는지 또는 트랩되어야 하는지를 결정한다. 상기 요청이 트랩되어야 한다고 IOV-HC가 결정하는 경우, IOV-HC는 요청 트랩을 사용하여 요청을 트랩한다. 몇몇 양태들에서, IOV-HC는, 요청이 트랩되었다고 VMM에 통지하기 위해 가상 머신 관리자 (VMM) 로 인터럽트를 생성한다. 몇몇 양태들에서, IOV-HC는, 트랩된 요청이 시작된 CRI에 대한 응답을 생성하도록 VMM로부터 명령들을 수신하기 위해 응답 생성 회로를 제공한다.

Description

플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (IOV) 호스트 제어기 (HC) (IOV-HC) 에서의 커맨드 트랩{COMMAND TRAPPING IN AN INPUT/OUTPUT VIRTUALIZATION (IOV) HOST CONTROLLER (HC) (IOV-HC) OF A FLASH-MEMORY-BASED STORAGE DEVICE}
우선권 주장
본 출원은, 2014년 6월 3일에 출원되고 발명의 명칭이 "COMMAND TRAPPING IN A MULTI-CLIENT UNIVERSAL FLASH STORAGE (UFS) HOST CONTROLLER"인 미국 특허 가출원 일련 번호 62/007,123을 우선권 주장하며, 이 내용은 그 전체가 본원에 참조로써 포함된다.
본 출원은 또한 2015년 6월 2일에 출원되고 발명의 명칭이 "COMMAND TRAPPING IN AN INPUT/OUTPUT VIRTUALIZATION (IOV) HOST CONTROLLER (HC) (IOV-HC) OF A FLASH-MEMORY-BASED STORAGE DEVICE"인 미국 특허 출원 일련 번호 14/728,400을 우선권 주장하며, 이 내용은 그 전체가 본원에 참조로써 포함된다.
개시의 분야
본 개시의 기술은 일반적으로 모바일 컴퓨팅 디바이스들에서의 플래시 메모리 기반의 저장에 관한 것이다.
플래시 메모리는, 데이터가 전자적으로 기록 및 소거되는 비휘발성 데이터 저장 매체이다. 플래시 메모리는, 메모리 카드들, 고체 상태 드라이브들, 및 범용 직렬 버스 (USB) 플래시 드라이브들을 포함한, 다양한 플래시 메모리 기반의 저장 디바이스들에서 현재 사용된다. 플래시 메모리 기반의 저장 디바이스들은, 종래의 하드 디스크들보다 높은 내구성 및 충격 저항을 제공하면서도 다이내믹 랜덤 액세스 메모리 (RAM) 에 필적할만한 읽기 및 쓰기 시간들을 제공할 수도 있다.
플래시 메모리 기반의 저장 디바이스들의 광범위한 사용을 촉진하기 위해, 다수의 표준들이 개발되거나 또는 현재 개발중이다. 하나의 이러한 표준은 스마트 폰 및 태블릿 컴퓨터와 같은 모바일 컴퓨팅 디바이스들에서의 플래시 메모리 기반의 스토리지를 위한 연합 전자 디바이스 공학 협의회 (Joint Electron Device Engineering Council; JEDEC) 에 의해 개발된 범용 플래시 스토리지 (UFS) 이다. UFS는 커맨드 큐잉 피쳐들로 다수의 커맨드들을 지원하여 멀티 스레드 프로그래밍 패러다임을 가능하게 하는 소형 컴퓨터 시스템 인터페이스 (SCSI) 아키텍처 모델 및 커맨드 프로토콜을 채택한다. JEDEC 에 의해 개발된 또 다른 표준은, 단순화된 애플리케이션 인터페이스 디자인, 소형 패키지 사이즈들, 및 저소비 전력을 제공하는, 내장형 멀티미디어카드 (eMMC) 표준이다. eMMC 플래시 메모리 기반의 저장 디바이스들은 현재 모바일 디바이스들에서의 스토리지의 기본 형태들 중 하나이다.
종래의 플래시 메모리 기반의 저장 디바이스 표준들, 예컨대 UFS 및 eMMC는 단일 입/출력 (I/O) 클라이언트에 의한 관리 및 용도용으로 현재 설계된다. 하지만, 다수의 현대 컴퓨팅 디바이스들은 가상화 환경들을 동시에 이용하는 다수의 I/O 클라이언트들 (예를 들어, 호스트들 또는 다른 프로세서 서브시스템들) 을 지원할 수 있다. 이러한 가상화 환경들에서, 다수의 I/O 클라이언트들은 각각 플래시 메모리 기반의 저장 디바이스의 단지 호스트였던 것처럼 단일의 플래시 메모리 기반의 저장 디바이스와 상호작용할 필요가 있을 수도 있다. 마찬가지로, 플래시 메모리 기반의 저장 디바이스는, 사실상 다수의 I/O 클라이언트들과 통신하는 경우, 단지 단일의 I/O 클라이언트와 통신중인 것처럼 동작할 필요가 있을 수도 있다.
특히, 플래시 메모리 기반의 스토리지 표준들이 멀티 호스트 환경으로 연장되는 경우, 다수의 I/O 클라이언트들로부터의 요청들 및/또는 커맨드들은 추가의 프로세싱 및/또는 필터링을 필요로 할 수도 있다. 이를 테면, 요청이 플래시 메모리 기반의 저장 디바이스로 전송될 수도 있는지, 또는 요청이 변경 또는 폐기되어야 하는지를 결정하기 위해 프로세싱될 필요가 있을 수도 있다.
개시의 요약
상세한 설명에 개시된 양태들은 플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (IOV) 호스트 제어기 (HC) (IOV-HC) 에서의 커맨드 트랩을 포함한다. 하나의 양태에서, IOV-HC는 다수의 입/출력 (I/O) 클라이언트들 중 하나의 입/출력 (I/O) 클라이언트에 대응하는 클라이언트 레지스터 인터페이스 (CRI) 로부터 요청 (예를 들어, 비한정적인 예들로서 전송 요청 (TR) 또는 태스크 관리 요청 (TMR)) 을 수신하도록 구성된다. IOV-HC는 요청이 전송 프로토콜 엔진에 전달되기 이전에 요청의 콘텐츠를 검사한다. 요청의 컨텐츠에 기초하여, IOV-HC는 (예를 들어, 비한정적인 예들로서, 액세스 제어 회로에 의해 또는 멀티 호스트 전력 제어기 (MHPC) 에 의해) 요청이 더욱 프로세싱되어야 하는지, 또는 요청이 트랩되어야 하는지를 결정할 수도 있다. 요청이 트랩되어야 한다고 IOV-HC가 결정한다면, IOV-HC는 요청 트랩을 이용하여 요청을 트랩하고, 그리고 일부 양태들에서는 요청이 트랩되었다고 VMM에게 통지하기 위해 가상 머신 관리자 (VMM) 로 인터럽트를 생성할 수도 있다. IOV-HC의 일부 양태들은, 트랩된 요청이 시작된 CRI에 대한 응답을 생성하도록 VMM이 IOV-HC를 디렉팅할 수 있게 하는 응답 생성 회로를 또한 제공할 수도 있다. 이러한 방식으로, IOV-HC는 플래시 메모리 기반의 저장 디바이스의 기능성을 다수의 I/O 클라이언트들에게 확장시킬 수도 있다.
또 다른 양태에서는, IOV-HC가 제공된다. IOV-HC는 대응하는 복수의 I/O 클라이언트들에 복수의 CRI들을 통해, 그리고 플래시 메모리 기반의 저장 디바이스에 통신적으로 커플링된다. IOV-HC는 요청 트랩을 포함한다. IOV-HC는, IOV-HC의 요청 필터 회로에 의해, 상기 복수의 CRI들의 CRI로부터 플래시 메모리 기반의 저장 디바이스를 향한 요청을 수신하도록 구성된다. IOV-HC는 또한, 요청 필터 회로에 의해, 요청의 컨텐츠를 검사하도록 구성된다. IOV-HC는 또한, 요청 필터 회로에 의해, 요청이 컨텐츠에 기초하여 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 하는지 또는 트랩되어야 하는지를 결정하도록 구성된다. IOV-HC는 부가적으로, 요청이 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 한다고 결정하는 것에 응답하여, 요청을 플래시 메모리 기반의 저장 디바이스로 포워딩하도록 구성된다. IOV-HC는 또한, 요청이 트랩되어야 한다고 결정하는 것에 응답하여 요청을 요청 트랩에서 트랩하도록 구성된다.
또 다른 양태에서, 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법이 제공된다. 방법은, IOV-HC의 요청 필터 회로에 의해, 복수의 CRI들의 CRI로부터 플래시 메모리 기반의 저장 디바이스를 향한 요청을 수신하는 것을 포함한다. 방법은, 요청 필터 회로에 의해, 요청의 컨텐츠를 검사하는 것을 더 포함한다. 방법은 또한, 요청 필터 회로에 의해, 요청이 컨텐츠에 기초하여 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 하는지, 또는 요청 트랩에서 트랩되어야 하는지를 결정하는 단계를 포함한다. 방법은 부가적으로, 요청이 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 한다고 결정하는 것에 응답하여, 요청을 플래시 메모리 기반의 저장 디바이스로 포워딩하는 단계를 포함한다. 방법은, 요청이 트랩되어야 한다고 결정하는 것에 응답하여, 요청 트랩에서 요청을 트랩하는 단계를 더 포함한다.
또 다른 양태에서는, IOV-HC가 제공된다. IOV-HC는 복수의 CRI들의 CRI로부터 플래시 메모리 기반의 저장 디바이스를 향한 요청을 수신하는 수단을 포함한다. IOV-HC는 요청의 컨텐츠를 검사하는 수단을 더 포함한다. IOV-HC는 또한, 요청이 컨텐츠에 기초하여 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 하는지 또는 트랩되어야 하는지를 결정하는 수단을 포함한다. IOV-HC는 부가적으로, 요청이 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 한다고 결정하는 것에 응답하여, 요청을 플래시 메모리 기반의 저장 디바이스로 포워딩하기 위한 수단을 포함한다. IOV-HC는 요청이 트랩되어야 한다고 결정하는 것에 응답하여, 요청을 요청 트랩에서 트랩하는 수단을 더 포함한다.
도 1은 예시적인 입/출력 가상화 (IOV) 호스트 제어기 (HC) (IOV-HC) 를 통해 예시적인 플래시 메모리 기반의 저장 디바이스에 통신적으로 커플링되는 다수의 입/출력 (I/O) 클라이언트들을 포함하는 예시적인 시스템 온 칩 (SoC) 의 블록도이다.
도 2는 다수의 I/O 클라이언트들에 커맨드 트랩을 제공하기 위한 도 1의 IOV-HC 내의 예시적인 엘리먼트들 및 통신 흐름들의 블록도이다.
도 3은 트랩된 요청을 저장하기 위한 도 1의 IOV-HC의 예시적인 요청 트랩의 엘리먼트들을 예시한 블록도이다.
도 4는 다수의 I/O 클라이언트들에 전송될 응답들을 생성하기 위한 도 1의 IOV-HC의 예시적인 응답 생성 회로의 엘리먼트들을 나타낸 블록도이다.
도 5a 및 도 5b는 다수의 I/O 클라이언트들에 커맨드 트랩을 제공하기 위한 도 1의 IOV-HC의 예시적인 동작들을 나타낸 흐름도이다.
도 6은 수신된 요청들이 프로세싱 및/또는 트랩될 수도 있는 방법을 결정하기 위한 도 1의 IOV-HC의 예시적인 동작들을 도시한 플로우차트이다.
도 7은 도 2 및 도 3의 요청 트랩을 이용하여 커맨드 트랩하기 위한 도 1의 IOV-HC의 예시적인 동작들을 도시한 플로우차트이다.
도 8은 도 1의 IOV-HC를 채용하는 SoC를 포함할 수도 있는 예시적인 컴퓨팅 디바이스의 블록도이다.
이하, 도시된 도면들을 참조하여 본 개시의 여러 예시적인 양태들을 설명한다. 단어 "예시적인" 은 본 명세서에서 "예, 사례, 또는 예시로서 기능하는 것" 을 의미하는데 사용된다. 본 명세서에서 "예시적인" 으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 선호되거나 또는 유리한 것으로서 해석되는 것은 아니다.
상세한 설명에 개시된 양태들은 플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (IOV) 호스트 제어기 (HC) (IOV-HC) 에서의 커맨드 트랩을 포함한다. 하나의 양태에서, IOV-HC는 다수의 입/출력 (I/O) 클라이언트들 중 하나의 입/출력 (I/O) 클라이언트에 대응하는 클라이언트 레지스터 인터페이스 (CRI) 로부터 요청 (예를 들어, 비한정적인 예들로서 전송 요청 (TR) 또는 태스크 관리 요청 (TMR)) 을 수신하도록 구성된다. IOV-HC는 요청이 전송 프로토콜 엔진에 전달되기 이전에 요청의 콘텐츠를 검사한다. 요청의 컨텐츠에 기초하여, IOV-HC는 (예를 들어, 비한정적인 예들로서, 액세스 제어 회로에 의해 또는 멀티 호스트 전력 제어기 (MHPC) 에 의해) 요청이 더욱 프로세싱되어야 하는지, 또는 요청이 트랩되어야 하는지를 결정할 수도 있다. 요청이 트랩되어야 한다고 IOV-HC가 결정한다면, IOV-HC는 요청 트랩을 이용하여 요청을 트랩하고, 그리고 일부 양태들에서는 요청이 트랩되었다고 VMM에게 통지하기 위해 가상 머신 관리자 (VMM) 로 인터럽트를 생성할 수도 있다. IOV-HC의 일부 양태들은, 트랩된 요청이 시작된 CRI에 대한 응답을 생성하도록 VMM이 IOV-HC를 디렉팅할 수 있게 하는 응답 생성 회로를 또한 제공할 수도 있다. 이러한 방식으로, IOV-HC는 플래시 메모리 기반의 저장 디바이스의 기능성을 다수의 I/O 클라이언트들에게 확장시킬 수도 있다.
이와 관련하여, 도 1은 IOV-HC (102) 를 포함하는 예시적인 시스템 온 칩 (SoC) (100) 의 블록도이다. 도 1의 예에서, IOV-HC (102) 는 단일의 플래시 메모리 기반의 저장 디바이스 (106) 에 복수의 I/O 클라이언트들 (104(0)-104(N)) 이 액세스할 수 있도록 제공된다. 일부 양태들에서, 플래시 메모리 기반의 저장 디바이스 (106) 는 비한정적인 예들로서 범용 플래시 스토리지 (UFS) 디바이스 또는 내장형 멀티미디어카드 (eMMC) 디바이스를 포함할 수도 있다. 특히, 이 양태에서는 플래시 메모리 기반의 저장 디바이스 (106) 가 모바일 디바이스 내의 SoC (100) 에 인접하여 내장되지만, 다른 양태들은 착탈식 메모리 디바이스로서 플래시 메모리 기반의 저장 디바이스 (106) 를 채용하는 경우 유사한 기능을 달성할 수도 있다.
SoC (100) 는 또한, I/O 클라이언트들 (104(0)-104(N)) 에 가상화 기능 및 관리를 제공하는 가상 머신 관리자 (VMM) (108) 를 포함한다. VMM (108) 은 SoC (100) 의 프로세서에 의해 실행되는 소프트웨어 모듈일 수도 있고, 필요 또는 요구에 따라 SoC (100) 또는 다른 메모리 위치의 시스템 메모리 (미도시) 에 상주한다. I/O 클라이언트들 (104(0)-104(N)) 의 각각은, SoC (100) 의 프로세서 및/또는 SoC (100) 에서의 프로세서 서브시스템 상에 실행되는, 호스트 소프트웨어 엔티티 (예컨대 도 1의 I/O 클라이언트 (104(0)) 및 I/O 클라이언트 (104(1))) 를 포함할 수도 있다. IOV-HC (102) 는 I/O 클라이언트들 (104(0)-104(N)) 과 플래시 메모리 기반의 저장 디바이스 (106) 사이에서 중개자 역할을 할 수도 있다. 이 방식으로, IOV-HC (102) 는, I/O 클라이언트들 (104(0)-104(N)) 각각이 단지 플래시 메모리 기반의 저장 디바이스 (106) 와 통신하는 I/O 클라이언트 (104(0)-104(N)) 와 통신했던 것처럼 플래시 메모리 기반의 저장 디바이스와 상호작용하도록 I/O 클라이언트들 (104(0)-104(N)) 과 플래시 메모리 기반의 저장 디바이스 (106) 간의 상호작용들을 제어할 수도 있다. 마찬가지로, IOV-HC (102) 는, 사실상, 다수의 I/O 클라이언트들 (104(0)-104(N)) 과 통신하는 때, 단지 단일의 I/O 클라이언트 (104(0)-104(N)) 와 통신하는 것처럼 플래시 메모리 기반의 저장 디바이스 (106) 가 동작할 수 있도록 구성될 수도 있다.
일부 양태들에 따른 도 1의 IOV-HC (102) 내의 예시적인 구성 엘리먼트들 및 통신 흐름들을 보다 양호하게 예시하기 위해, 도 2가 제공된다. 사용중인 플래시 메모리 기반의 저장 디바이스 (106) 표준 (예를 들어, 비한정적인 예로써 UFS 또는 eMMC) 의 필요들에 따라, IOV-HC (102) 가 도 2에 예시된 것보다 많거나 작은 엘리먼트들을 포함할 수도 있음을 이해해야 한다. 도 2에서 보는 바와 같이, IOV-HC (102) 는 베이스 레지스터 인터페이스 (BRI) (200) 를 포함하고, 베이스 레지스터 인터페이스 (BRI) (200) 를 통해 화살표 (202) 로 나타낸 바와 같이 도 1의 VMM (108) 이 IOV-HC (102) 와 통신할 수도 있다. IOV-HC (102) 는 또한 클라이언트 레지스터 인터페이스들 ((CRIs) 204(0)-204(N)) 을 포함한다. CRI들 (204(0)-204(N)) 의 각각은, CRI (204(0)) 에 의해 전송된 요청과 같은 요청을 IOV-HC (102) 로 송신하기 위해 도 1의 I/O 클라이언트들 (104(0)-104(N)) 중 상응하는 것들에 대한 인터페이스를 나타낸다. 비한정적인 예들로서, 요청 (206) 은 전송 요청 (TR) 및/또는 태스크 관리 요청 (TMR) 을 포함할 수도 있다. 본원에 개시된 일부 양태들에 따라, 요청 (206) 은 읽기 요청, 쓰기 요청, 전력 제어 요청 (예를 들어, 소형 컴퓨터 시스템 인터페이스 (Small Computer System Interface; SCSI) START_STOP_UNIT (SSU) 요청 또는 eMMC SLEEP 요청), 및/또는 다른 요청들을 포함할 수도 있다. CRI들 (204(0)-204(N)) 은 또한 질의 요청들 또는 비동작 (no-operation; NOP) 명령들과 같은 다른 타입들의 요청들 또는 커맨드들 (206) 을 송신하기 위해 사용될 수도 있다.
도 2에서 보는 바와 같이, CRI들 (204(0)-204(N)) 은, 화살표들 (210, 212, 및 214) 로 각각 나타낸 바와 같이, IOV-HC (102) 의 요청 패치 회로 (REQ FETCH CIRC) (208) 에 통신적으로 커플링된다. 일부 양태들에서, 요청 패치 회로 (208) 는, 시스템 메모리 (216) 로부터 UFS 송신 프로토콜 (UTP) 송신 요청 디스크립터 (UTRD) (미도시) 또는 eMMC 태스크 디스크립터 (TD) 와 같은 송신 프로토콜 디스크립터를 패치하고, 그리고 UTP 커맨드 디스크립터 (UCD) (미도시) 와 같은 커맨드 디스크립터의 위치를 결정하기 위해 송신 프로토콜 디스크립터를 디코딩하는 것을 담당한다. 이후 요청 패치 회로 (208) 는 화살표 (218) 로 나타낸 바와 같이 시스템 메모리 (216) 로부터 커맨드 디스크립터의 TR 섹션 (미도시) 을 패치할 수도 있다.
종래의 UFS 또는 eMMC 호스트 제어기에서, 요청 패치 회로 (208) 는 다음으로, 패치된 요청 (206) 으로부터 파라미터들을 추출하고, 그리고 프로세싱을 위해 전체 패치된 요청 (206) 을 전송 프로토콜 엔진 (220) (예를 들어, 비한정적인 예들로서 UTP 엔진 또는 eMMC 전송 프로토콜 엔진) 으로 포워드할 것이다. 패치된 요청 (206) 은 이후 인터커넥트 (222) 및 버스 (224) 를 통해 플래시 메모리 기반의 저장 디바이스 (106) 로 송신될 수도 있다. 하지만, 멀티 클라이언트 환경에서, 요청 (206) 의 추가 검사 및 프로세싱이 필요할 수도 있다. 이를 테면, 상이한 타입들의 요청들 (206) 에 대한 커스텀 핸들링을 제공하거나, 또는 패치된 요청 (206) 을 트랩 및/또는 종료하는 것이 바람직할 수도 있다.
이에 따라, IOV-HC (102) 는 커맨드 트랩 기능을 제공하도록 구성된다. 이로써 IOV-HC (102) 는 요청들 (206) 을 수신, 검사 및 프로세싱하기 위한 요청 필터 회로 (REQ FILTER CIRCUIT) (226), 커맨드 트랩을 위한 요청 트랩 (228), 및 I/O 클라이언트들 (104(0)104(N)) 로의 응답의 송신을 용이하게 하기 위한 응답 생성 회로 (230) 를 포함할 수도 있다. 요청 필터 회로 (226), 요청 트랩 (228), 및 응답 생성 회로 (230) 의 동작들이 이하에서 보다 상세히 논의된다.
도 2를 계속 참조하면, 요청 패치 회로 (208) 에 의해 패치된 모든 요청 (206) 은 화살표 (232) 로 나타낸 바와 같이 IOV-HC (102) 의 요청 필터 회로 (226) 에 의해 수신된다. 요청 필터 회로 (226) 는 요청 (206) 을 검사 및 프로세싱하는 것을 담당한다. 특히, 요청 필터 회로 (226) 는, 요청 (206) 이 요청 (206) 의 컨텐츠 (234) 에 기초하여 프로세싱될 방법을 결정한다. 비한정적인 예로써, UFS 표준에 기반한 일부 양태들에서, 요청 필터 회로 (226) 는 요청 (206) 이 핸들링되어야 하는 방법을 결정하기 위해 요청 (206) 의 컨텐츠 (234) 의 트랜잭션 코드 (TC) 및 SCSI 연산 코드 (OPC) 를 조사할 수도 있다. 마찬가지로, eMMC 표준에 기반한 양태들에서, 요청 필터 회로 (226) 는 요청 (206) 이 핸들링되어야 하는 방법을 결정하기 위해 요청 (206) 의 컨텐츠 (234) 의 커맨드 인덱스 및 커맨드 아규먼트를 조사할 수도 있다. 요청 (206) 의 컨텐츠 (234) 에 기초하여, 요청 필터 회로 (226) 는 요청 (206) 이 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스 (106) 로 포워딩되어야 한다고 결정할 수도 있고, 또는 요청 (206) 이 트랩되어야 한다고 결정할 수도 있다. VMM (108) 은 후속하여, 트랩된 요청 (206) 이 변경되어 플래시 메모리 기반의 저장 디바이스 (106) 로 재발행되어야 하는지, 또는 트랩된 요청 (206) 이 종료되어야 하는지를 결정할 수도 있다.
일부 양태들에서, 요청 필터 회로 (226) 는 요청 (206) 의 컨텐츠 (234) 를 검사하여, 요청 (206) 이 읽기 커맨드, 쓰기 커맨드, 전력 모드 변경 커맨드, 또는 다른 타입의 커맨드인지를 결정할 수도 있다. 요청 (206) 이 읽기 또는 쓰기 커맨드에 대응한다고 요청 (206) 의 컨텐츠 (234) 가 나타내는 경우, 요청 (206) 은 화살표 (238) 로 나타낸 바와 같이 요청 필터 회로 (226) 에 의해 액세스 제어 회로 (236) 로 포워딩될 수도 있다. 일부 양태들에 따른 액세스 제어 회로 (236) 는 논리 유닛들 (미도시) 로 읽기/쓰기 규칙들의 하드웨어 강화를 제공한다. 요청 (206) 이 후속하여 액세스 제어 회로 (236) 에 의해 타당하다면, 요청 (206) 은 화살표 (240) 로 나타내는 바와 같이, 전송 프로토콜 엔진 (220) 상으로 전달된다. 하지만, 액세스 제어 회로 (236) 에 의해 부정되는 요청 (206) 은 화살표 (242) 로 나타내는 바와 같이 소프트웨어 프로세싱을 위해 트랩된다. 요청 (206) 의 트랩과 연관된 동작들은 이하에서 보다 상세히 논의된다.
일부 양태들에 따라, 요청 (206) 의 컨텐츠 (234) 는, 요청 (206) 이 전력 모드 변경 커맨드에 대응한다고 나타낼 수도 있다. 비한정적인 예들로서, UFS 표준에 기반한 양태들에서, 컨텐츠 (234) 는 요청 (206) 이 SCSI SSU 커맨드라는 것을 나타낼 수 있는 한편, eMMC 표준에 기반에 양태들에서, 컨텐츠 (234) 는 요청 (206) 이 eMMC 슬립 (CMD5) 커맨드라는 것을 나타낼 수도 있다. 결과적으로, 패치된 요청 (206) 은 화살표 (246) 로 나타내는 바와 같이 요청 필터 회로 (226) 에 의해 MHPC (244) 로 전송될 수도 있다. 일부 양태들에 따른 MHPC (244) 는, 플래시 메모리 기반의 저장 디바이스 (106) 의 전력 모드를 제어하기 위해 도 1의 I/O 클라이언트들 (104(0)-104(N)) 사이의 투표 메커니즘을 구현하는 하드웨어 상태 머신 (미도시) 을 포함할 수도 있다. 패치된 요청 (206) 이 MHPC (244) 에 의해 성공적으로 프로세싱되는 경우, 패치된 요청 (206) 은 화살표 (248) 로 나타내는 바와 같이 전송 프로토콜 엔진 (220) 로 전달될 수도 있다. 이와 다르게, MHPC (244) 는 패치된 요청 (206) 을 조용히 종료할 수 있거나, 또는 화살표 (250) 로 나타낸 바와 같이 추가 프로세싱을 위해 패치된 요청 (206) 을 트랩할 수도 있다. 패치된 요청 (206) 이 읽기 커맨드, 쓰기 커맨드, 또는 전력 모드 변경 커맨드 이외에 다른 커맨드에 대응한다면, 요청 필터 회로 (226) 는 화살표 (252) 로 나타내는 바와 같이 요청 트랩 (228) 에서 패치된 요청 (206) 을 인터셉트 및 트랩할 수도 있다.
요청 트랩 (228) 은, 요청 (206) 과 같은 트랩된 요청들을 저장하기 위해 IOV-HC (102) 에 의해 제공된다. 일부 양태들에 따르면, 각각이 CRI들 (204(0)-204(N)) 중 하나와 연관되는, 커맨드 미러들 (CM) (254(0)-254(N)) 이 요청 트랩 (228) 내에 있다. 트랩된 요청 (206) 은 대응하는 CRI (204(0)-204(N)) 의 CM (254(0)-254(N)) 에 저장될 수 있으며, CM (254(0)-254(N)) 로부터 요청 (206) 이 수신되었다. 일부 양태들은, 요청 트랩 (228) 이 트랩된다는 것을 나타내기 위해 BRI (200) 를 통해 VMM (108) 으로 인터럽트 (256) 를 생성할 수도 있다. 이후 VMM (108) 은 BRI (200) 를 통해 적절한 CM (254(0)-254(N)) 의 컨텐츠를 읽음으로써 트랩된 요청 (206) 을 더욱 프로세싱할 수도 있다. VMM (108) 은 또한 화살표 (260) 로 나타내는 바와 같이 응답 생성 회로 (230) 를 사용하여 발신 CRI (204(0)-204(N)) 에 대한 응답 (258) 을 생성하기 위해 BRI (200) 를 통해 IOV-HC (102) 를 디렉팅할 수도 있다.
일부 양태들에 따르면, 일단 요청 (206) 이 트랩되면, 요청 패치 회로 (208) 는 그 프로세싱을 완료하였고, 그리고 또 다른 CRI (204(0)-204(N)) 에 대한 다음 요청 (206) 을 패칭하는 것으로 진행할 수도 있다. 트랩된 요청 (206) 이 VMM (108) 에 의해 프로세싱되는 경우, 트랩된 요청 (206) 과 연관된 CRI들 (204(0)-204(N)) 중에서 특정 CRI는 요청 패치 중재로부터 제거된다. IOV-HC (102) 가 포워드 또는 폐기되도록 디렉팅함으로써 VMM (108) 이 요청 (206) 을 프로세싱하는 경우에만, 요청 (206) 은 요청 패치 회로 (208) 에 의해 패치되는 CRI들 (204(0)-204(N)) 중에서 동일한 CRI로부터의 후속 요청들 (206) 일 수도 있다.
트랩된 요청 (206) 을 저장하기 위한 도 2의 IOV-HC (102) 의 요청 트랩 (228) 의 예시적인 엘리먼트들을 예시하기 위해서, 도 3이 제공된다. 도 3을 설명함에 있어서, 도 1 및 도 2의 엘리먼트들이 명확성을 위해 참조된다. 도 3에서 보는 바와 같이, 요청 트랩 (228) 은 도 2의 CM들 (254(0)-254(N)) 을 포함하고, 그 각각은 도 2의 CRI들 (204(0)-204(N)) 중 하나에 대응한다. CM들 (254(0)-254(N)) 의 각각은 대응하는 커맨드 미러 상태 레지스터들 (CMSR들) (300(0)-300(N)) 및 커맨드 미러 데이터 레지스터 어레이들 (CMDAT들) (302(0)-302(N)) 을 제공한다. 요청 트랩 (288) 은 커맨드 미러 제어 레지스터 (CMCR) (304) 를 더 포함한다. 요청 트랩 (228) 의 각각의 예시적인 엘리먼트의 기능은 아래에 보다 상세히 기재된다.
CMCR (304) 은, 요청 트랩 (228) 내에 트랩되는 요청 (206) 이 핸들링되는 방법에 관한 IOV-HC (102) 를 지시하기 위해, 도 2의 VMM (108) 에 의해 사용될 수 있는 레지스터이다. 비한정적인 예들로서, VMM (108) 은, 트랩된 요청 (206) 을 수송 프로토콜 엔진 (220) 에 전달하거나, 또는 트랩된 요청 (206) 을 전체적으로 종료하도록 IOV-HC (102) 를 지시하기 위해기 CMCR (304) 를 통해 핸들링 명령 (306) 을 전송할 수도 있다. 일부 양태들에 따르면, CMCR (304) 은 모든 CM들 (254(0)-254(N)) 사이에서 공유된다.
상기에 언급된 바와 같이, 요청 (206) 과 같은 트랩된 요청 (206) 은 CRI (204(0)-204(N)) 에 대응하는 CM (254(0)-254(N)) 에 저장될 수 있으며, CRI (204(0)-204(N)) 로부터 요청 (206) 이 수신되었다. 트랩된 요청 (206) 의 저장을 용이하게 하기 위해, CM들 (254(0)-254(N)) 의 CMSR들 (300(0)-300(N)) 은 각각의 트랩된 요청 (206) 에 관한 정보를 나타내는 각각의 상태 (308(0)-308(N)) 를 저장할 수도 있다. 일부 양태들에 따른 각각의 상태 (308(0)-308(N)) 는, 요청 (206) 과 연관된 전송 요청 디스크립터 (TRD) 정보 (미도시) 및/또는 슬롯 넘버 (미도시) 와 같은 데이터를 포함할 수도 있다.
CM들 (254(0)-254(N)) 의 CMDAT들 (302(0)-302(N)) 은 레지스터 어레이들이며, 그 각각은 각각의 트랩된 요청 (206) 의 대응하는 프로토콜 정보 유닛 (PIU) (310(0)-310(N)) 을 저장하기 위해 사용될 수도 있다. 일부 양태들에서, CMDAT들 (302(0)-302(N)) 의 각각은 도 2의 각각의 CRI (204(0)-204(N)) 에 공간의 삼십이 (32) 바이트들을 할당할 수도 있다. 요청 (206) 이 삼십이 (32) 바이트보다 큰 경우 (예를 들어, 비한정적인 예로서, 디스크립터 쓰기 쿼리 요청들), 요청 (206) 의 길이는 대응 CMSR (300(0)-300(N)) 에 표시될 수도 있다. VMM (108) 은 이후 시스템 메모리 (216) 에서 커맨드 디스크립터 어드레스 (예컨대 UFS 표준에 기반한 양태들에서 UFS 커맨드 디스크립터 (UCD)) 를 계산할 수 있고, 그리고 시스템 메모리 (216) 에서 그 원래의 위치로부터 직접 요청 (206) 을 읽을 수 있다.
도 2와 관련하여 상기에서 논의된 바와 같이, IOV-HC (102) 의 일부 양태들은, 트랩된 요청 (예컨대 요청 (206) 이 시작되는 I/O 클라이언트 (104(0)-104(N)) 으로 전송되는 응답 (258) 을 생성하도록 VMM (108) 이 IOV-HC를 지시할 수 있게 하기 위해 응답 생성 회로 (230) 를 제공한다. 도 2의 응답 생성 회로 (230) 의 하나의 양태의 예시적인 엘리먼트들을 예시하기 위해, 도 4가 제공된다. 도 1 및 도 2의 엘리먼트들은 명확성을 위해 도 4의 설명에서 참조된다.
도 4에서 보는 바와 같이, 응답 생성 회로 (230) 는 응답 생성기 제어 레지스터 (RGCR) (402), 응답 생성기 상태 레지스터 (RGSR) (404), 및 응답 생성기 PIU 레지스터 (RGU) (406) 를 포함한다. RGCR (402) 은 도 2의 VMM (108) 에 의해 사용되어, 일부 양태들에서, IOV-HC (102) 가 응답 생성 명령 (408) 을 사용하여 응답 (258) 을 송신하도록 지시할 수 있다. 비한정적인 예들로서, 응답 생성 명령 (408) 은 송신 커맨드, 응답 송신 방법, 목적 CRI 식별자, 및/또는 전체 커맨드 상태 (OCS) 를 포함할 수도 있다. 응답 생성 회로 (230) 의 RGSR (404) 은 응답 생성 회로 (230) 의 상태에 관한 상태 (410) 를 저장할 수도 있다. RGU (406) 는, 일부 양태들에서, I/O 클라이언트들 (104(0)-104(N)) 중 하나로 송신될 응답 (258) 의 응답 PIU (412) 를 저장하기 위한 32-바이트 레지스터 공간을 포함할 수도 있다.
응답 생성 회로 (230) 의 일부 양태들은 두개 (2) 의 응답 송신 방법들 중 하나 또는 양자를 제공할 수도 있다. 일부 양태들에서, 응답 송신 방법은 요청 트랩 (228) 에서 RGU (406) 로 기록되고 있는 응답 PIU (412) 를 포함할 수도 있다. 응답 PIU (412) 는 이후, 응답 (258) 이 디렉팅되는 I/O 클라이언트들 (104(0)-104(N)) 중 하나의 메모리 공간 (미도시) 에서 TRD에 규정된 위치로 IOV-HC (102) 에 의해 카피될 수도 있다. 대안으로, 일부 양태들은, VMM (108) 은 I/O 클라이언트 (104(0)-104(N)) 의 메모리 공간에서 그 위치로 바로 응답 PIU (412) 를 기록할 수도 있다. 송신 기술하에서, VMM (108) 은, I/O 클라이언트들 (104(0)-104(N)) 에 의해 요청된 바와 같이, 인터럽트들 (256) 을 생성하고 그리고 I/O 클라이언트들 (104(0)-104(N)) 의 메모리 공간에서의 TRD 에 OCS 필드를 기록하도록 IOV-HC (102) 를 지시하기 위해 RGCR (402) 을 기록할 수도 있다. 응답 (258) 이 삼십이 (32) 바이트보다 큰 일부 양태들에서 (예를 들어, 디스크립터 리드 쿼리 요청들에 있어서), VMM (108) 은 I/O 클라이언트 (104(0)-104(N)) 의 메모리 공간에서의 위치에 직접 응답 PIU (412) 를 기록할 수도 있다.
UFS 표준에 기반하는 본원에 개시된 일부 양태들에 따르면, VMM (108) 이 RGCR (402) 를 기록하는 경우, IOV-HC (102) 는 하기의 예시적인 동작들을 실행할 수도 있다. 응답 카피가 요구되는 경우, IOV-HC (102) 는 CRI 식별자 및 슬롯 넘버로부터 목적 어드레스 (미도시) 를 계산할 수도 있다. 예를 들어, UFS 표준에 기반한 양태들에서, 목적 어드레스는 UCD 또는 UTP 태스크 관리 요청 디스크립터 (UTMRD) 의 응답 섹션에 기초하여 계산될 수도 있다. IOV-HC (102) 는 이후 RGU (406) 로부터 목적 어드레스로 응답 PIU (412) 의 컨텐츠를 카피할 수도 있다. IOV-HC (102) 는 UFS TRD (UTRD) 또는 UTMRD에서 목적 어드레스로 OCS를 기록한다. IOV-HC (102) 는 커맨드 완료를 나타내기 위해 적절한 CRI (204(0)-204(N)) 에서 UTRLDBR (UTP Transfer Request List Door Bell Register), UTRLCLR (UTP Transfer Request List Clear Register), 및/또는 UTMRLDBR (UTP Task Management Request List Door Bell Register) 를 세팅한다. IOV-HC (102) 는 이후, UTRD 또는 UTMRD에 의해 요구되는 경우 인터럽트 (256) 를 생성할 수도 있다. eMMC 표준에 기반하는 본원에 개시된 양태들에서, 응답 PIU (412) 가 VMM (108) 에 의해 적절한 CRI (204(0)-204(N)) 의 응답 레지스터로 기록되며, 그 이후 VMM (108) 은 IOV-HC (102) 가 인터럽트 (256) 를 생성하도록 지시한다. 상기에 논의된 UFS 및 eMMC에 기반한 양태들이 비한정적인 예들이라는 것을 이해해야 한다.
다수의 I/O 클라이언트들 (104(0)-104(N)) 을 위해 커맨드 트랩을 제공하기 위한 도 2의 IOV-HC (102) 의 예시적인 동작들을 예시하기 위해, 도 5a 및 도 5b가 제공된다. 도 5a 및 도 5b를 설명함에 있어서, 도 1, 도 2 및 도 4의 엘리먼트들이 명확성을 위해 참조된다. 도 5a에서, 동작은 IOV-HC (102) 의 요청 필터 회로 (226) 가 복수의 CRI들 (204(0)-204(N)) 의 CRI (204(0)) 로부터 플래시 메모리 기반의 저장 디바이스 (106) 를 향한 요청 (206) 을 수신하는 것으로 시작한다 (블록 500). 이와 관련하여, 요청 필터 회로 (226) 는 본원에서 "CRI로부터 플래시 메모리 기반의 저장 디바이스를 향한 요청을 수신하는 수단"으로 지칭될 수도 있다. 요청 필터 회로 (226) 는 요청 (206) 의 컨텐츠 (234) 를 검사한다 (블록 502). 비한정적인 예로써, UFS 표준에 기반한 일부 양태들에서, 요청 필터 회로 (226) 는 요청 (206) 의 컨텐츠 (234) 의 트랜잭션 코드 (TC) 및 SCSI 연산 코드 (OPC) 를 조사할 수 있는 한편, eMMC 표준에 기반한 양태들에서, 요청 필터 회로 (226) 는 요청 (206) 의 컨텐츠 (234) 의 커맨드 인덱스 및 커맨드 아규먼트를 조사할 수도 있다. 이로써 요청 필터 회로 (226) 는 본원에서 "요청의 컨텐츠를 검사하는 수단"으로 지칭될 수도 있다.
컨텐츠 (234) 에 기초하여, 요청 필터 회로 (226) 는 요청 (206) 이 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스 (106) 로 포워딩되어야 하는지, 또는 요청 (206) 이 요청 트랩 (228) 에서 트랩되어야 하는지를 결정한다 (블록 504). 그 때문에, 요청 필터 회로 (226) 는 "요청이 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 하는지, 또는 트랩되어야 하는지를 결정하는 수단"으로 본원에서 지칭될 수도 있다. 요청 (206) 은 포워딩되어야 한다고 요청 필터 회로 (226) 가 결정 블록 504에서 결정하면, 요청 필터 회로 (226) 는 요청 (206) 을 플래시 메모리 기반의 저장 디바이스 (106) 로 포워딩한다 (블록 506). 이와 관련하여, 요청 필터 회로 (226) 는 "요청을 플래시 메모리 기반의 저장 디바이스로 포워딩하는 수단"으로 본원에서 지칭될 수도 있다. 요청 (206) 은 트랩되어야 한다고 요청 필터 회로 (226) 가 결정 블록 504에서 결정하면, 요청 필터 회로 (226) 는 요청 (206) 을 요청 트랩 (228) 에서 트랩한다 (블록 508). 이에 따라, 요청 필터 회로 (226) 는 "요청 트랩에서 요청을 트랩하는 수단"으로 본원에서 지칭될 수도 있다. 도 6과 관련하여 아래에서 보다 상세히 논의된 바와 같이, 요청 (206) 을 포워딩하거나 트랩하기 위한 결정이 컨텐츠 (234) 에 의해 나타낸 요청 (206) 의 타입에 기반할 수도 있다는 것을 일부 양태들은 제공할 수도 있다. 프로세싱은 이후 도 5b의 블록 510에서 재개된다.
이제 도 5b를 참조하면, 일부 양태들에서, IOV-HC (102) 의 응답 생성 회로 (230) 는 요청 (206) 을 트랩하는 것에 응답하여 VMM (108) 으로부터 응답 (258) 을 수신할 수도 있다 (블록 510). 이와 관련하여, 응답 생성 회로 (230) 는 "요청의 트랩에 대한 응답을 수신하는 수단"으로 본원에서 지칭될 수도 있다. 응답 생성 회로 (230) 는 응답 생성 회로 (230) 의 RGU (406) 에 응답 (258) 의 응답 PIU (412) 를 저장할 수도 있다 (블록 512). 그 때문에, 응답 생성 회로 (230) 는 "RGPIU에서 응답을 저장하는 수단"으로 본원에서 지칭될 수도 있다. 이후 IOV-HC (102) 는 응답 생성 회로 (230) 의 RGCR (402) 를 통해 VMM (108) 으로부터 응답 생성 명령 (408) 을 수신할 수도 있다 (블록 514). IOV-HC (102) 는 "RGCR를 통해 VMM으로부터 응답 생성 명령을 수신하는 수단"으로 본원에서 지칭될 수도 있다. 일부 양태들 (eMMC 표준에 기반한 양태들) 에서, RGCR (402) 는 채용되지 않을 수도 있으며, 이로써 블록 514의 선택적 동작들이 생략될 수도 있다.
도 6 은 수신된 요청들이 프로세싱 및/또는 트랩될 수도 있는 방법을 결정하기 위한 도 2의 IOV-HC (102) 의 예시적인 동작들을 도시한 플로우차트이다. 도 6을 설명함에 있어서, 도 1 및 도 2의 엘리먼트들이 명확성을 위해 참조된다. 일부 양태들에서, 도 6에 나타낸 일부 동작들은, 요청 (206) 이 프로세싱을 위한 플래시 메모리 기반의 저장 디바이스 (106) 로 포워딩되어야 하는지, 또는 요청 (206) 이 요청 트랩 (228) 에 트랩되어야 하는지를 결정하는, 도 5a의 블록 504의 동작들에 대응할 수도 있다.
도 6의 동작들은, 요청 (206) 이 읽기 커맨드, 쓰기 커맨드, 또는 전력 모드 변경 커맨드 중 하나라는 것을 컨텐츠 (234) 가 나타내는지 여부를 요청 필터 회로 (226) 가 결정하는 것으로 시작하다 (블록 600). 요청 (206) 이 읽기 커맨드 또는 쓰기 커맨드인 것으로 블록 600에서 결정되면, 요청 (206) 은 요청 (206) 이 타당한지 여부를 결정하는 IOV-HC (102) 의 액세스 제어 회로 (236) 로 전달될 수도 있다 (블록 602). 이와 관련하여, 액세스 제어 회로 (236) 는 "요청이 타당한지 여부를 결정하는 수단"으로 본원에서 지칭될 수도 있다. 요청 (206) 이 타당하다고 블록 602에서 결정되면, 요청 (206) 은 플래시 메모리 기반의 저장 디바이스 (106) 로 포워딩된다 (블록 604). 요청 (206) 이 액세스 제어 회로 (236) 에 의해 타당하지 않다고 블록 602에서 결정되면, 요청 (206) 은 요청 트랩 (228) 에서 트랩된다 (블록 606).
요청 (206) 이 전력 모드 변경 커맨드인 것으로 결정된다고 요청 필터 회로 (226) 가 결정 블록 600에서 결정하면, 요청 (206) 은 프로세싱을 위한 IOV-HC (102) 의 MHPC (244) 로 포워딩된다 (블록 608). 그 때문에, 요청 필터 회로 (226) 는 "프로세싱을 위한 IOV-HC의 MHPC로 요청을 포워딩하는 수단"으로 본원에서 지칭될 수도 있다. 이후 요청 (206) 이 MHPC (244) 에 의해 성공적으로 프로세싱되었는지 여부에 관해 결정이 이루어진다 (블록 610). 이로써 MHPC (244) 는 "요청이 MHPC에 의해 성공적으로 프로세싱되었는지 여부를 결정하는 수단"으로 본원에서 지칭될 수도 있다. MHPC (244) 가 요청 (206) 을 성공적으로 프로세싱한다면, MHPC (244) 는 MHPC (244) 의 내부 논리에 기초하여 요청 (206) 을 플래시 메모리 기반의 저장 디바이스 (106) 로 전달하거나 또는 요청 (206) 을 종료한다 (블록 612). 요청 (602) 이 MHPC (244) 에 의해 성공적으로 프로세싱되지 않는다면, 요청 (206) 은 요청 트랩 (228) 에서 트랩된다 (블록 614). 결정 블록 600으로 되돌아가, 요청 (206) 이 읽기 커맨드, 쓰기 커맨드, 또는 전력 모드 변경 커맨드가 아닌 것으로 결정되면, 요청 (206) 은 요청 트랩 (228) 에서 트랩된다 (블록 616). 이에 따라, 요청 필터 회로 (226) 는 "요청이 읽기 커맨드, 쓰기 커맨드, 또는 전력 모드 변경 커맨드 중 하나가 아님을 컨텐츠가 나타낸다고 결정하는 것에 응답하여 요청 트랩에서 요청을 트랩하는 수단"으로 본원에서 지칭될 수도 있다.
도 2의 요청 트랩 (228) 을 사용하는 커맨드 트랩을 위한 일부 양태들에서 IOV-HC (102) 의 예시적인 동작들을 더욱 설명하기 위해, 도 7이 제공된다. 도 7을 설명함에 있어서, 도 1 - 도 3의 엘리먼트들이 명확성을 위해 참조된다. 도 7의 동작들은 요청 트랩 (228) 이 요청 트랩 (228) 의 복수의 CMSR들 (300(0)-300(N)) 중 CRI (204(0)) 에 대응하는 CMSR (300) 에 요청 (206) 의 상태 (308) 를 저장하는 것으로 시작한다 (블록 700). 이와 관련하여, 요청 트랩 (228) 은 "CRI에 대응하는 CMSR에 요청의 상태를 저장하는 수단"으로 본원에서 지칭될 수도 있다. 요청 트랩 (228) 은 또한 요청 트랩 (228) 의 복수의 CMDAT들 (302(0)-302(N)) 중 CRI (204(0)) 에 대응하는 CMDAT (302(0)) 에 요청 (206) 의 PIU (310(0)) 를 저장한다 (블록 702). 그 때문에, 요청 트랩 (228) 은 "CRI에 대응하는 CMDAT에 요청의 PIU를 저장하는 수단"으로 본원에서 지칭될 수도 있다. 다음 요청 트랩 (228) 은 요청 (206) 이 트랩된다는 것을 나타내는 VMM (108) 으로 인터럽트 (256) 를 생성시킬 수도 있다 (블록 704). 이로써 요청 트랩 (228) 은 "요청이 트랩된다는 것을 나타내는 VMM으로 인터럽트를 생성시키는 수단"으로 본원에서 지칭될 수도 있다. IOV-HC (102) 는 이후 요청 트랩 (228) 의 CMCR (304) 을 통해 VMM (108) 으로부터 핸들링 명령 (306) 을 수신할 수도 있다 (블록 706). 이와 관련하여, IOV-HC (102) 는 "요청 트랩의 CMCR을 통해 VMM으로부터 핸들링 명령을 수신하는 수단"으로 본원에서 지칭될 수도 있다. 도 7에 나타낸 예시적인 동작들이 본원에 개시된 일부 양태에서, 예컨대 eMMC 표준에 기반한 양태들에서 적용될 수 없음을 이해해야 한다.
본원에 개시된 양태들에 따른 플래시 메모리 기반의 저장 디바이스의 IOV-HC에서의 커맨드 트랩은 임의의 프로세서 기반의 디바이스에 제공되거나 또는 통합될 수 있다. 예들은, 제한 없이, 셋톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 고정 로케이션 데이터 유닛, 모바일 로케이션 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 데스크톱 컴퓨터, 개인 휴대 정보 단말기 (PDA), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, 디지털 비디오 디스크 (DVD) 플레이어, 및 휴대용 디지털 비디오 플레이어를 포함한다.
이것과 관련하여, 도 8은 도 1의 IOV-HC (102) 를 갖는 SoC (100) 를 채용할 수 있는 프로세서 기반 시스템 (800) 의 예를 예시한다. 이 예에서, 프로세서 기반 시스템 (800) 은 각각이 하나 이상의 프로세서들 (804) 을 포함하는 하나 이상의 중앙 프로세싱 유닛들 (CPU들) (802) 을 포함한다. CPU(들) (802) 는 일시적으로 저장된 데이터에 대한 고속 액세스를 위해 프로세서(들) (804) 에 커플링된 캐시 메모리 (806) 를 가질 수도 있다. CPU(들) (802) 는 시스템 버스 (808) 에 커플링되고 프로세서 기반 시스템 (800) 에 포함된 디바이스들을 상호커플링할 수 있다. 잘 알려진 바와 같이, CPU(들) (802) 는 시스템 버스 (808) 를 통해 어드레스, 제어, 및 데이터 정보를 교환함으로써 이들 다른 디바이스들과 통신한다. 예를 들어, CPU(들) (802) 는 슬레이브 디바이스의 예로서 메모리 제어기 (810) 에 버스 트랜잭션 요청들을 통신할 수 있다. 도 8에 예시되지는 않았지만, 다수의 시스템 버스들 (808) 이 제공될 수 있다.
다른 디바이스들은 시스템 버스 (808) 에 연결될 수 있다. 도 8에 예시한 바와 같이, 이들 디바이스들은 예들로서, 메모리 시스템 (812), 하나 이상의 입력 디바이스들 (814), 하나 이상의 출력 디바이스들 (816), 하나 이상의 네트워크 인터페이스 디바이스들 (818), 및 하나 이상의 디스플레이 제어기들 (820) 을 포함할 수 있다. 입력 디바이스(들) (814) 는 입력 키들, 스위치들, 음성 프로세서들 등을 포함하지만 이들에 제한되지는 않는 임의의 타입의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들) (816) 는 오디오, 비디오, 다른 시각적 표시자 (visual indicator) 들 등을 포함하지만 이들에 제한되지는 않는 임의의 타입의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들) (818) 는 네트워크 (822) 로의 및 네트워크 (822) 로부터의 데이터의 교환을 허용하도록 구성된 임의의 디바이스들일 수 있다. 네트워크 (822) 는 유선 또는 무선 네트워크, 사설 또는 공중 네트워크, 로컬 영역 네트워크 (LAN), 와이드 로컬 영역 네트워크, 무선 로컬 영역 네트워크, 블루투스 (BT), 및 인터넷을 포함하지만 이들에 제한되지는 않는 임의의 타입의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들) (818) 는 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다. 메모리 시스템 (812) 은 하나 이상의 메모리 유닛들 (824(0)-824(N)) 을 포함할 수 있다.
CPU(들) (802) 는 또한, 하나 이상의 디스플레이들 (826) 로 전송된 정보를 제어하기 위해 시스템 버스 (808) 를 통해 디스플레이 제어기(들) (820) 에 액세스하도록 구성될 수도 있다. 디스플레이 제어기(들) (820) 는 하나 이상의 비디오 프로세서들 (828) 을 통해 디스플레이될 정보를 디스플레이(들) (826) 에 전송하고, 그 하나 이상의 비디오 프로세서들 (828) 은 디스플레이(들) (826) 에 적합한 포맷으로 그 디스플레이될 정보를 프로세싱한다. 디스플레이(들) (826) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 발광 다이오드 (LED) 디스플레이, 플라즈마 디스플레이 등을 포함하지만 이들에 제한되지는 않는 임의의 타입의 디스플레이를 포함할 수 있다.
당업자들은 본 명세서에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어, 메모리에 또는 또 다른 컴퓨터 판독가능 매체에 저장되고 프로세서 또는 다른 프로세싱 디바이스에 의해 실행된 명령들, 또는 양자의 조합들로서 구현될 수도 있다는 것을 또한 인식할 것이다. 본 명세서에서 설명된 디바이스들은 예들로서, 임의의 회로, 하드웨어 컴포넌트, 집적 회로 (IC), 또는 IC 칩에서 채용될 수도 있다. 본 명세서에서 개시된 메모리는 임의의 타입 및 사이즈의 메모리일 수도 있고 원하는 임의의 타입의 정보를 저장하도록 구성될 수도 있다. 이 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능성의 관점에서 일반적으로 상기 설명되었다. 이러한 기능성이 구현되는 방법은 전체 시스템에 부과된 설계 제약들, 특정한 애플리케이션, 및/또는 설계 선택들에 의존한다. 당업자들은, 설명된 기능성을 각각의 특정한 애플리케이션에 대해 다양한 방식들로 구현할 수도 있지만, 이러한 구현 판정들은 본 개시의 범위로부터 벗어남을 야기하는 것으로서 해석되지 않아야 한다.
본 명세서에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 본 명세서에서 설명된 기능들을 수행하도록 설계된 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA) 또는 다른 프로그램가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 그 임의의 조합으로 구현 또는 수행될 수도 있다. 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다.
본 명세서에서 개시된 양태들은 하드웨어로 구현되고 그리고 하드웨어에 저장되는 명령들로 구현될 수도 있고, 예를 들어, 랜덤 액세스 메모리 (RAM), 플래시 메모리, 판독 전용 메모리 (ROM), 전기적으로 프로그램가능 ROM (EPROM), 전기적으로 소거가능한 프로그램가능 ROM (EEPROM), 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 당업계에 알려진 임의의 다른 형태의 컴퓨터 판독가능 매체에 상주할 수도 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 판독하고 그 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 저장 매체는 ASIC 에 상주할 수도 있다. ASIC 은 원격국에 상주할 수도 있다. 대안적으로, 프로세서 및 저장 매체는 원격국, 기지국, 또는 서버에 별개의 컴포넌트들로서 상주할 수도 있다.
또한, 본 명세서의 예시적인 양태들 중 임의의 것에서 설명된 동작 단계들은 예들 및 논의를 제공하기 위해 설명된다는 것에 유의한다. 설명된 동작들은 예시된 시퀀스들과는 다른 다수의 상이한 시퀀스들로 수행될 수도 있다. 더욱이, 단일의 동작 단계에서 설명된 동작들은 실제로 다수의 상이한 단계들로 수행될 수도 있다. 추가적으로, 예시적인 양태들에서 논의된 하나 이상의 동작 단계들은 조합될 수도 있다. 플로우 차트 다이어그램들에서 예시된 동작 단계들은 당업자들에게 용이하게 명백할 바와 같이 다수의 상이한 수정들의 대상일 수도 있다는 것이 이해될 것이다. 당업자들은 또한, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수도 있다는 것을 이해할 것이다. 예를 들어, 상기 설명 전반에 걸쳐 참조될 수도 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광학장들 또는 광학 입자들, 또는 그 임의의 조합에 의해 표현될 수도 있다.
본 개시의 이전의 설명은 임의의 당업자가 본 개시를 제조하거나 또는 이용하는 것을 가능하게 하기 위해 제공된다. 본 개시에 대한 다양한 수정들은 당업자들에게 용이하게 명백할 것이고, 본 명세서에서 정의된 일반적인 원리들은 본 개시의 사상 또는 범위로부터 벗어남 없이 다른 변형들에 적용될 수도 있다. 따라서, 본 개시는 본 명세서에서 설명된 예들 및 설계들에 제한되도록 의도되지 않고 본 명세서에서 개시된 원리들 및 신규한 특징들과 일치하는 최광의 범위에 부합되고자 한다.

Claims (27)

  1. 대응하는 복수의 클라이언트 레지스터 인터페이스들 (client register interfaces; CRIs) 을 통해 복수의 입/출력 (input/output; I/O) 클라이언트들에, 그리고 플래시 메모리 기반의 저장 디바이스에 통신적으로 커플링되는 입/출력 가상화 (input/output virtualization; IOV) 호스트 제어기 (host controller; HC) (IOV-HC) 로서,
    상기 IOV-HC는 요청 트랩을 포함하고; 그리고
    상기 IOV-HC는:
    상기 IOV-HC의 요청 필터 회로에 의해, 상기 복수의 CRI들의 CRI로부터 상기 플래시 메모리 기반의 저장 디바이스를 향한 요청을 수신하고;
    상기 요청 필터 회로에 의해, 상기 요청의 컨텐츠를 검사하고;
    상기 요청 필터 회로에 의해, 상기 컨텐츠에 기초하여 상기 요청이 프로세싱을 위한 상기 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 하는지 또는 트랩되어야 하는지를 결정하는 것으로서, 상기 요청이 읽기 커맨드, 쓰기 커맨드 또는 전력 모드 변경 커맨드 중 하나라는 것을 상기 컨텐츠가 나타내는지를 결정하도록 상기 요청 필터 회로가 구성되는, 상기 요청이 포워딩되어야 하는지 또는 트랩되어야 하는지를 결정하고,
    상기 요청이 프로세싱을 위한 상기 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 한다고 결정하는 것에 응답하여, 상기 요청을 상기 플래시 메모리 기반의 저장 디바이스로 포워딩하고;
    상기 요청이 트랩되어야 한다고 결정하는 것에 응답하여, 상기 요청을 상기 요청 트랩에서 트랩하고;
    상기 요청이 읽기 커맨드 또는 쓰기 커맨드 중 하나라는 것을 상기 컨텐츠가 나타낸다고 상기 요청 필터 회로에 의해 결정하는 것에 응답하여, 상기 IOV-HC의 액세스 제어 회로에 의해, 상기 요청이 타당한지를 결정하고;
    상기 요청이 타당하다고 결정하는 것에 응답하여, 상기 요청을 상기 플래시 메모리 기반의 저장 디바이스로 포워딩하고; 그리고
    상기 요청이 타당하지 않다고 결정하는 것에 응답하여, 상기 요청을 상기 요청 트랩에서 트랩하도록 구성되는, 입/출력 가상화 호스트 제어기.
  2. 제 1 항에 있어서,
    상기 요청 트랩은:
    커맨드 미러 제어 레지스터 (command mirror control register; CMCR) 및 복수의 커맨드 미러들 (CM들) 을 포함하고,
    각각의 커맨드 미러들은:
    각각의 커맨드 미러 상태 레지스터 (command mirror status register; CMSR) 가 상기 복수의 CRI들의 CRI에 대응하는, 복수의 커맨드 미러 상태 레지스터들 (CMSR들); 및
    각각의 커맨드 미러 데이터 레지스터 어레이 (command mirror data register array; CMDAT) 가 상기 복수의 CRI들의 CRI에 대응하는, 복수의 커맨드 미러 데이터 레지스터 어레이들 (CMDAT들) 을 포함하고; 그리고
    상기 IOV-HC는 또한:
    상기 복수의 CMSR들 중 상기 CRI에 대응하는 CMSR에 상기 요청의 상태를 저장하고;
    상기 복수의 CMDAT들 중 상기 CRI에 대응하는 CMDAT에 상기 요청의 프로토콜 정보 유닛 (PIU) 을 저장하고;
    상기 요청이 트랩된다는 것을 나타내는 가상 머신 관리자 (VMM) 로 인터럽트를 생성하고; 그리고
    상기 CMCR을 통해 상기 VMM으로부터 핸들링 명령을 수신하도록
    구성되는 것에 의해,
    상기 요청을 상기 요청 트랩에서 트랩하도록 구성되는, 입/출력 가상화 호스트 제어기.
  3. 제 1 항에 있어서,
    응답 생성기 제어 레지스터 (response generator control register; RGCR); 및
    응답 생성기 프로토콜 정보 유닛 (response generator protocol information unit; RGPIU)
    을 포함하는 응답 생성 회로를 더 포함하고; 그리고
    상기 IOV-HC는 또한, 상기 요청을 상기 요청 트랩에서 트랩하는 것에 응답하여:
    상기 응답 생성 회로에 의해, 상기 요청을 트랩하는 것에 대한 응답을 수신하고;
    상기 응답의 PIU를 상기 RGPIU에 저장하며; 그리고
    상기 RGCR을 통해 VMM으로부터 응답 생성 명령을 수신하도록 구성되는, 입/출력 가상화 호스트 제어기.
  4. 제 1 항에 있어서,
    상기 요청이 전력 모드 변경 커맨드라는 것을 상기 컨텐츠가 나타낸다고 상기 요청 필터 회로에 의해 결정하는 것에 응답하여,
    프로세싱을 위한 상기 IOV-HC의 멀티 호스트 전력 제어기 (multi-host power controller; MHPC) 로 상기 요청을 포워딩하고; 그리고
    상기 요청이 상기 MHPC에 의해 성공적으로 프로세싱되었는지를 결정하도록 또한 구성되고;
    상기 IOV-HC는, 상기 요청이 상기 MHPC에 의해 성공적으로 프로세싱되지 않았다고 결정하는 것에 응답하여 상기 요청을 상기 요청 트랩에서 트랩하도록 구성되는, 입/출력 가상화 호스트 제어기.
  5. 제 1 항에 있어서,
    상기 요청이 상기 읽기 커맨드, 상기 쓰기 커맨드, 또는 상기 전력 모드 변경 커맨드 중 하나가 아니라는 것을 상기 컨텐츠가 나타낸다고 상기 요청 필터 회로에 의해 결정하는 것에 응답하여 상기 요청을 상기 요청 트랩에서 트랩하도록 또한 구성되는, 입/출력 가상화 호스트 제어기.
  6. 제 1 항에 있어서,
    내장형 멀티미디어 카드 (Embedded MultiMedia Card; eMMC) 표준에 따라 상기 플래시 메모리 기반의 저장 디바이스에 통신적으로 커플링되는, 입/출력 가상화 호스트 제어기.
  7. 제 1 항에 있어서,
    범용 플래시 스토리지 (Universal Flash Storage; UFS) 표준에 따라 상기 플래시 메모리 기반의 저장 디바이스에 통신적으로 커플링되는, 입/출력 가상화 호스트 제어기.
  8. 제 1 항에 있어서,
    집적 회로 (IC) 에 통합되는, 입/출력 가상화 호스트 제어기.
  9. 제 1 항에 있어서,
    셋톱 박스; 엔터테인먼트 유닛; 내비게이션 디바이스; 통신 디바이스; 고정 로케이션 데이터 유닛; 모바일 로케이션 데이터 유닛; 모바일 폰; 셀룰러 폰; 컴퓨터; 휴대용 컴퓨터; 데스크톱 컴퓨터; 개인 휴대 정보 단말기 (PDA); 모니터; 컴퓨터 모니터; 텔레비전; 튜너; 라디오; 위성 라디오; 뮤직 플레이어; 디지털 뮤직 플레이어; 휴대용 뮤직 플레이어; 디지털 비디오 플레이어; 비디오 플레이어; 디지털 비디오 디스크 (DVD) 플레이어; 및 휴대용 디지털 비디오 플레이어로 이루어지는 그룹으로부터 선택된 디바이스로 통합되는, 입/출력 가상화 호스트 제어기.
  10. 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법으로서,
    입/출력 가상화 (IOV) 호스트 제어기 (HC) (IOV-HC) 의 요청 필터 회로에 의해, 복수의 CRI들의 클라이언트 레지스터 인터페이스 (CRI) 로부터 상기 플래시 메모리 기반의 저장 디바이스를 향한 요청을 수신하는 단계;
    상기 요청 필터 회로에 의해, 상기 요청의 컨텐츠를 검사하는 단계;
    상기 요청 필터 회로에 의해, 상기 요청이 읽기 커맨드, 쓰기 커맨드 및 전력 모드 변경 커맨드 중 하나라는 것을 상기 컨텐츠가 나타내는지를 결정함으로써, 상기 요청이 상기 컨텐츠에 기초하여 프로세싱을 위한 상기 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 하는지, 또는 요청 트랩에서 트랩되어야 하는지를 결정하는 단계;
    상기 요청이 프로세싱을 위한 상기 플래시 메모리 기반의 저장 디바이스로 포워딩되어야 한다고 결정하는 것에 응답하여, 상기 요청을 상기 플래시 메모리 기반의 저장 디바이스로 포워딩하는 단계;
    상기 요청이 트랩되어야 한다고 결정하는 것에 응답하여, 상기 요청을 상기 요청 트랩에서 트랩하는 단계; 및
    상기 요청이 상기 읽기 커맨드 또는 상기 쓰기 커맨드 중 하나라는 것을 상기 컨텐츠가 나타낸다고 결정하는 것에 응답하여, 상기 IOV-HC의 액세스 제어 회로에 의해, 상기 요청이 타당한지를 결정하는 단계를 포함하고;
    상기 요청을 상기 플래시 메모리 기반의 저장 디바이스로 포워딩하는 단계는 상기 요청이 타당하다고 결정하는 것에 응답하는 것이고; 그리고
    상기 요청을 상기 요청 트랩에서 트랩하는 단계는 상기 요청이 타당하지 않다고 결정하는 것에 응답하는 것인, 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법.
  11. 제 10 항에 있어서,
    상기 요청을 트랩하는 단계는:
    상기 요청 트랩의 복수의 커맨드 미러 상태 레지스터 (CMSR) 들 중 상기 CRI에 대응하는 CMSR에 상기 요청의 상태를 저장하는 단계;
    상기 요청 트랩의 복수의 커맨드 미러 데이터 레지스터 어레이 (CMDAT) 들 중 상기 CRI에 대응하는 CMDAT에 상기 요청의 프로토콜 정보 유닛 (PIU) 을 저장하는 단계;
    상기 요청이 트랩된다는 것을 나타내는 가상 머신 관리자 (VMM) 로 인터럽트를 생성하는 단계; 및
    상기 요청 트랩의 커맨드 미러 제어 레지스터 (CMCR) 를 통해 상기 VMM으로부터 핸들링 명령을 수신하는 단계를 포함하는, 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법.
  12. 제 10 항에 있어서,
    상기 요청을 상기 요청 트랩에서 트랩하는 것에 응답하여,
    응답 생성 회로에 의해, 상기 요청을 트랩하는 것에 대한 응답을 수신하는 단계;
    상기 응답 생성 회로의 응답 생성기 프로토콜 정보 유닛 (RGPIU) 에 상기 응답을 저장하는 단계; 및
    상기 응답 생성 회로의 응답 생성기 제어 레지스터 (RGCR) 를 통해 VMM으로부터 응답 생성 명령을 수신하는 단계를 더 포함하는, 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법.
  13. 제 10 항에 있어서,
    상기 요청이 상기 전력 모드 변경 커맨드라는 것을 상기 컨텐츠가 나타낸다고 상기 요청 필터 회로에 의해 결정하는 것에 응답하여,
    프로세싱을 위한 상기 IOV-HC의 멀티 호스트 전력 제어기 (MHPC) 로 상기 요청을 포워딩하는 단계; 및
    상기 요청이 상기 MHPC에 의해 성공적으로 프로세싱되었는지를 결정하는 단계를 더 포함하고:
    상기 요청을 상기 요청 트랩에서 트랩하는 단계는 상기 요청이 상기 MHPC에 의해 성공적으로 프로세싱되지 않았다고 결정하는 것에 응답하는 것인, 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법.
  14. 제 10 항에 있어서,
    상기 요청을 상기 요청 트랩에서 트랩하는 단계는, 상기 요청이 상기 읽기 커맨드, 상기 쓰기 커맨드, 또는 상기 전력 모드 변경 커맨드 중 하나가 아니라는 것을 상기 컨텐츠가 나타낸다고 상기 요청 필터 회로에 의해 결정하는 것에 응답하는 것인, 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법.
  15. 제 10 항에 있어서,
    상기 플래시 메모리 기반의 저장 디바이스는 내장형 멀티미디어 카드 (eMMC) 디바이스를 포함하는, 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법.
  16. 제 10 항에 있어서,
    상기 플래시 메모리 기반의 저장 디바이스는 범용 플래시 스토리지 (UFS) 디바이스를 포함하는, 다수의 호스트용 플래시 메모리 기반의 저장 디바이스에 대한 커맨드 트랩을 제공하는 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
KR1020167033809A 2014-06-03 2015-06-03 플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc) 에서의 커맨드 트랩 KR101861471B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462007123P 2014-06-03 2014-06-03
US62/007,123 2014-06-03
US14/728,400 US9690720B2 (en) 2014-06-03 2015-06-02 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
US14/728,400 2015-06-02
PCT/US2015/033970 WO2015187824A1 (en) 2014-06-03 2015-06-03 Command trapping in an input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device

Publications (2)

Publication Number Publication Date
KR20170013269A KR20170013269A (ko) 2017-02-06
KR101861471B1 true KR101861471B1 (ko) 2018-05-28

Family

ID=54701761

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033809A KR101861471B1 (ko) 2014-06-03 2015-06-03 플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc) 에서의 커맨드 트랩

Country Status (6)

Country Link
US (1) US9690720B2 (ko)
EP (1) EP3152668A1 (ko)
JP (1) JP6231704B2 (ko)
KR (1) KR101861471B1 (ko)
CN (1) CN106462521B (ko)
WO (1) WO2015187824A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
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
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
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
US10091832B2 (en) * 2015-11-17 2018-10-02 Affirmed Networks, Inc. Call failure reduction
US10877673B2 (en) * 2017-12-15 2020-12-29 Microchip Technology Incorporated Transparently attached flash memory security
US11216391B1 (en) * 2018-06-21 2022-01-04 Amazon Technologies, Inc. Using an I/O proxy device to filter I/O messages in a computer system
US10969973B2 (en) * 2018-09-20 2021-04-06 Microsoft Technology Licensing, Llc Software filtered memory devices in computing systems
KR102643803B1 (ko) * 2018-11-15 2024-03-05 삼성전자주식회사 멀티 호스트 컨트롤러와 이를 포함하는 반도체 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7480784B2 (en) 2005-08-12 2009-01-20 Advanced Micro Devices, Inc. Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
EP2492916A1 (en) 2010-05-27 2012-08-29 Huawei Technologies Co., Ltd. Multi-interface solid state disk (ssd), processing method and system thereof
US20130060981A1 (en) 2011-09-06 2013-03-07 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
WO2013109640A1 (en) 2012-01-17 2013-07-25 Intel Corporation Techniques for command validation for access to a storage device by a remote client

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63310067A (ja) * 1987-06-11 1988-12-19 Toshiba Corp 割付け支援装置
US7571295B2 (en) 2005-08-04 2009-08-04 Intel Corporation Memory manager for heterogeneous memory control
DE102005037635B4 (de) 2005-08-09 2007-07-12 Infineon Technologies Ag Hardwaresteuerung für den Wechsel des Betriebsmodus eines Speichers
US7873770B2 (en) 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US8793364B1 (en) 2008-12-01 2014-07-29 American Megatrends, Inc. Remote power controller
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
JP5646633B2 (ja) 2010-04-12 2014-12-24 株式会社日立製作所 ストレージ装置
US8812889B2 (en) 2010-05-05 2014-08-19 Broadcom Corporation Memory power manager
US8301715B2 (en) 2010-05-20 2012-10-30 Sandisk Il Ltd. Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
WO2012023151A2 (en) 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd I/o virtualization and switching system
WO2012143945A2 (en) 2011-04-18 2012-10-26 Ineda Systems Pvt. Ltd Power management in multi host computing systems
WO2012143949A2 (en) 2011-04-19 2012-10-26 Ineda Systems Pvt. Ltd Secure digital host controller virtualization
US9430432B2 (en) 2011-04-21 2016-08-30 Ineda Systems Pvt. Ltd. Optimized multi-root input output virtualization aware switch
US8631212B2 (en) 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
WO2013052562A1 (en) 2011-10-05 2013-04-11 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
US20130159572A1 (en) 2011-12-16 2013-06-20 International Business Machines Corporation Managing configuration and system operations of a non-shared virtualized input/output adapter as virtual peripheral component interconnect root to multi-function hierarchies
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US20130290606A1 (en) 2012-04-30 2013-10-31 Apple Inc. Power management for a system having non-volatile memory
JP5870213B2 (ja) * 2012-05-16 2016-02-24 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ転送制御方法
US9424199B2 (en) 2012-08-29 2016-08-23 Advanced Micro Devices, Inc. Virtual input/output memory management unit within a guest virtual machine
US9003088B2 (en) 2012-12-06 2015-04-07 Dell Products L.P. Mapping virtual devices to computing nodes
JP5716732B2 (ja) 2012-12-19 2015-05-13 コニカミノルタ株式会社 制御プログラム、制御装置、画像処理システム、および制御方法
WO2014141140A1 (en) 2013-03-14 2014-09-18 Lsi Corporation Device power control
JP6030987B2 (ja) 2013-04-02 2016-11-24 ルネサスエレクトロニクス株式会社 メモリ制御回路
US9734096B2 (en) 2013-05-06 2017-08-15 Industrial Technology Research Institute Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
KR102094902B1 (ko) 2013-07-08 2020-03-30 삼성전자주식회사 액티브 상태에서 인터페이스 모드를 전환하는 스토리지 시스템 및 ufs 시스템
US9348537B2 (en) * 2013-09-10 2016-05-24 Qualcomm Incorporated Ascertaining command completion in flash memories
US9916906B2 (en) * 2014-02-27 2018-03-13 Seagate Technology Llc Periodically updating a log likelihood ratio (LLR) table in a flash memory controller
US9881680B2 (en) 2014-06-03 2018-01-30 Qualcomm Incorporated Multi-host power controller (MHPC) 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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7480784B2 (en) 2005-08-12 2009-01-20 Advanced Micro Devices, Inc. Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
EP2492916A1 (en) 2010-05-27 2012-08-29 Huawei Technologies Co., Ltd. Multi-interface solid state disk (ssd), processing method and system thereof
US20130060981A1 (en) 2011-09-06 2013-03-07 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
WO2013109640A1 (en) 2012-01-17 2013-07-25 Intel Corporation Techniques for command validation for access to a storage device by a remote client

Also Published As

Publication number Publication date
CN106462521B (zh) 2019-06-21
US9690720B2 (en) 2017-06-27
EP3152668A1 (en) 2017-04-12
KR20170013269A (ko) 2017-02-06
WO2015187824A1 (en) 2015-12-10
CN106462521A (zh) 2017-02-22
JP6231704B2 (ja) 2017-11-15
US20150347017A1 (en) 2015-12-03
JP2017518574A (ja) 2017-07-06

Similar Documents

Publication Publication Date Title
KR101861471B1 (ko) 플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc) 에서의 커맨드 트랩
US11500810B2 (en) Techniques for command validation for access to a storage device by a remote client
TWI466060B (zh) 轉譯單元、顯示管與在顯示管中之串流轉譯之方法與裝置
US9852301B2 (en) Creating secure channels between a protected execution environment and fixed-function endpoints
US9881680B2 (en) Multi-host power controller (MHPC) of a flash-memory-based storage device
KR101682980B1 (ko) 시스템 온 칩에서의 대역폭 할당의 제어
US9632953B2 (en) Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US9501668B2 (en) Secure video ouput path
CN108304334B (zh) 应用处理器和包括中断控制器的集成电路
US20160062659A1 (en) Virtual memory module
US10261700B1 (en) Method and apparatus for streaming buffering to accelerate reads
US20180285269A1 (en) Aggregating cache maintenance instructions in processor-based devices
US11940917B2 (en) System and method for network interface controller based distributed cache

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
GRNT Written decision to grant