KR101516093B1 - 포트 공유 하드웨어를 통한 저장 장치들에의 대역외 액세스 - Google Patents
포트 공유 하드웨어를 통한 저장 장치들에의 대역외 액세스 Download PDFInfo
- Publication number
- KR101516093B1 KR101516093B1 KR1020137000756A KR20137000756A KR101516093B1 KR 101516093 B1 KR101516093 B1 KR 101516093B1 KR 1020137000756 A KR1020137000756 A KR 1020137000756A KR 20137000756 A KR20137000756 A KR 20137000756A KR 101516093 B1 KR101516093 B1 KR 101516093B1
- Authority
- KR
- South Korea
- Prior art keywords
- command
- controller interface
- execution
- host
- operating system
- 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/14—Handling requests for interconnection or transfer
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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/0617—Improving the reliability of storage systems in relation to availability
-
- 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
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
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)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
포트 공유 하드웨어를 통한 저장 장치들에의 대역외 액세스를 가능하게 하기 위한 방법, 장치, 시스템, 및 컴퓨터 프로그램 제품이 개시된다. 저장 장치들에 대역외 액세스를 제공하는 것은 오퍼레이팅 시스템이 활성일 때뿐만 아니라 오퍼레이팅 시스템이 비-기능성일 때에 시스템 관리 기능들이 수행될 수 있게 한다. 관리 서비스로 시작하는 저장 커맨드들은 호스트 오퍼레이팅 시스템에 의해 발행된 저장 커맨드들과 인터리브될 수 있다. 호스트 오퍼레이팅 시스템은 그의 저장 장치들에 대한 소유권 및 제어를 유지하지만, 호스트 오퍼레이팅 시스템이 동작하는 동안 관리 활동들이 수행될 수 있다.
Description
저작권 공지
본원에 포함된 것은 저작권 보호를 받는 자료이다. 저작권 소유자는 특허청 특허 파일들 또는 기록들에 나타나는 것처럼 임의의 사람에 의한 특허 개시의 팩시밀리 복제에 대해 이의가 없지만, 저작권에 대한 모든 권리를 가진다.
기술분야
본 개시는 일반적으로 기업 및 클라이언트/서버 컴퓨팅 환경들의 관리에 관한 것이다.
데이터 백업 및 복구, 안티-바이러스 스캔, 디스크 복원, 악성 소프트웨어의 제거 등과 같은 온라인 저장 서비스들은 현재 저장 툴들이 설치되는 원격 네트워크 서버들과의 통신을 통해 클라이언트 컴퓨터들에 대해 널리 이용가능하다. 클라이언트 컴퓨터들과 원격 서버들 사이의 통신은 통상적으로 클라이언트 컴퓨터들에 설치된 소프트웨어 에이전트들을 이용하여 구축된다. 그러나, 이러한 소프트웨어 에이전트들은 항상 용이하게 설치되지는 않고, 클라이언트 컴퓨터들 상의 바이러스 또는 악성 소프트웨어에 의해 셧다운되거나 영향을 받을 수 있다.
또한, 현재의 온라인 저장 서비스들 및 소프트웨어 에이전트들은 클라이언트 컴퓨터들의 오퍼레이팅 시스템에 의존적이다. 따라서, 오퍼레이팅 시스템은 온라인 저장 서비스들이 제공될 수 있기 전에 클라이언트 시스템에 공급되어야 한다. 또한, 오퍼레이팅 시스템이 손상되거나 마비되었을 때, 원격 서버들은 클라이언트 컴퓨터들의 대용량 저장소에 액세스할 기회를 잃을 것이고 클라이언트 컴퓨터들에 온라인 저장 서비스들을 제공할 수 없다.
도 1은 본 발명의 일 실시예에 따라 포트 공유 하드웨어를 통한 저장 장치들에의 대역외 액세스를 가능하게 하도록 구성되는 시스템의 블록도이다.
도 2는 본 발명의 일 실시예에 따라 저장 장치들에의 대역외 액세스를 가능하게 하기 위한 포트 공유 하드웨어 및 연관된 펌웨어의 동작의 흐름도이다.
도 2는 본 발명의 일 실시예에 따라 저장 장치들에의 대역외 액세스를 가능하게 하기 위한 포트 공유 하드웨어 및 연관된 펌웨어의 동작의 흐름도이다.
본 발명의 실시예들은 포트 공유 하드웨어를 통한 저장 장치들에의 대역외 액세스를 가능하게 하기 위한 방법, 장치, 시스템, 및 컴퓨터 프로그램 제품을 제공할 수 있다. 저장 장치들에 대역외 액세스를 제공하는 것은 오퍼레이팅 시스템이 활성일 때뿐만 아니라 오퍼레이팅 시스템이 비-기능성(non-functional)일 때에 시스템 관리 기능들이 수행될 수 있게 한다. 관리 서비스로 시작하는 저장 커맨드들은 호스트 오퍼레이팅 시스템에 의해 발행된 저장 커맨드들과 인터리브(interleave)될 수 있다. 호스트 오퍼레이팅 시스템은 그의 저장 장치들에 대한 소유권 및 제어를 유지하지만, 본 발명은 호스트 오퍼레이팅 시스템이 동작하는 동안 관리 활동들이 수행될 수 있게 한다.
일 실시예에서, 방법은 호스트 컨트롤러 인터페이스를 통해 저장 장치에 액세스하기 위한 제1 커맨드를 수신하는 단계; 대역외 컨트롤러 인터페이스를 통해 저장 장치에 액세스하기 위한 제2 커맨드를 수신하는 단계; 상기 제1 커맨드의 실행 후에 상기 저장 장치의 예상 상태를 결정하는 단계; 상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할지를 결정하는 단계; 및 상기 제2 커맨드의 실행이 상기 예상 상태에 간섭하지 않을 경우, 상기 제2 커맨드를 실행하기 전에 상기 제1 커맨드를 실행하는 단계를 포함하고, 상기 제2 커맨드는 상기 호스트 오퍼레이팅 시스템의 관여 없이 실행된다. 상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 방법은 상기 제2 커맨드를 취소하고 상기 제1 커맨드를 실행하는 단계; 상기 저장 장치의 원하는 상태가 실현될 때까지 상기 제2 커맨드를 지연시키고, 상기 제1 커맨드를 실행하고, 상기 저장 장치의 상기 원하는 상태가 실현될 때 상기 제2 커맨드를 실행하는 단계; 및/또는 상기 제2 커맨드를 실행한 후에 상기 예상 상태를 복원하기 위한 제3 커맨드를 결정하고, 상기 제3 커맨드가 실행된 후까지 상기 제1 커맨드의 시그널링 완료를 지연시키면서 상기 제1 커맨드, 상기 제2 커맨드, 및 상기 제3 커맨드를 실행하는 단계를 더 포함할 수 있다. 일 실시예에서, 상기 제1 및 제2 커맨드들이 수신될 때 상기 제1 및 제2 커맨드들이 실행되는 동안 상기 호스트 오퍼레이팅 시스템은 활성이다. 상기 방법은, 상기 호스트 컨트롤러 인터페이스와 연관된 제1 메모리 내로 상기 제1 커맨드를 배치하는 단계; 상기 대역외 컨트롤러 인터페이스에 의한 액세스로부터 상기 제1 메모리를 보호하는 단계; 상기 대역외 컨트롤러 인터페이스와 연관된 제2 메모리 내로 상기 제2 커맨드를 배치하는 단계; 및 상기 호스트 오퍼레이팅 시스템 및 상기 호스트 컨트롤러 인터페이스에 의한 액세스로부터 상기 제2 메모리를 보호하는 단계를 더 포함할 수 있다. 상기 방법을 수행하기 위한 명령어들을 갖는 컴퓨터 프로그램 제품 및 시스템도 제공된다.
명세서에서의 본 발명의 "일 실시예" 또는 "실시예"에 대한 언급은, 실시예와 결합하여 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 명세서 전체에 걸쳐서 여러 곳에서 나타나는 "일 실시예에서", "일 실시예에 따르면" 등의 구절들의 출현은 반드시 모두 동일한 실시예를 가리키는 것은 아니다.
설명의 목적을 위해, 본 발명의 철저한 이해를 제공하기 위해 특정 구성들 및 상세들이 제시된다. 그러나, 본원에 제시된 특정 상세들 없이 본 발명의 실시예들이 실시될 수 있다는 것이 이 기술분야의 통상의 기술자에게 명백할 것이다. 또한, 잘 알려진 특징들은 본 발명을 불명료하게 하지 않도록 하기 위해 생략되거나 간소화될 수 있다. 다양한 예들이 이 설명 전체에 걸쳐서 주어질 수 있다. 이것들은 단지 발명의 특정 실시예들의 설명들이다. 발명의 범위는 주어진 예들로 한정되지 않는다.
본원에서 저장 서비스들은 클라이언트 컴퓨터들에의 오퍼레이팅 시스템 이미지의 초기 공급, 데이터 백업 및 복구, 디스크 복원, 안티-바이러스 스캔 및 악성 소프트웨어 제거, 보안 시스템들의 설치, 및 시스템 성능 최적화를 포함하며, 이것으로 한정되지 않는다.
"대역외(out-of-band)"라는 용어는 본원에서 클라이언트 장치의 오퍼레이팅 시스템(OS)에 독립적으로 수행되는 클라이언트 장치의 관리 모듈과 서버 장치 사이의 통신과 같은, 메인 스트림과 독립적인 통신을 설명하는 데 이용된다.
도 1은 본 발명의 일 실시예에 따라 포트 공유 하드웨어를 통한 저장 장치들에의 대역외 액세스를 가능하게 하도록 구성되는 시스템(100)의 블록도이다. 미니-개선된 호스트 컨트롤러 인터페이스(advanced host controller interface; AHCI)(110)는 호스트 AHCI(120)과 포트들(102)(개별적으로 포트들 0 내지 5라고 라벨링됨)을 공유하는 대역외 컨트롤러 인터페이스를 나타낸다. 미니-AHCI(110)는 시스템(100)을 위한 호스트 오퍼레이팅 시스템(106)에 의해 액세스 불가능한 반면, 호스트 AHCI(120)는 호스트 오퍼레이팅 시스템(106)에 의해 액세스 가능하다. 미니-AHCI(110)는 네트워크 접속(109)을 통해 시스템(100)에 저장 서비스들을 제공하는 원격 저장 관리 서비스(108)에 의해 시스템(100)의 저장 장치들(160A 내지 160F)에 대해 액세스를 제공한다. 미니-AHCI(110)에 의해 제공되는 액세스는 호스트 오퍼레이팅 시스템(106)에 독립적으로 호스트 오퍼레이팅 시스템(106)의 도움 없이 제공된다. 호스트 AHCI(120)는 호스트 오퍼레이팅 시스템(106)에 의해 시스템(100)의 저장 장치들(160A 내지 160F)에 대해 액세스를 제공한다. 호스트 AHCI(120)는 또한 호스트 오퍼레이팅 시스템에 비휘발성 메모리(136)에 대한 액세스를 제공하기 위해 포트들(104)(개별적으로 포트들 6 및 7로 라벨링됨)에 대한 액세스를 제공한다.
저장 커맨드가 미니-AHCI(110)를 통해 발행될 때, 미니-AHCI(110)는 관리 커맨드들을 프로세싱하기 위해 별도로 설정된 메모리 ME UMA(134)에 저장된 펌웨어 테이블(112) 내로 커맨드 정보를 배치한다. 커맨드 정보는 커맨드 및 커맨드가 동작할 데이터에 대한 포인터들을 포함할 것이다. 이들 데이터 포인터들은 저장 장치들(160A 내지 160F)이 액세스할 수 있는 페이지들로 변환될 것이다. 미니-AHCI(110)는 메모리 내로 커맨드가 배치되었음을 커맨드 프로세싱 블록(140)에 통지하기 위해 신호를 전송한다. 메모리 ME UMA(134)는 6개의 공유 포트(102)(개별적으로 포트들 0 내지 5라고 라벨링됨) 각각에 대해 하나의 슬롯을 포함함으로써, 하나의 관리 커맨드가 각각의 포트에 대해 프로세싱될 수 있게 한다. 메모리 ME UMA(134)에 저장된 펌웨어 테이블(112)은 호스트 오퍼레이팅 시스템(106)에 의해 액세스 불가능하고, 오직 미니-AHCI 인터페이스(110)를 통해 액세스 가능하다.
저장 커맨드가 호스트 AHCI(120)를 통해 호스트 오퍼레이팅 시스템에 의해 발행될 때, 호스트 AHCI(120)는 호스트 메모리(132) 장소에 저장된 호스트 테이블(122) 내로 커맨드 정보를 배치한다. 커맨드 정보는 커맨드 데이터 및 커맨드가 동작할 데이터에 대한 포인터들을 둘다 포함할 것이다. 이들 데이터 포인터들은 저장 장치들(160A 내지 160F)이 액세스할 수 있는 페이지들로 변환될 것이다. 호스트 AHCI(120)는 메모리 내로 커맨드가 배치되었음을 커맨드 프로세싱 블록(140)에 통지하기 위해 신호를 전송한다. 호스트 메모리(132)는 8개의 포트(102 및 104)(개별적으로 공유 포트들 0 내지 5와 NVM 포트들 6 및 7로서 라벨링됨) 각각에 대해 32개의 슬롯을 포함함으로써, 최대 32개의 커맨드가 각각의 포트에 대해 프로세싱될 수 있게 한다. 호스트 메모리(132)에 저장된 호스트 테이블(122)은 호스트 AHCI(120)를 통해 호스트 오퍼레이팅 시스템(106)에 의해 액세스 가능하지만, 미니-AHCI 인터페이스(110)를 통해 액세스 불가능하다. 메모리 ME UMA(134)는 칩셋 하드웨어를 통해 호스트 AHCI(120)를 통한 액세스로부터 보호되고, 호스트 메모리(132)는 마찬가지로 칩셋 하드웨어를 통해 미니-AHCI 인터페이스(110)를 통한 액세스에 의한 액세스로부터 보호된다. 메모리 참조 어드레스가 개개의 인터페이스에 대해 범위를 벗어난 경우, 메모리를 참조하기 위한 요구가 하드웨어에 의해 드롭된다.
커맨드 프로세싱 블록(140)은 특정 메모리 장소(관리 개시(management-initiated) 커맨드들을 위한 ME UMA(134) 및 호스트 개시 커맨드들을 위한 호스트 메모리(132))로부터 커맨드들을 인출하는 페치 및 시퀀서 블록(fetch and sequencer block)(142)을 포함한다. 커맨드가 메모리 장소 내에 배치되었음을 표시하는 신호가 수신될 때, 페치 및 시퀀서 블록(142)은 호스트 메모리(132) 또는 ME UMA 메모리(134)로부터 커맨드 정보를 인출한다. 실행 블록(144)은 커맨드를 실행하고, DMA 블록(146)은 실행을 위해 트랜잭션 순환 버퍼(transaction circular buffer)(148) 내로 직접 메모리 액세스 명령어들을 배치한다.
페치 및 시퀀서 블록(142)은 커맨드 신호가 수신되는 컨트롤러(미니-AHCI(110) 또는 호스트 AHCI(120))에 기초하여 적절한 커맨드 테이블로부터 커맨드들을 인출한다. 정보는 DMA 블록(146)을 통해 트랜잭션 순환 버퍼(148)의 선두(head)로 DMA 전송을 통해 전송된다(하드웨어 기반 큐(hardware-based Queue)). DMA 전송이 진행중인 동안, ATA 커맨드 필터 블록(170)은 트랜잭션 버퍼 엔트리의 플래그들 및 IO 태그 필드들을 설정하기 위해 커맨드 정보를 검사하고, 이것은 테이블(150)에 따라 포맷팅되고, 아래에서 더욱 상세히 설명된다. ATA 커맨드 필터 블록(170)에 의한 ATA 커맨드 검사 중에, 룩업 테이블(180)이 고유 ATA 커맨드 식별자에 대해 참조된다. 요구되는 호스트 커맨드와 룩업 테이블(180) 내의 엔트리 사이에 커맨드 식별자 정합이 이루어질 때, 트랜잭션 버퍼 엔트리(150)의 플래그 필드는 그 커맨드 식별자에 대한 룩업 테이블 데이터에 따라 설정된다.
일단 엔트리가 트랜잭션 순환 버퍼(148) 내로 배치되면, 실행 블록(144)은 트랜잭션 순환 버퍼(148)의 말단으로부터 커맨드들을 실행하도록 시그널링된다. 커맨드 정보를 장치들(160A-F) 중 하나에 전송하기 전에, 실행 유닛(144)은 그것이 실행할 예정인 트랜잭션 순환 버퍼(148) 엔트리의 플래그 필드를 검사한다. 다음 커맨드 인터럽트(Interrupt Next Command) 비트가 설정된 경우, 실행 유닛(144)은 다음 커맨드가 트랜잭션 순환 버퍼(148)로부터 실행될 때 관리 서비스(108)를 인터럽트하기 위해 내부 플래그를 설정할 것이다. 실행 이전 인터럽트(Interrupt before Execution) 비트가 설정된 경우, 실행 유닛(144)은 결정을 하기 위해 관리 서비스(108)를 인터럽트할 것이고, 일단 실행 유닛(144)이 실행이 계속될 수 있다는 신호를 수신하면 실행을 계속함으로써, 관리 서비스(108)가 결정을 행할 시간을 허용한다.
일단 실행 유닛(144)이 그것이 장치들(160A-F) 중 하나에 커맨드를 전송하도록 수락가능함을 결정하면, 실행 유닛(144)은 트랜잭션 순환 버퍼(148)로부터 장치로의 트랜잭션 순환 버퍼 엔트리(150)의 CFIS 필드의 DMA를 시그널링한다. 일단 장치가 커맨드를 완료하면, 보통 호스트 AHCI(120) 컨트롤러로 바로 가는 모든 상태 변경들 및 응답 정보는, 이제 트랜잭션 순환 버퍼(148) 내로 돌아간다. 완료 이전 인터럽트(Interrupt before completion) 비트가 실행되고 있는 커맨드에 대한 트랜잭션 순환 버퍼 엔트리(150)의 플래그 필드에 설정되면, 실행 유닛(144)은 완료 정보를 검사하기 위해 관리 서비스(108)를 인터럽트할 것이다. 일단 관리 서비스(108)가 완료 정보의 검사를 끝마치면, 관리 서비스(108)는 실행 유닛(144)에 시그널링하고 실행 유닛(144)은 호스트 AHCI 컨트롤러(120)로의 완료 정보 및 상태의 DMA 전송을 수행한다.
트랜잭션 순환 버퍼 엔트리들은 테이블(150)에 따라 포맷팅된다. 도시된 실시예에서, 각각의 트랜잭션 순환 버퍼 엔트리는 20 더블 워드(double words)를 포함한다. 따라서, 트랜잭션 순환 버퍼에 대한 총 메모리 요건은 각각의 포트에 대해 240 바이트이고, 6개의 공유 포트에 대해 총 1.4 킬로바이트이다. 다른 실시예에서, 메모리는 또한 트랜잭션 순환 버퍼에서 2개의 비-공유 포트에 대해 할당됨으로써, 모두 8개의 포트에 대해 메모리를 할당한다. 트랜잭션 순환 버퍼 엔트리 포맷의 제1 더블 워드에서, 비트들 00 내지 07은 커맨드가 호스트 AHCI(120)를 통해 호스트에 의해 개시되었는지 또는 미니-AHCI(110)를 통해 관리 서비스(108)에 의해 개시되었는지를 표시한다. 비트들 08 내지 15는 커맨드의 실행 전에 인터럽트가 발생될 것임을 표시하는 비트 8; 커맨드의 완료가 시그널링되기 전에 인터럽트가 발생될 것임을 표시하는 비트 9; 및 다음 커맨드를 프로세싱하기 전에 인터럽트가 발생될 것임을 표시하는 비트 10과 같은 특수 플래그들을 위해 이용된다. 비트 10은 장치의 상태에 영향을 줄 수 있는 2개 이상의 커맨드의 시퀀스들이 장치의 상태가 변경되기 전에 식별될 수 있도록 다음 커맨드의 검사를 가능하게 한다. 비트들 16 내지 31은 예비이다.
트랜잭션 순환 버퍼 엔트리 포맷의 제2 더블 워드는 커맨드 파라미터들을 위해 이용되고, 16 더블 워드는 커맨드 펌웨어 정보 구조(CFIS, AHCI 명세에 이용된 CFIS와 유사함)를 위해 이용되고, 2 더블 워드는 커맨드 완료 파라미터들을 위해 이용된다.
ATA 커맨드 필터 블록(170)은 부가적인 관리 프로세싱이 필요한지를 결정하기 위해 커맨드들을 검사하는 데 커맨드 프로세싱 블록(140)에 의해 이용된다. 커맨드 프로세싱 블록(140)의 동작은 아래 도 2를 참조하여 더 설명된다.
다시 도 1을 참조하면, 플랫폼(100)이 완전 전력 공급될 때(fully powered), 상위 메모리 영역(upper memory area; UMA)이라고 하는 메모리의 부분, ME-UMA(134)은 관리 프로세싱을 위한 사용을 위해 그리고 미니-AHCI(110)에 의한 사용을 위해 이용가능하다. 일반적으로, 시스템 초기화 시에 기본 입출력 시스템(Basic Input Output System; BIOS)에 의해 구성되는 메모리 분리 메커니즘 때문에, 호스트 오퍼레이팅 시스템(106)은 ME-UMA(134)에 액세스할 수 없다. 이 메모리 분리 메커니즘은 호스트 오퍼레이팅 시스템(106)이 구동되기 전에 ME-UMA 메모리(134)에 대한 액세스를 로크(lock)한다. 호스트 오퍼레이팅 시스템(106)으로부터 관리 서비스들(108)에 의한 사용을 위해 메모리의 이 부분을 분리함으로써, 관리 프로세싱의 무결성(integrity)은 호스트 오퍼레이팅 시스템(106)을 오염시킬 수 있는 바이러스들 또는 다른 악성 소프트웨어로부터 보호된다.
도 2는 본 발명의 일 실시예에 따라 저장 장치들에의 대역외 액세스를 가능하게 하기 위한 포트 공유 하드웨어 및 연관된 펌웨어의 동작의 흐름도이다. 도 2의 단계들은 본원에서 도 1의 커맨드 프로세싱 모듈(140)의 컴포넌트들에 의해 수행되는 것으로서 설명된다. "커맨드와 관련된 신호를 수신" 단계(205)에서, 커맨드 프로세싱 모듈(140)은 호스트 메모리(132) 내의 호스트 테이블들(122) 또는 ME UMA(134) 내의 펌웨어 테이블들(112) 내로 커맨드 정보가 배치되었다는 신호를 미니-AHCI(110) 또는 호스트 AHCI(120)를 통해 수신한다. "관리 또는 호스트 개시 커맨드?" 결정 포인트(210)로 제어가 진행하고, 여기서, 커맨드가 관리 서비스(108)에 의해 개시되었는지 호스트 오퍼레이팅 시스템(106)에 의해 개시되었는지 결정이 이루어진다. 커맨드가 호스트 오퍼레이팅 시스템(106)에 의해 개시되었다면, 제어는 "커맨드 검사" 단계(215)로 진행하고, 여기서, 커맨드 정보는 호스트 메모리(132) 내의 호스트 테이블들(122)로부터 검색된다. 커맨드는 부가적인 관리 프로세싱이 필요한지를 결정하기 위해 검사된다. 예를 들어, 저장 장치에 데이터를 저장하기 위한 간단한 판독/기입 커맨드는 어떠한 부가적인 관리 프로세싱도 요구하지 않을 수 있는 반면, 저장 장치를 유휴 상태로 두기 위한 커맨드는 임의의 후속 관리 커맨드들이 완료시에 장치를 유휴 상태로 리턴하도록 보장하기 위해서 부가적인 관리 프로세싱을 요구할 것이다. 제어는 "커맨드 검사" 단계(215)로부터 "관리 프로세싱 필요?" 결정 포인트(220)로 진행하여 관리 프로세싱이 필요한지를 결정한다. 간단한 판독/기입 커맨드의 경우에서와 같이, "관리 프로세싱 필요?" 결정 포인트(220)에서 관리 프로세싱이 필요하지 않으면, 제어는 "호스트 커맨드를 프로세싱" 단계(230)로 진행하여, 호스트 커맨드가 실행된다. 호스트 커맨드가 실행된 후에, 호스트 커맨드의 프로세싱은 완료되고 프로세스는 종료된다.
"관리 프로세싱 필요?" 결정 포인트(220)에서, 관리 프로세싱이 필요한 경우, 제어는 "필요한 부가적인 관리 프로세싱의 타입을 결정" 단계(240)로 진행한다. 장치의 상태가 호스트 커맨드에 의해 변경되는 상황에서, 커맨드 프로세싱 모듈(140)은 부가적인 관리 프로세싱이 호스트 커맨드들의 완료시에 일어나도록 할 수 있다. 예를 들어, 커맨드 프로세싱 모듈(140)은 호스트 커맨드의 프로세싱이 완료되었음을 시그널링하기 전에 인터럽트가 발생되도록 보장하기 위해 트랜잭션 순환 버퍼(148) 내로 호스트 커맨드를 배치할 때 플래그를 설정할 수 있다. 다른 예로서, 커맨드 프로세싱 모듈(140)은 호스트 커맨드가 저장 장치를 재설정한 경우 임의의 미결 관리 커맨드들을 취소할 수 있다.
"관리 또는 호스트 개시 커맨드?" 결정 포인트(210)에서, 커맨드가 미니-AHCI(110)를 통해 관리 서비스(108)에 의해 개시되었다면, 제어는 "미해결 호스트 커맨드들?" 결정 포인트(250)로 진행한다. 어떠한 호스트 커맨드들도 실행을 기다리고 있지 않다면, 제어는 "관리 커맨드를 프로세싱" 결정 포인트(265)로 진행하고, 여기서 관리 커맨드가 실행된다. 관리 커맨드의 실행 후에, 커맨드의 프로세싱이 완료되고 프로세스는 종료된다.
"미해결 호스트 커맨드들?" 결정 포인트(250)에서, 호스트 커맨드들이 실행을 기다리고 있다면, 제어는 "호스트 커맨드들의 완료를 허용" 단계(255)로 진행한다. 실행을 위한 큐 내의 모든 호스트 커맨드들이 관리 커맨드가 더 프로세싱되기 전에 완료되도록 허용된다. 관리 커맨드의 실행의 이러한 지연은 관리 서비스들이 저장 장치에서 수행되기 전에 저장 장치가 안정적인 상태로 오도록 허용한다.
"호스트 커맨드들의 완료를 허용" 단계(255)로부터, 제어는 "장치 상태를 고려하여 관리 커맨드가 여전히 유효?" 결정 포인트(260)로 진행한다. 미해결 호스트 커맨드들에 의해 수행되는 동작들이 저장 장치를 이 스테이지에서 관리 커맨드를 수행하는 것이 유효하지 않은 상태에 두는 것이 가능하다. 예를 들어, 호스트 개시 커맨드들은 부가적인 관리 커맨드들이 더 이상 필요하지 않도록 저장 장치를 재설정할 수 있다. 관리 커맨드가 실행되는 경우 유효하지 않다면, 제어는 "필요한 부가적인 관리 프로세싱의 타입을 결정" 단계(240)로 진행한다. 예를 들어, 상이한 관리 커맨드가 실행을 위해 큐잉되도록 하는 것이 필요할 수 있다. 대안적으로, 부가적인 관리 커맨드들이 필요하지 않을 수 있지만, 미결 관리 커맨드가 실행되기보다는 취소되도록 하는 것이 필요할 수 있다. 또한, 다음 커맨드가 실행 이전에 검사되도록 하는 플래그, 커맨드의 프로세싱 완료가 시그널링되기 전에 인터럽트를 요구하는 플래그, 또는 커맨드의 실행 후에 인터럽트를 요구하는 플래그와 같은 플래그들을 설정함으로써 커맨드들의 실행의 흐름을 제어하는 것이 필요할 수 있다.
"장치 상태를 고려하여 관리 커맨드가 여전히 유효?" 결정 포인트(260)에서, 관리 커맨드가 유효하게 유지되면, 제어는 "관리 커맨드를 프로세싱" 단계(265)로 진행한다. 관리 커맨드가 실행되고, 커맨드의 프로세싱이 완료된다.
본원에 이용되는 바와 같이, "프로세싱 시스템" 및 "데이터 프로세싱 시스템"이라는 용어들은, 단일 기계, 또는 함께 동작하는 통신가능하게 결합된 기계들 또는 장치들의 시스템을 넓게 포함하도록 의도된다. 프로세싱 시스템들의 예는 분산 컴퓨팅 시스템들, 수퍼컴퓨터들, 고성능 컴퓨팅 시스템들, 컴퓨팅 클러스터들, 메인프레임 컴퓨터들, 미니컴퓨터들, 클라이언트-서버 시스템들, 퍼스널 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 랩톱 컴퓨터들, 태블릿들, 전화기들, PDA들(personal digital assistants), 핸드헬드 장치들, 오디오 및/또는 비디오 장치들과 같은 오락 장치들, 및 정보의 프로세싱 또는 전송을 위한 다른 장치들을 포함하고, 이것으로 한정되지 않는다.
도 1의 플랫폼(100)은, 적어도 부분적으로, 키보드, 마우스 등과 같은 종래의 입력 장치들로부터의 입력에 의해, 및/또는 다른 기계로부터 수신된 커맨드들, 생체측정 피드백(biometric feedback), 또는 다른 입력 소스들 또는 신호들에 의해 제어될 수 있다. 플랫폼(100)은 예를 들어, 네트워크 인터페이스 컨트롤러(network interface controller; NIC), 모뎀, 또는 다른 통신 포트들 또는 커플링들을 통해 하나 이상의 원격 데이터 프로세싱 시스템들(도시되지 않음)에 대한 하나 이상의 접속들을 이용할 수 있다.
플랫폼(100)은 LAN(local area network), WAN(wide area network), 인트라넷, 인터넷 등과 같은 물리적 및/또는 논리적 네트워크에 의해 다른 프로세싱 시스템들(도시되지 않음)에 상호접속될 수 있다. 네트워크를 수반하는 통신들은 무선 주파수(RF), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는, 다양한 유선 및/또는 무선 단거리 또는 장거리 캐리어들 및 프로토콜들을 이용할 수 있다.
본원에 개시된 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 그러한 구현 방식들의 결합으로 구현될 수 있다. 본 발명의 실시예들은 적어도 하나의 프로세서, 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함하는 프로그램 가능한 시스템들에서 실행되는 컴퓨터 프로그램들로서 구현될 수 있다.
프로그램 코드는 본원에 설명된 기능들을 수행하여 출력 정보를 발생하기 위해 입력 데이터에 적용될 수 있다. 발명의 실시예들은 또한 발명의 동작들을 수행하기 위한 명령어들을 포함하거나 또는 본원에 설명된 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는 HDL과 같은 설계 데이터를 포함하는 기계 액세스 가능한 매체를 포함한다. 이러한 실시예들은 또한 프로그램 제품들이라고 할 수 있다.
이러한 기계 액세스 가능한 저장 매체는, 하드 디스크들, 플로피 디스크들, 광학 디스크들, CD-ROM들(compact disk read-only memories), CD-RW들(compact disk rewritable's), 및 자기-광학 디스크들과 같은 임의의 다른 유형의 디스크와 같은 저장 매체, ROM(read-only memory), DRAM(dynamic random access memory), SRAM(static random access memory)과 같은 RAM(random access memory), EPROM(erasable programmable read-only memory), 플래시 프로그램 가능 메모리(FLASH), EEPROM(electrically erasable programmable read-only memory), 자기 또는 광학 카드, 또는 전자 명령어들을 저장하는 데 적합한 임의의 다른 타입의 매체를 포함하여, 기계 또는 장치에 의해 제조 또는 형성된 입자들의 유형의 배열들(tangible arrangements of particles)을 포함할 수 있고, 이것으로 한정되지 않는다.
출력 정보는 알려진 방식으로 하나 이상의 출력 장치들에 적용될 수 있다. 이 출원의 목적들을 위해, 프로세싱 시스템은 예를 들어, 디지털 신호 프로세서(DSP), 마이크로컨트롤러, ASIC(application specific integrated circuit), 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램들은 프로세싱 시스템과 통신하기 위해 고레벨 절차 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 프로그램들은 또한 원하는 경우 어셈블리 또는 기계 언어로 구현될 수 있다. 사실상, 본원에 설명된 메커니즘들은 임의의 특정 프로그래밍 언어로 범위가 한정되지 않는다. 임의의 경우에, 언어는 컴파일 또는 인터프리트 언어일 수 있다.
본원에는 포트 공유 하드웨어를 이용하여 저장 장치들에 대한 대역외 액세스를 가능하게 하기 위한 방법들 및 시스템들의 실시예들이 제시되어 있다. 본 발명의 특정 실시예들이 도시되고 설명되었지만, 첨부된 청구항들의 범위로부터 벗어나지 않고 다수의 변경들, 변형들 및 수정들이 만들어질 수 있다는 것이 이 기술분야의 통상의 기술자에게 분명할 것이다. 따라서, 이 기술분야의 통상의 기술자는 그의 더 넓은 양태들에서 본 발명으로부터 벗어나지 않고 변경들 및 수정들이 만들어질 수 있다는 것을 인식할 것이다. 첨부된 청구항들은 본 발명의 진정한 범위 및 사상 내에 속하는 모든 그러한 변경들, 변형들, 및 수정들을 그의 범위 내에서 포함한다.
Claims (18)
- 컴퓨터 구현 방법으로서,
프로세서, 메모리, 저장 장치, 복수의 포트, 호스트 오퍼레이팅 시스템, 상기 호스트 오퍼레이팅 시스템에 의해 액세스 가능한 호스트 컨트롤러 인터페이스, 및 상기 호스트 오퍼레이팅 시스템에 의해 액세스 불가능하고 상기 호스트 컨트롤러 인터페이스와 상이한 대역외 컨트롤러 인터페이스를 포함하는 프로세싱 시스템 - 상기 대역외 컨트롤러 인터페이스는 상기 호스트 컨트롤러 인터페이스와 상기 복수의 포트 중 공유 포트를 공유함 - 에서,
상기 호스트 컨트롤러 인터페이스를 통해 상기 저장 장치에 액세스하기 위한 제1 커맨드를 수신하는 단계;
상기 대역외 컨트롤러 인터페이스를 통해 상기 저장 장치에 액세스하기 위한 제2 커맨드를 수신하는 단계;
상기 제1 커맨드의 실행 후에 상기 저장 장치의 예상 상태를 결정하는 단계;
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할지를 결정하는 단계; 및
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭하지 않을 경우, 상기 제2 커맨드를 실행하기 전에 상기 제1 커맨드를 실행하는 단계
를 수행하는 것을 포함하고, 상기 제2 커맨드는 상기 호스트 오퍼레이팅 시스템의 관여 없이 실행되는 컴퓨터 구현 방법. - 제1항에 있어서,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 제2 커맨드를 취소하고 상기 제1 커맨드를 실행하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제1항에 있어서,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 저장 장치의 원하는 상태가 실현될 때까지 상기 제2 커맨드를 지연시키는 단계;
상기 제1 커맨드를 실행하는 단계; 및
상기 저장 장치의 상기 원하는 상태가 실현될 때 상기 제2 커맨드를 실행하는 단계
를 더 포함하는 컴퓨터 구현 방법. - 제1항에 있어서,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 제2 커맨드를 실행한 후에 상기 예상 상태를 복원하기 위한 제3 커맨드를 결정하고, 상기 제3 커맨드가 실행된 후까지 상기 제1 커맨드의 시그널링 완료를 지연시키면서 상기 제1 커맨드, 상기 제2 커맨드, 및 상기 제3 커맨드를 실행하는 단계를 더 포함하는 컴퓨터 구현 방법. - 제1항에 있어서,
상기 제1 및 제2 커맨드들이 수신될 때 상기 제1 및 제2 커맨드들이 실행되는 동안 상기 호스트 오퍼레이팅 시스템은 활성인 컴퓨터 구현 방법. - 제1항에 있어서,
상기 호스트 컨트롤러 인터페이스와 연관된 제1 메모리 내로 상기 제1 커맨드를 배치하는 단계;
상기 대역외 컨트롤러 인터페이스에 의한 액세스로부터 상기 제1 메모리를 보호하는 단계;
상기 대역외 컨트롤러 인터페이스와 연관된 제2 메모리 내로 상기 제2 커맨드를 배치하는 단계; 및
상기 호스트 오퍼레이팅 시스템 및 상기 호스트 컨트롤러 인터페이스에 의한 액세스로부터 상기 제2 메모리를 보호하는 단계
를 더 포함하는 컴퓨터 구현 방법. - 시스템으로서,
프로세서;
저장 장치;
복수의 포트;
호스트 오퍼레이팅 시스템;
상기 호스트 오퍼레이팅 시스템에 의해 액세스 가능한 호스트 컨트롤러 인터페이스;
상기 호스트 오퍼레이팅 시스템에 의해 액세스 불가능하고 상기 호스트 컨트롤러 인터페이스와 상이한 대역외 컨트롤러 인터페이스 - 상기 대역외 컨트롤러 인터페이스는 상기 호스트 컨트롤러 인터페이스와 상기 복수의 포트 중 공유 포트를 공유함 - ; 및
상기 프로세서에 결합된 메모리
를 포함하고,
상기 메모리는,
상기 호스트 컨트롤러 인터페이스를 통해 상기 저장 장치에 액세스하기 위한 제1 커맨드를 수신하는 단계;
상기 대역외 컨트롤러 인터페이스를 통해 상기 저장 장치에 액세스하기 위한 제2 커맨드를 수신하는 단계;
상기 제1 커맨드의 실행 후에 상기 저장 장치의 예상 상태를 결정하는 단계;
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할지를 결정하는 단계; 및
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭하지 않을 경우, 상기 제2 커맨드를 실행하기 전에 상기 제1 커맨드를 실행하는 단계
를 수행하기 위한 명령어들을 포함하고,
상기 제2 커맨드는 상기 호스트 오퍼레이팅 시스템의 관여 없이 실행되는 시스템. - 제7항에 있어서,
상기 명령어들은,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 제2 커맨드를 취소하고 상기 제1 커맨드를 실행하는 단계를 수행하기 위한 명령어들을 더 포함하는 시스템. - 제7항에 있어서,
상기 명령어들은,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 저장 장치의 원하는 상태가 실현될 때까지 상기 제2 커맨드를 지연시키는 단계;
상기 제1 커맨드를 실행하는 단계; 및
상기 저장 장치의 상기 원하는 상태가 실현될 때 상기 제2 커맨드를 실행하는 단계
를 수행하기 위한 명령어들을 더 포함하는 시스템. - 제7항에 있어서,
상기 명령어들은,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 제2 커맨드를 실행한 후에 상기 예상 상태를 복원하기 위한 제3 커맨드를 결정하고, 상기 제3 커맨드가 실행된 후까지 상기 제1 커맨드의 시그널링 완료를 지연시키면서 상기 제1 커맨드, 상기 제2 커맨드, 및 상기 제3 커맨드를 실행하는 단계를 수행하기 위한 명령어들을 더 포함하는 시스템. - 제7항에 있어서,
상기 명령어들은,
상기 제1 및 제2 커맨드들이 수신될 때 상기 제1 및 제2 커맨드들이 실행되는 동안 상기 호스트 오퍼레이팅 시스템은 활성인 단계를 수행하기 위한 명령어들을 더 포함하는 시스템. - 제7항에 있어서,
상기 명령어들은,
상기 호스트 컨트롤러 인터페이스와 연관된 제1 메모리 내로 상기 제1 커맨드를 배치하는 단계;
상기 대역외 컨트롤러 인터페이스에 의한 액세스로부터 상기 제1 메모리를 보호하는 단계;
상기 대역외 컨트롤러 인터페이스와 연관된 제2 메모리 내로 상기 제2 커맨드를 배치하는 단계; 및
상기 호스트 오퍼레이팅 시스템 및 상기 호스트 컨트롤러 인터페이스에 의한 액세스로부터 상기 제2 메모리를 보호하는 단계
를 수행하기 위한 명령어들을 더 포함하는 시스템. - 명령어들이 그 내부에 저장된 컴퓨터 판독 가능한 저장 매체로서,
상기 명령어들은, 프로세싱 시스템에서 실행될 때, 상기 프로세싱 시스템으로 하여금 동작들을 수행하도록 하고, 상기 프로세싱 시스템은 프로세서, 메모리, 저장 장치, 복수의 포트, 호스트 오퍼레이팅 시스템, 상기 호스트 오퍼레이팅 시스템에 의해 액세스 가능한 호스트 컨트롤러 인터페이스, 및 상기 호스트 오퍼레이팅 시스템에 의해 액세스 불가능하고 상기 호스트 컨트롤러 인터페이스와 상이한 대역외 컨트롤러 인터페이스를 포함하고, 상기 대역외 컨트롤러 인터페이스는 상기 호스트 컨트롤러 인터페이스와 상기 복수의 포트 중 공유 포트를 공유하고, 상기 동작들은,
상기 호스트 컨트롤러 인터페이스를 통해 상기 저장 장치에 액세스하기 위한 제1 커맨드를 수신하는 동작;
상기 대역외 컨트롤러 인터페이스를 통해 상기 저장 장치에 액세스하기 위한 제2 커맨드를 수신하는 동작;
상기 제1 커맨드의 실행 후에 상기 저장 장치의 예상 상태를 결정하는 동작;
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할지를 결정하는 동작; 및
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭하지 않을 경우, 상기 제2 커맨드를 실행하기 전에 상기 제1 커맨드를 실행하는 동작
을 포함하고, 상기 제2 커맨드는 상기 호스트 오퍼레이팅 시스템의 관여 없이 실행되는 컴퓨터 판독 가능한 저장 매체. - 제13항에 있어서,
상기 명령어들은 또한, 상기 프로세싱 시스템으로 하여금,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 제2 커맨드를 취소하고 상기 제1 커맨드를 실행하는 동작을 수행하도록 하는 컴퓨터 판독 가능한 저장 매체. - 제13항에 있어서,
상기 명령어들은 또한, 상기 프로세싱 시스템으로 하여금,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 저장 장치의 원하는 상태가 실현될 때까지 상기 제2 커맨드를 지연시키는 동작;
상기 제1 커맨드를 실행하는 동작; 및
상기 저장 장치의 상기 원하는 상태가 실현될 때 상기 제2 커맨드를 실행하는 동작
을 수행하도록 하는 컴퓨터 판독 가능한 저장 매체. - 제13항에 있어서,
상기 명령어들은 또한, 상기 프로세싱 시스템으로 하여금,
상기 제2 커맨드의 실행이 상기 예상 상태에 간섭할 경우, 상기 제2 커맨드를 실행한 후에 상기 예상 상태를 복원하기 위한 제3 커맨드를 결정하고, 상기 제3 커맨드가 실행된 후까지 상기 제1 커맨드의 시그널링 완료를 지연시키면서 상기 제1 커맨드, 상기 제2 커맨드, 및 상기 제3 커맨드를 실행하는 동작을 수행하도록 하는 컴퓨터 판독 가능한 저장 매체. - 제13항에 있어서,
상기 명령어들은 또한, 상기 프로세싱 시스템으로 하여금,
상기 제1 및 제2 커맨드들이 수신될 때 상기 제1 및 제2 커맨드들이 실행되는 동안 상기 호스트 오퍼레이팅 시스템은 활성인 동작을 수행하도록 하는 컴퓨터 판독 가능한 저장 매체. - 제13항에 있어서,
상기 명령어들은 또한, 상기 프로세싱 시스템으로 하여금,
상기 호스트 컨트롤러 인터페이스와 연관된 제1 메모리 내로 상기 제1 커맨드를 배치하는 동작;
상기 대역외 컨트롤러 인터페이스에 의한 액세스로부터 상기 제1 메모리를 보호하는 동작;
상기 대역외 컨트롤러 인터페이스와 연관된 제2 메모리 내로 상기 제2 커맨드를 배치하는 동작; 및
상기 호스트 오퍼레이팅 시스템 및 상기 호스트 컨트롤러 인터페이스에 의한 액세스로부터 상기 제2 메모리를 보호하는 동작
을 수행하도록 하는 컴퓨터 판독 가능한 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/836,341 | 2010-07-14 | ||
US12/836,341 US8281043B2 (en) | 2010-07-14 | 2010-07-14 | Out-of-band access to storage devices through port-sharing hardware |
PCT/US2011/043850 WO2012009436A2 (en) | 2010-07-14 | 2011-07-13 | Out-of-band access to storage devices through port-sharing hardware |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130031886A KR20130031886A (ko) | 2013-03-29 |
KR101516093B1 true KR101516093B1 (ko) | 2015-05-08 |
Family
ID=45467783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137000756A KR101516093B1 (ko) | 2010-07-14 | 2011-07-13 | 포트 공유 하드웨어를 통한 저장 장치들에의 대역외 액세스 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8281043B2 (ko) |
EP (1) | EP2593875B1 (ko) |
JP (1) | JP5583849B2 (ko) |
KR (1) | KR101516093B1 (ko) |
CN (1) | CN102985914B (ko) |
TW (1) | TWI443580B (ko) |
WO (1) | WO2012009436A2 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8713204B2 (en) * | 2011-12-27 | 2014-04-29 | Apple Inc. | High-performance AHCI interface |
US9116694B2 (en) | 2012-09-26 | 2015-08-25 | Intel Corporation | Efficient low power exit sequence for peripheral devices |
CN103885364B (zh) * | 2014-03-24 | 2016-09-28 | 三和智控(北京)系统集成有限公司 | 一种通过计划队列实现控制逻辑的动态延时调用的方法 |
CN106461836B (zh) * | 2014-04-16 | 2020-11-06 | 日东电工株式会社 | 相位差膜、圆偏振片及图像显示装置 |
US9645954B2 (en) | 2014-06-05 | 2017-05-09 | Lenovo (Singapore) Pte. Ltd. | Embedded microcontroller and buses |
US9696777B2 (en) * | 2014-06-05 | 2017-07-04 | Lenovo (Singapore) Pte. Ltd. | Computer port control |
TWI526824B (zh) | 2014-07-22 | 2016-03-21 | 廣達電腦股份有限公司 | 網路卡資訊管理方法及網路卡資訊管理系統 |
US9684457B2 (en) | 2015-05-21 | 2017-06-20 | Intel Corporation | Gathering sensed data from devices to manage host command transmission and cooling of the devices |
US10127184B2 (en) | 2016-09-27 | 2018-11-13 | Intel Corporation | Low overheard high throughput solution for point-to-point link |
US10761319B2 (en) | 2017-10-13 | 2020-09-01 | Magna Electronics Inc. | Vehicle camera with lens heater |
US11169953B2 (en) * | 2018-02-28 | 2021-11-09 | SK Hynix Inc. | Data processing system accessing shared memory by using mailbox |
CN118569159B (zh) * | 2024-07-31 | 2024-10-01 | 成都电科星拓科技有限公司 | Sata主机芯片验证方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154281A1 (en) * | 2002-02-14 | 2003-08-14 | Hitachi, Ltd. | Storage system and method for controlling the same |
US20070260775A1 (en) * | 2006-03-31 | 2007-11-08 | Fujitsu Limited | Storage device, storage control firmware activation program exchange method, and program product for activating and exchanging storage control program |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6351782B1 (en) | 1999-03-19 | 2002-02-26 | Unisys Corporation | Method of sharing an I/O device between a host operating system and a foreign operating system in a single computer |
US6845387B1 (en) * | 2000-04-07 | 2005-01-18 | Advanced Digital Information Corporation | Creating virtual private connections between end points across a SAN |
JP2003085025A (ja) * | 2001-09-13 | 2003-03-20 | Seiko Instruments Inc | 記憶装置の属性制御方式 |
US7480774B2 (en) * | 2003-04-01 | 2009-01-20 | International Business Machines Corporation | Method for performing a command cancel function in a DRAM |
US20050015430A1 (en) * | 2003-06-25 | 2005-01-20 | Rothman Michael A. | OS agnostic resource sharing across multiple computing platforms |
US7707586B2 (en) * | 2004-09-08 | 2010-04-27 | Intel Corporation | Operating system independent agent |
JP4757482B2 (ja) * | 2004-11-26 | 2011-08-24 | Necアクセステクニカ株式会社 | 記憶装置及び記憶装置制御方法 |
US20060280195A1 (en) * | 2005-06-10 | 2006-12-14 | Dell Products L.P. | Systems and methods for providing dedicated or shared network interface functionality via a single MAC |
US7565685B2 (en) * | 2005-11-12 | 2009-07-21 | Intel Corporation | Operating system independent data management |
US8131986B2 (en) | 2006-09-29 | 2012-03-06 | Lenovo (Singapore) Pte. Ltd. | System and method for boot loading of programs within a host operating environment having one or more linked guest operating systems |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
JP2009282834A (ja) * | 2008-05-23 | 2009-12-03 | Fujitsu Ltd | ディスクアレイ装置,制御ファーム適用方法,及び制御ファーム適用制御部 |
US9189286B2 (en) * | 2010-01-14 | 2015-11-17 | Dell Products L.P. | System and method for accessing storage resources |
US8489686B2 (en) * | 2010-05-21 | 2013-07-16 | Intel Corporation | Method and apparatus allowing scan of data storage device from remote server |
-
2010
- 2010-07-14 US US12/836,341 patent/US8281043B2/en active Active
-
2011
- 2011-06-30 TW TW100123107A patent/TWI443580B/zh not_active IP Right Cessation
- 2011-07-13 CN CN201180034333.0A patent/CN102985914B/zh not_active Expired - Fee Related
- 2011-07-13 EP EP11807453.3A patent/EP2593875B1/en active Active
- 2011-07-13 JP JP2013518878A patent/JP5583849B2/ja not_active Expired - Fee Related
- 2011-07-13 KR KR1020137000756A patent/KR101516093B1/ko not_active IP Right Cessation
- 2011-07-13 WO PCT/US2011/043850 patent/WO2012009436A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154281A1 (en) * | 2002-02-14 | 2003-08-14 | Hitachi, Ltd. | Storage system and method for controlling the same |
US20070260775A1 (en) * | 2006-03-31 | 2007-11-08 | Fujitsu Limited | Storage device, storage control firmware activation program exchange method, and program product for activating and exchanging storage control program |
Also Published As
Publication number | Publication date |
---|---|
CN102985914B (zh) | 2016-01-27 |
EP2593875B1 (en) | 2018-05-16 |
WO2012009436A2 (en) | 2012-01-19 |
US20120017011A1 (en) | 2012-01-19 |
EP2593875A2 (en) | 2013-05-22 |
JP2013535720A (ja) | 2013-09-12 |
JP5583849B2 (ja) | 2014-09-03 |
EP2593875A4 (en) | 2014-07-16 |
US8281043B2 (en) | 2012-10-02 |
CN102985914A (zh) | 2013-03-20 |
KR20130031886A (ko) | 2013-03-29 |
TWI443580B (zh) | 2014-07-01 |
WO2012009436A3 (en) | 2012-04-26 |
TW201216162A (en) | 2012-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101516093B1 (ko) | 포트 공유 하드웨어를 통한 저장 장치들에의 대역외 액세스 | |
JP6728409B2 (ja) | 仮想化マネージャのセキュアなブート処理 | |
CN109564514B (zh) | 用于部分卸载的虚拟化管理器处的存储器分配的方法和系统 | |
CN107092495B (zh) | 平台固件铠装技术 | |
KR101453266B1 (ko) | 서비스 프로세서 컴플렉스 내의 데이터 저장을 위한 요구 기반 usb 프록시 | |
EP2062191B1 (en) | System and method for securely restoring a program context from a shared memory | |
US8095802B2 (en) | System and method for securely saving a program context to a shared memory | |
US10091213B2 (en) | Systems and methods to provide secure storage | |
JP2010182196A (ja) | 情報処理装置およびファイル検証システム | |
US11995188B2 (en) | Method for faster and safe data backup using GPT remote access boot signatures to securely expose GPT partitions to cloud during OS crash | |
JP2007524161A (ja) | ウイルス、スパイウェア及びハッカー保護特徴を有する仮想処理空間における分離マルチプレクス型多次元処理 | |
US20190052634A1 (en) | Dynamic generation of key for encrypting data in management node | |
CN112219202A (zh) | 用于客户操作系统的存储器分配 | |
US8489686B2 (en) | Method and apparatus allowing scan of data storage device from remote server | |
JP5476381B2 (ja) | 暗号化ファイル・システムにおける改善された入出力制御および効率 | |
JP4728871B2 (ja) | 機器検疫方法、検疫機器、集約クライアント管理機器、集約クライアント管理プログラム、ネットワーク接続機器およびユーザ端末 | |
US11461490B1 (en) | Systems, methods, and devices for conditionally allowing processes to alter data on a storage device | |
US20230319104A1 (en) | Hci managed arp | |
KR20060135757A (ko) | 바이러스, 스파이웨어, 및 해커 보호 특성을 갖는 가상처리 공간에서의 분리된 멀티플렉싱 다차원 처리 | |
CN116820662A (zh) | 可靠的一键式集群关闭 |
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 | ||
LAPS | Lapse due to unpaid annual fee |