KR102255216B1 - Pci 장치와 이를 포함하는 pci 시스템 - Google Patents

Pci 장치와 이를 포함하는 pci 시스템 Download PDF

Info

Publication number
KR102255216B1
KR102255216B1 KR1020150026426A KR20150026426A KR102255216B1 KR 102255216 B1 KR102255216 B1 KR 102255216B1 KR 1020150026426 A KR1020150026426 A KR 1020150026426A KR 20150026426 A KR20150026426 A KR 20150026426A KR 102255216 B1 KR102255216 B1 KR 102255216B1
Authority
KR
South Korea
Prior art keywords
pci
offset
register
host
pci host
Prior art date
Application number
KR1020150026426A
Other languages
English (en)
Other versions
KR20160060527A (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 삼성전자주식회사
Priority to KR1020150026426A priority Critical patent/KR102255216B1/ko
Priority to US14/938,994 priority patent/US10002085B2/en
Publication of KR20160060527A publication Critical patent/KR20160060527A/ko
Application granted granted Critical
Publication of KR102255216B1 publication Critical patent/KR102255216B1/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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Storage Device Security (AREA)

Abstract

PCI 장치는 PCI 호스트가 액세스하는 제1메모리 영역을 결정하는 베이스 어드레스 레지스터(base address register(BAR))를 포함하는 PCI 레지스터, 상기 PCI 호스트로부터 전송된 오프셋(offset)을 저장하는 오프셋 레지스터(offset register), 상기 PCI 호스트가 상기 오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 어드레스 변환기(address tranlation unit(ATU)), 및 상기 제1메모리 영역과 상기 제2메모리 영역을 포함하고, 상기 PCI 호스트로부터 전송된 데이터를 저장하거나 저장된 데이터를 상기 PCI 호스트로 전송하는 장치 메모리를 포함한다.

Description

PCI 장치와 이를 포함하는 PCI 시스템{PCI DEVICE AND PCI SYSTEM INCLUDING THE SAME}
본 발명의 개념에 따른 실시 예는 PCI 장치에 관한 것으로서, 특히 PCI 호스트가 PCI 버스를 통해 데이터를 PCI 장치의 메모리로 전송할 때, PCI 호스트-장치간 추가적인 상호작용 없이 PCI 호스트가 PCI 장치의 메모리로 계속해서 데이터를 전송할 수 있는 PCI 장치와 이를 포함하는 PCI 시스템에 관한 것이다.
PCI(peripheral component interconnect)는 컴퓨터 시스템의 중앙 처리 장치와 주변 기기를 연결하는 로컬 버스 규격이다.
현재 널리 사용되는 PCI 익스프레스(Peripheral Component Interconnect Express(PCIe))는 PCI 버스 표준 또는 PCI-X(Peripheral Component Interconnect eXtended) 버스 표준을 대체하기 위해 디자인된 고속 직렬 컴퓨터 확장(high-speed serial computer expansion) 버스 표준이다.
종래에는, PCI 호스트는 PCI 장치에 포함된 BAR(base address register)의 사이즈에 의해 제한된 메모리 영역만 액세스할 수 있다. PCI BAR의 사이즈를 크게 설정하면 PCI BAR에 대한 리소스 할당 에러가 발생하기 때문에, PCI 호스트는 작은 사이즈로 할당된 제한된 메모리 영역만 엑세스할 수 있다.
또한, PCI 호스트가 PCI BAR 사이즈 이상의 데이터를 전송하기 위해서는, PCI 호스트는 PCI BAR 사이즈에 의해 제한된 사이즈의 데이터를 먼저 전송하고, PCI 장치로부터 전송 완료 메시지와 처리 완료 메시지를 수신받은 후에, PCI 호스트는 남은 데이터를 PCI 장치로 전송한다.
결국 종래의 방식에 의하면, PCI 호스트가 대용량의 데이터 전송을 위해 PCI 호스트-장치간 상호작용이 추가로 발생하게 되기 때문에, PCI 호스트-장치간 데이터 전송과 관련된 성능이 저하되는 문제점이 있다.
본 발명이 이루고자 하는 기술적인 과제는 PCI 호스트가 PCI 장치의 메모리 로 액세스하는 경우에, PCI 호스트가 PCI 장치의 원하는 메모리 영역으로 액세스할 수 있도록, PCI 호스트가 메모리 영역의 오프셋을 지정할 수 있는 장치를 포함하는 PCI 장치와 이를 포함하는 PCI 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 PCI 장치는, PCI 호스트가 액세스하는 제1메모리 영역을 결정하는 베이스 어드레스 레지스터(base address register(BAR))를 포함하는 PCI 레지스터, 상기 PCI 호스트로부터 전송된 오프셋(offset)을 저장하는 오프셋 레지스터(offset register), 상기 PCI 호스트가 상기 오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 어드레스 변환기(address tranlation unit(ATU)), 및 상기 제1메모리 영역과 상기 제2메모리 영역을 포함하고, 상기 PCI 호스트로부터 전송된 데이터를 저장하거나 저장된 데이터를 상기 PCI 호스트로 전송하는 장치 메모리를 포함할 수 있다.
상기 베이스 어드레스 레지스터는 베이스 어드레스(base address)를 포함하고, 상기 제1메모리 영역은 상기 베이스 어드레스와 상기 베이스 어드레스 레지스터의 사이즈에 기초하여 결정되고, 상기 제2메모리 영역은 상기 베이스 어드레스, 상기 오프셋, 및 상기 베이스 어드레스 레지스터의 사이즈에 기초하여 결정될 수 있다.
상기 제1메모리 영역은 상기 베이스 어드레스부터 상기 베이스 어드레스 레지스터의 사이즈를 더한 어드레스 영역까지의 영역이고, 상기 제2메모리 영역은 상기 베이스 어드레스와 상기 오프셋을 더한 어드레스부터 상기 베이스 어드레스 레지스터의 사이즈를 더한 어드레스 영역까지의 영역일 수 있다.
상기 PCI 호스트의 액세스 영역의 변경 상태를 저장하는 상태 레지스터, 상기 상태 레지스터로부터 상기 변경 상태를 수신받고, PCI 호스트로 상태 신호를 전송하는 인터럽트 발생기를 더 포함할 수 있다.
상기 오프셋 레지스터는 상기 PCI 레지스터 내부에 위치하고, 상기 어드레스 변환기는 상기 PCI 레지스터로부터 상기 오프셋을 리드하고, 리드된 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경할 수 있다.
상기 PCI 호스트로부터 전송된 데이터는 상기 오프셋을 포함하고, 상기 어드레스 변환기는 상기 데이터에 포함된 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경할 수 있다.
본 발명의 실시 예에 따른 PCI 장치는, PCI 호스트가 액세스하는 메모리 영역을 결정하는 베이스 어드레스 레지스터(base address register(BAR))를 포함하는 PCI 레지스터, 상기 PCI 호스트로부터 전송된 제1오프셋을 저장하고, 상기 PCI 호스트로부터 전송된 제2오프셋을 저장하는 오프셋 레지스터(offset register), 상기 PCI 호스트가 상기 제1오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 제1오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제1메모리 영역으로 변경하고, 상기 PCI 호스트가 상기 제2오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 제2오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 어드레스 변환기(address tranlation unit(ATU)), 및 상기 제1메모리 영역과 상기 제2메모리 영역을 포함하고, 상기 PCI 호스트로부터 전송된 데이터를 저장하거나 저장된 데이터를 상기 PCI 호스트로 리드하는 장치 메모리를 포함할 수 있다.
상기 제1메모리 영역은 상기 베이스 어드레스, 상기 제1오프셋, 및 상기 BAR의 사이즈에 기초하여 결정되고, 상기 제2메모리 영역은 상기 베이스 어드레스, 상기 제2오프셋, 및 상기 BAR의 사이즈에 기초하여 결정될 수 있다.
상기 제1메모리 영역은 상기 베이스 어드레스에 상기 제1오프셋을 더한 어드레스부터 상기 BAR의 사이즈를 더한 어드레스까지의 영역이고, 상기 제2메모리 영역은 상기 베이스 어드레스에 상기 제2오프셋을 더한 어드레스부터 상기 BAR의 사이즈를 더한 어드레스까지의 영역이고, 상기 제1오프셋과 상기 제2오프셋은 서로 다를 수 있다.
상기 PCI 호스트의 액세스 영역의 변경 상태를 저장하는 상태 레지스터, 상기 상태 레지스터로부터 상기 변경 상태를 수신받고, PCI 호스트로 상태 신호를 전송하는 인터럽트 발생기를 더 포함할 수 있다.
상기 오프셋 레지스터는 상기 PCI 레지스터 내부에 위치하고, 상기 어드레스 변환기는 상기 PCI 레지스터로부터 상기 제1오프셋 또는 상기 제2오프셋을 리드하고, 리드된 상기 제1오프셋 또는 상기 제2오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 변경할 수 있다.
상기 PCI 호스트로부터 전송된 데이터는 상기 제1오프셋 또는 상기 제2오프셋을 포함하고, 상기 어드레스 변환기는 상기 데이터에 포함된 상기 제1오프셋 또는 상기 제2오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 변경할 수 있다.
상기 오프셋 레지스터는 상기 BAR에 의해 결정되는 메모리 영역에 위치하고,상기 PCI 호스트는 상기 제1오프셋 또는 상기 제2오프셋을 상기 BAR에 의해 결정되는 메모리 영역 내의 오프셋 레지스터로 라이트할 수 있다.
본 발명의 실시 예에 따른 PCI 시스템은, PCI 버스, 상기 PCI 버스를 통해 접속된 적어도 하나의 PCI 장치, 및 상기 PCI 버스를 통해 상기 적어도 하나의 PCI 장치와 연결된 PCI 호스트를 포함하고, 상기 PCI 장치는, 상기 PCI 호스트가 액세스하는 제1메모리 영역을 결정하는 베이스 어드레스 레지스터(base address register(BAR))를 포함하는 PCI 레지스터, 상기 PCI 호스트로부터 전송된 오프셋(offset)을 저장하는 오프셋 레지스터(offset register), 상기 PCI 호스트가 상기 오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 어드레스 변환기(address tranlation unit(ATU)), 및 상기 제1메모리 영역과 상기 제2메모리 영역을 포함하고, 상기 PCI 호스트로부터 전송된 데이터를 저장하거나 저장된 데이터를 상기 PCI 호스트로 전송하는 장치 메모리를 포함할 수 있다.
상기 베이스 어드레스 레지스터는 베이스 어드레스(base address)를 포함하고, 상기 제1메모리 영역은 상기 베이스 어드레스와 상기 베이스 어드레스 레지스터의 사이즈에 기초하여 결정되고, 상기 제2메모리 영역은 상기 베이스 어드레스, 상기 오프셋, 및 상기 베이스 어드레스 레지스터의 사이즈에 기초하여 결정될 수 있다.
상기 PCI 장치는, 상기 PCI 호스트의 액세스 영역의 변경 상태를 저장하는 상태 레지스터, 및 상기 상태 레지스터로부터 상기 변경 상태를 수신받고, PCI 호스트로 상태 신호를 전송하는 인터럽트 발생기를 더 포함할 수 있다.
상기 PCI 호스트로부터 전송된 데이터는 상기 오프셋을 포함하고, 상기 어드레스 변환기는 상기 데이터에 포함된 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경할 수 있다.
상기 오프셋 레지스터는 상기 PCI 레지스터 내부에 위치하고, 상기 어드레스 변환기는 상기 PCI 레지스터로부터 상기 오프셋을 리드하고, 리드된 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경할 수 있다.
상기 오프셋 레지스터는 상기 BAR에 의해 결정되는 메모리 영역에 위치하고, 상기 PCI 호스트는 상기 베이스 어드레스를 이용하여 상기 메모리 영역 내의 오프셋 레지스터로 라이트할 수 있다.
상기 PCI 장치는 SSD(solid state device), UFS(universal flash storage), HDD(hard disk drive), 그래픽 카드(graphic card), 및 NIC(network interface card) 중 어느 하나일 수 있다.
본 발명의 실시 예에 따른 PCI 장치는, PCI 호스트가 상기 PCI 장치의 원하는 메모리 영역으로 액세스할 수 있도록, 상기 PCI 호스트가 메모리 영역의 오프셋을 지정할 수 있는 장치를 포함하므로, PCI 호스트-장치간 별도의 상호작용 없이 PCI BAR의 사이즈 이상의 데이터를 전송할 수 있는 효과가 있다.
또한, 상기 PCI 호스트는 PCI 장치의 원하는 메모리 영역에 대한 오프셋을 지정할 수 있으므로, PCI 호스트가 효율적으로 대용량의 데이터를 PCI 장치로 전송할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 PCI 시스템의 블록도이다.
도 2는 본 발명의 다른 실시 예에 따른 PCI 시스템의 블록도이다.
도 3은 본 발명의 또다른 실시 예에 따른 PCI 시스템의 블록도이다.
도 4는 도 1에 도시된 PCI 시스템에서 PCI 호스트가 오프셋을 변경하고, PCI 장치의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 5는 도 1에 도시된 PCI 시스템에서 PCI 호스트가 오프셋을 변경하고, PCI 장치의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 6는 도 2에 도시된 PCI 시스템에서 PCI 호스트가 오프셋을 변경하고, PCI 장치의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 7는 도 2에 도시된 PCI 시스템에서 PCI 호스트가 오프셋을 변경하고, PCI 장치의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 8는 도 3에 도시된 PCI 시스템에서 PCI 호스트가 오프셋을 변경하고, PCI 장치의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 9는 도 3에 도시된 PCI 시스템에서 PCI 호스트가 오프셋을 변경하고, PCI 장치의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 10은 도 4, 도 6, 및 도 8에 도시된 PCI 호스트가 오프셋을 변경하고, PCI 장치로 액세스하는 방법에 대한 플로우 차트이다.
도 11은 도 5, 도 7, 및 도 9에 도시된 PCI 호스트가 오프셋을 변경하고, PCI 장치로 액세스하는 방법에 대한 플로우 차트이다.
도 12은 본 발명의 다른 실시 예에 따른 컴퓨터 시스템의 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서에서는 http://www.pcisig.com에서 제공하는 PCI Express Base 3.0 Specification의 내용을 참조(reference)로서 포함한다. 따라서, 본 명세서에서는 PCI Express Base 3.0 Specification에서 정의된 용어와 동일한 용어는 동일한 의미를 갖는 것으로 이해되어야 한다.
본 발명의 PCI(Peripheral Component Interconnect)는 PCI익스프레스(Peripheral Component Interconnect Express)를 의미한다고 가정하고 설명한다.
도 1은 본 발명의 일 실시 예에 따른 PCI 시스템(10A)의 블록도이다.
도 1을 참조하면, PCI 시스템(10A)은 PCI 호스트(20), PCI 버스(50), 및 PCI 장치(100)를 포함할 수 있다.
PCI 시스템(10A)은 PCI 호스트(20)가 PCI 버스(50)를 통해 PCI 장치(100)로 데이터를 라이트(write)하거나 PCI 장치로부터 데이터를 리드(read)하는 시스템을 의미할 수 있다. 예컨대, PCI 시스템(10A)은 컴퓨터 시스템(computer system) 또는 인터페이스 시스템(interface system)으로 구현될 수 있다.
PCI 호스트(20)는 PCI 버스(50)를 통해 PCI 장치(100)로 액세스하고, 데이터를 PCI 장치(100)로부터 리드하거나 데이터를 PCI 장치(100)로 라이트할 수 있다. 예컨대, PCI 호스트(20)는 루트 컴플렉스(root complex)를 의미할 수 있다.
PCI 버스(50)는 PCI 호스트(20)와 PCI 장치(100) 사이에서 접속되고, PCI 호스트(20)와 PCI 장치(50)간 통신을 연결하는 기능을 수행한다. 예컨대, PCI 버스(50)는 PCI 익스프레스(Peripheral Component Interconnect Express), PCI 버스, 및/또는 PCI-X(Peripheral Component Interconnect eXtended) 버스를 의미할 수 있다.
PCI 장치(100)는 PCI 장치 제어기(110), 어드레스 변환기(address tranlation unit(ATU);140), 및 장치 메모리(150)를 포함할 수 있다.
PCI 장치(100)는 PCI 버스(50)를 통해 PCI 호스트(20)와 통신할 수 있다. 예컨대, PCI 장치(100)는 SSD(solid state drive), HDD(hard disk drive), 그래픽 카드(graphic card), NIC(network interface card)로 구현될 수 있다.
PCI 장치 제어기(110)는 PCI 레지스터(120)와 오프셋 레지스터(130)을 포함할 수 있다.
PCI 장치 제어기(110)는 PCI 장치(100)의 전반적인 기능을 수행한다. PCI 장치 제어기(110)는 PCI 장치(100)의 전반적인 프로세스를 제어하는 코어(미도시)를 포함할 수 있다.
PCI 레지스터(120)는 PCI 장치(100)의 전반적인 정보를 포함한다. 따라서, PCI 호스트(20)는 PCI 레지스터(120)로부터 PCI 장치(100)에 대한 정보를 취득할 수 있다. 실시 예에 따르면, PCI 레지스터(120)는 BAR(base address register;125)를 포함할 수 있다.
BAR(125)는 베이스 어드레스(base address)를 포함할 수 있다. 또한, BAR(125)는 PCI 장치가 사용하는 메모리 영역과 I/O 영역에 대한 어드레스를 저장할 수 있다. 본 발명에서, BAR(125)는 PCI 장치가 사용하는 메모리 영역에 대한 베이스 어드레스(base address)를 저장한다고 가정한다.
베이스 어드레스는 PCI 호스트(20)가 장치 메모리(150)로 액세스할 수 있는 메모리 영역의 시작 주소이다. 즉, 상기 베이스 어드레스에 의해 PCI 호스트(20)가 액세스할 수 있는 메모리 영역이 결정될 수 있다.
도 1에서는 설명의 편의를 위해 BAR(125)를 하나만 도시하고 있지만, 실시 예에 따라, BAR(125)는 PCI 레지스터(120)에 복수로 존재할 수 있다.
오프셋 레지스터(130)는 PCI 호스트(20)로부터 전송된 오프셋(offset)을 저장할 수 있다. 오프셋 레지스터(130)는 PCI 레지스터(120)나 장치 메모리(150)와 별도의 저장공간을 의미할 수 있다. 예컨대, 오프셋 레지스터(130)는 레지스터(register), DRAM(dynamic random access memory), SRAM(static random access memory)로 구현될 수 있다.
오프셋은 특정한 어드레스로부터 다른 특정한 어드레스 사이의 거리를 의미한다. 예컨대, 상기 오프셋은 장치 메모리(150)에 의해 사이즈 제한을 받는다. 즉, 메모리(150)의 사이즈보다 작은 값을 갖는다.
상기 오프셋은 PCI 호스트(20)에 의해 상기 데이터와 함께 전송될 수 있다. 또한, PCI 호스트(20)에 의해 상기 데이터와 별도로 전송될 수도 있다. 예컨대, 상기 데이터와 상기 오프셋은 직렬(serial)로 전송될 수 있고, 병렬(parallel)로 전송될 수도 있다.
PCI 장치 제어기(110)는 상기 오프셋이 가리키는 메모리 영역으로 PCI 호스트(20)가 액세스할 수 있는 영역의 변경 상태를 나타낼 수 있고, 상기 변경 상태를 나타내고 업데이트할 수 있는 상태 레지스터(미도시)를 포함할 수 있다.
또한, PCI 장치 제어기(110)는 상기 변경 상태에 기초하여 변셩 상태 신호(또는 인터럽트)를 생성하는 인터럽트 발생기(미도시)를 포함할 수 있다.
상기 상태 레지스터가 나타내는 변경 상태에 기초하여, 어드레스 변환기(140)는 PCI 호스트(20)로 액세스 영역의 변경 여부에 대한 결과를 전송할 수 있다. 또한, 상기 상태 레지스터는 변경 상태 정보를 상기 인터럽트 발생기로 전송할 수 있다. 상기 인터럽트 발생기는 PCI 호스트(20)로 PCI 호스트(20)의 액세스 영역에 대한 변경 상태 신호(또는 인터럽트)를 전송할 수 있다.
어드레스 변환기(140)는 PCI 호스트(20)가 오프셋을 오프셋 레지스터(130)로 라이트 하는 동작을 감지할 수 있다. 어드레스 변환기(140)는 상기 라이트 동작을 감지하는 경우에, 어드레스 변환기(140)는 오프셋 레지스터(130)에 저장된 상기 오프셋에 기초하여, PCI 호스트(20)의 장치 메모리에 대한 액세스 영역을 상기 오프셋이 가리키는 메모리 영역으로 변경할 수 있다.
메모리 장치(150)는 PCI 호스트(20)로부터 전송된 데이터를 수신하거나, PCI 호스트(20)가 요청한 데이터를 전송할 수 있다.
장치 메모리(150)는 메모리(160)와 액세스 컨트롤러(180)을 포함할 수 있다.
메모리(160)는 PCI 호스트(20)로부터 전송된 데이터를 메모리 영역에 저장하거나, PCI 호스트(20)가 요청한 데이터 PCI 호스트로 전송할 수 있다.
PCI 호스트(20)는 BAR(125)의 사이즈에 의해 제한된 메모리 영역에 대하여만 메모리(160)로 액세스할 수 있다. BAR(125)의 사이즈는 부팅 단계에서 기설정된 기준에 따라 설정될 수 있다. 메모리(160)는 상기 메모리 영역을 포함할 수 있고, 상기 메모리 영역은 BAR(125)의 베이스 어드레스와 BAR(125)의 사이즈에 의해 결정될 수 있다. 예컨대, 복수의 BAR(125)들이 존재하는 경우에는, 상기 복수의 BAR(125)들 각각에 대한 각각의 메모리 영역들이 존재할 수 있다.
액세스 컨트롤러(180)는 PCI 호스트(20)가 메모리(160)로 액세스하는 전반적인 동작을 제어할 수 있다. 예컨대, 액세스 컨트롤러(180)는 복수의 디코더를 포함하는 회로를 포함할 수 있다. 예컨대, ATU(105)가 메모리 영역에 대한 어드레스를 전송하면, 액세스 컨트롤러(180)는 PCI 호스트(20)를 상기 어드레스에 대한 메모리 영역으로 액세스하는 동작을 제어할 수 있다.
도 2는 본 발명의 다른 실시 예에 따른 PCI 시스템(10B)의 블록도이다.
도 2를 참조하면, PCI 시스템(10B)은 PCI 호스트(20), PCI 버스(50), 및 PCI 장치(200)를 포함할 수 있다. 도 2의 PCI 시스템(10B)은 도 1의 PCI 시스템(10A)과 실질적으로 동일하거나 유사한 기능을 수행할 수 있다.
PCI 장치(200)는 PCI 장치 제어기(210), 어드레스 변환기(address tranlation unit(ATU);240), 및 장치 메모리(250)를 포함할 수 있다.
PCI 장치 제어기(210)는 도 1에서 설명한 PCI 장치 제어기(110)와 실질적으로 동일하거나 유사한 구성과 기능을 수행한다.
PCI 장치 제어기(210)는 도 1에서 설명한 PCI 장치 제어기(110)와 오프셋 레지스터(130)을 제외하고는 실질적으로 동일하거나 유사한 기능을 수행한다.
PCI 장치 제어기(210)는 PCI 레지스터(220)를 포함할 수 있다.
PCI 레지스터(220)는 도 1에서 설명한 PCI 레지스터(120)와 실질적으로 동일하거나 유사한 기능을 수행한다. 예컨대, PCI 레지스터(220)는 BAR(225)를 포함할 수 있고, BAR(225)는 베이스 어드레스를 포함할 수 있다.
BAR(225)는 도 1에서 설명한 BAR(125)와 실질적으로 동일하거나 유사한 기능을 수행한다. 즉, PCI 호스트(20)는 BAR(225)에 의해 결정된 메모리 영역에 대하여 액세스할 수 있다.
PCI 장치 제어기(210)는 상기 오프셋이 가리키는 메모리 영역으로 PCI 호스트(20)가 액세스할 수 있는 영역의 변경 상태를 나타낼 수 있고, 상기 변경 상태를 나타내고 업데이트할 수 있는 상태 레지스터(미도시)를 포함할 수 있다.
또한, PCI 장치 제어기(210)는 상기 변경 상태에 기초하여 변셩 상태 신호(또는 인터럽트)를 생성하는 인터럽트 발생기(미도시)를 포함할 수 있다.
상기 상태 레지스터가 나타내는 변경 상태에 기초하여, 어드레스 변환기(240)는 PCI 호스트(20)로 액세스 영역의 변경 여부에 대한 결과를 전송할 수 있다. 또한, 상기 상태 레지스터는 변경 상태 정보를 상기 인터럽트 발생기로 전송할 수 있다. 상기 인터럽트 발생기는 PCI 호스트(20)로 PCI 호스트(20)의 액세스 영역에 대한 변경 상태 신호(또는 인터럽트)를 전송할 수 있다.
도 2를 참조하면, 어드레스 변환기(240)는 PCI 호스트(20)가 오프셋을 오프셋 레지스터(265)로 라이트 하는 동작을 감지할 수 있다. 어드레스 변환기(240)는 도 1에서 설명한 어드레스 변환기(140)와 실질적으로 동일한 기능을 수행한다.
장치 메모리(250)는 메모리(260)와 액세스 컨트롤러(280)을 포함할 수 있다.
장치 메모리(250)는 도 1에서 설명한 장치 메모리(150)와 실질적으로 동일하거나 유사한 기능을 수행할 수 있다.
메모리(260)는 도 1에서 설명한 메모리(160)와 실질적으로 동일하거나 유사한 기능을 수행할 수 있다. 다만, 메모리(260)는 도 1의 메모리(160)와 달리, 오프셋 레지스터(265)를 포함할 수 있다.
오프셋 레지스터(265)는 PCI 호스트(20)로부터 전송된 오프셋을 저장할 수 있다. 도 1에서 설명한 오프셋 레지스터(130)와 위치만 상이할 뿐, 실질적으로 동일하거나 유사한 기능을 수행할 수 있다.
예컨대, PCI 호스트(20)는 PCI 레지스터(220) 내부의 BAR(225)에 의해 결정된 메모리 영역으로 액세스할 수 있고, 상기 메모리 영역은 데이터 영역와 오프셋 레지스터(265)를 포함할 수 있다. 상기 데이터 영역은 PCI 호스트가 PCI 장치로 전송한 데이터를 라이트하는 영역이거나 PCI 호스트가 요청한 데이터가 저장된 영역을 의미할 수 있다. BAR(225)에 의해 결정된 상기 메모리 영역에 대하여, 상기 데이터 영역과 오프셋 레지스터(265)는 반드시 물리적으로 연속된 공간을 의미하지는 않는다.
액세스 컨트롤러(280)는 도 1에서 설명한 액세스 컨트롤러(180)와 실질적으로 동일하거나 유사한 기능을 수행할 수 있다.
도 3은 본 발명의 또다른 실시 예에 따른 PCI 시스템(10C)의 블록도이다.
도 3를 참조하면, PCI 시스템(10C)은 PCI 호스트(20), PCI 버스(50), 및 PCI 장치(300)를 포함할 수 있다. 도 2의 PCI 시스템(10C)은 PCI 장치(300)를 제외하고는 도 1의 PCI 시스템(10A)과 실질적으로 동일하거나 유사한 기능을 수행할 수 있다.
PCI 장치(300)는 PCI 장치 제어기(310), 어드레스 변환기(address tranlation unit(ATU);340), 장치 메모리(350)를 포함할 수 있다.
도 3에 PCI 장치(300)는 도 1에서 설명한 PCI 장치(100) 오프셋 레지스터(330)의 위치만 상이할 뿐, 실질적으로 동일하거나 유사한 구조와 기능을 갖는다.
PCI 장치 제어기(310)는 도 1에서 설명한 PCI 장치 제어기와 실질적으로 동일하거나 유사할 수 있다..
PCI 레지스터(320)는 오프셋 레지스터(330)를 포함할 수 있다. 예컨대, 오프셋 레지스터(330)는 PCI 레지스터(320)에 포함된 BAR(325)와 다른 영역에 위치할 수 있다.
오프셋 레지스터(330)는 도 1과 도 2에서 설명한 오프셋 레지스터(130, 230)와 실질적으로 동일한 기능을 수행할 수 있다.
도 4 내지 도 9에 도시된 오프셋을 변경하는 동작과 관련하여, 제1데이터(DATA1)는 PCI 호스트(20)가 전송하려는 데이터의 일부분이고, 제2데이터(DATA2)는 PCI 호스트(20)가 상기 전송하려는 데이터에서 전송하지 못한 나머지 부분를 의미할 수 있다.
PCI 호스트(20)는 상기 데이터와 상기 오프셋을 함께 전송될 수 있다. 또한, PCI 호스트(20)는 상기 데이터와 별도로 상기 오프셋을 전송될 수도 있다. 예컨대, 상기 데이터와 상기 오프셋은 직렬(serial)로 전송될 수 있고, 병렬(parallel)로 전송될 수도 있다.
도 4는 도 1에 도시된 PCI 시스템(10A)에서 PCI 호스트(20)가 오프셋을 변경하고, PCI 장치(100)의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 1과 도 4를 참조하면, 제1데이터 버퍼(160-1)는 제1BAR(125-1)의 베이스 어드레스(BA)에 기초하여 결정된다. 예컨대, 제1데이터 버퍼(160-1)는 제1BAR(125-1)의 베이스 어드레스(BA)부터 베이스 어드레스(BA)를 제1BAR(125-1)의 사이즈만큼 더한 어드레스까지를 의미할 수 있다.
제2데이터 버퍼(160-2)는 제1BAR(125-1)의 베이스 어드레스(BA)와 오프셋(OFFSET)에 기초하여 결정된다. 예컨대, 제2데이터 버퍼(160-2)는 제1BAR(125-1)의 베이스 어드레스(BA)와 오프셋(OFFSET)을 더한 어드레스부터 베이스 어드레스(BA)와 오프셋(OFFSET)을 더한 어드레스에 제1BAR(125-1)의 사이즈만큼 더한 어드레스까지를 의미할 수 있다.
PCI 호스트(20)가 제1데이터(DATA1)를 PCI 레지스터(120)에 포함된 BAR1(125-1)를 통해 PCI 장치(100)의 메모리(160)로 전송할 수 있다. 예컨대, PCI 호스트(20)는 제1데이터(DATA1)를 제1BAR(125-1)에 저장된 베이스 어드레스(BA)와 관련된 제1데이터 버퍼(160-1)로 라이트할 수 있다.
PCI 호스트(20)는, 제2데이터(DATA2)를 제2데이터 버퍼(160-2)로 전송하기 위해, 제2BAR(125-2)를 통해 오프셋(OFFSET)을 오프셋 레지스터(130)로 라이트할 수 있다. 예컨대, 제2BAR(125-2)는 오프셋 레지스터(130')에 대한 베이스 어드레스를 포함하고, PCI 호스트(20)는 제2BAR(125-2)에 저장된 베이스 어드레스에 기초하여 오프셋(OFFSET)을 오프셋 레지스터(130)로 라이트할 수 있다.
PCI 호스트(20)가 제1BAR(125-1)를 통해 제1데이터 버퍼(160-1)를 바라보는 동안에, PCI 호스트(20)는 오프셋(OFFSET)을 오프셋 레지스터(130)로 라이트할 수 있다.
ATU(140)는 라이트 된 오프셋(OFFSET)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(160')을 제2데이터 버퍼(160-2) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(140)는 제1데이터 버퍼(160-1) 위치를 제2데이터 버퍼(160-2) 위치로 변경할 수 있다.
PCI 호스트(20)는, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(160')을 제2데이터 버퍼(160-2) 위치로 미러링(mirroring)한 후, 제2데이터(DATA2)를 제2데이터 버퍼(160-2)로 라이트 할 수 있다.
PCI 호스트(20)가 전송하려는 데이터가 BAR(125)의 사이즈보다 큰 경우에, PCI 호스트(20)는 한 번에 모든 데이터를 전송할 수 없다. 다만, 상기 설명한 동작을 이용하면, PCI 호스트(20)가 오프셋(OFFSET)을 오프셋 레지스터(130)로 라이트하고, 별도의 상호작용(interaction) 없이 BAR(125)의 사이즈보다 큰 데이터를 메모리(160)의 특정 영역으로 전송할 수 있다.
도 5는 도 1에 도시된 PCI 시스템(10A)에서 PCI 호스트(20)가 오프셋을 변경하고, PCI 장치(100)의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 5의 오프셋을 변경하는 동작은 도 4에서 설명한 오프셋을 변경하는 동작과 유사하다.
도 1과 도 5를 참조하면, 제1데이터 버퍼(160-3)는 제1BAR(125-1)의 베이스 어드레스(BA)와 제1오프셋(OFFSET1)에 기초하여 결정된다. 예컨대, 제1데이터 버퍼(160-1)는 제1BAR(125-1)의 베이스 어드레스(BA)와 제1오프셋(OFFSET1)을 더한 어드레스부터 베이스 어드레스(BA)와 제1오프셋(OFFSET1)을 더한 어드레스에 제1BAR(125-1)의 사이즈를 더한 어드레스까지를 의미할 수 있다.
제2데이터 버퍼(160-4)는 제1BAR(125-1)의 베이스 어드레스(BA)와 제2오프셋(OFFSET2)에 기초하여 결정된다. 예컨대, 제2데이터 버퍼(160-2)는 제1BAR(125-1)의 베이스 어드레스(BA)와 제2오프셋(OFFSET2)을 더한 어드레스부터 베이스 어드레스(BA)와 제2오프셋(OFFSET2)을 더한 어드레스에 제1BAR(125-1)의 사이즈를 더한 어드레스까지를 의미할 수 있다.
PCI 호스트(20)는, 제1데이터(DATA1)를 제1데이터 버퍼(160-3)로 전송하기 위해, 제1오프셋(OFFSET1)을 오프셋 레지스터(130)로 라이트 할 수 있다. 예컨대, ATU(140)는, PCI 호스트(20)가 제1오프셋(OFFSET1)을 오프셋 레지스터(130)로 라이트하는 동작을 감지하고, ATU(140)는 라이트 된 제1오프셋(OFFSET1)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(160')을 제1데이터 버퍼(160-3) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(140)는 PCI 호스트(20)가 액세스할 수 있는 영역을 제1데이터 버퍼(160-3) 위치로 변경할 수 있다.
PCI 호스트(20)는, ATU(140)가 PCI 호스트(20)가 바라보는 데이터 버퍼 공간(160')을 제1데이터 버퍼(160-3) 위치로 미러링(mirroring)한 후, 제1데이터(DATA1)를 제1데이터 버퍼(160-3)로 라이트 할 수 있다.
PCI 호스트(20)는, 제2데이터(DATA2)를 제2데이터 버퍼(160-4)로 전송하기 위해, 제2오프셋(OFFSET2)을 오프셋 레지스터(130)로 라이트 할 수 있다. 예컨대, ATU(140)는, PCI 호스트(20)가 제2오프셋(OFFSET2)을 오프셋 레지스터(130')로 라이트하는 동작을 감지하고, ATU(140)는 라이트 된 제2오프셋(OFFSET2)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(160')을 제2데이터 버퍼(160-4) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(140)는 제1데이터 버퍼(160-3) 위치를 제2데이터 버퍼(160-4) 위치로 변경할 수 있다.
PCI 호스트(20)는, ATU(140)가 PCI 호스트(20)가 바라보는 데이터 버퍼 공간(160')을 제2데이터 버퍼(160-4) 위치로 미러링(mirroring)한 후, 제2데이터(DATA2)를 제2데이터 버퍼(160-4)로 라이트 할 수 있다.
도 6는 도 2에 도시된 PCI 시스템(10B)에서 PCI 호스트(20)가 오프셋을 변경하고, PCI 장치(200)의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 2과 도 6를 참조하면, PCI 호스트(20)가 제1데이터(DATA1)를 PCI 레지스터(220)에 포함된 BAR(225)를 통해 PCI 장치(200)의 메모리(260)로 전송할 수 있다. 예컨대, PCI 호스트(20)는 제1데이터(DATA1)를 BAR(225)에 저장된 베이스 어드레스(BA)에 관련된 제1데이터 버퍼(260-1)로 라이트할 수 있다.
제1데이터 버퍼(260-1)는 메모리(260)에 포함되는 메모리 영역이고, 베이스 어드레스(BA')부터 베이스 어드레스(BA)에 BAR(225)의 사이즈를 더한 어드레스까지의 메모리 영역을 의미할 수 있다. 상기 베이스 어드레스(BA')는 BAR(225)와 관련된 베이스 어드레스(BA)와 오프셋 레지스터(265)의 사이즈만큼 더한 어드레스를 의미할 수 있다.
PCI 호스트(20)는, 제2데이터(DATA2)를 제2데이터 버퍼(260-2)로 전송하기 위해, BAR(225)를 통해 오프셋(OFFSET)을 오프셋 레지스터(265)로 라이트할 수 있다. 예컨대, BAR(225)는 오프셋 레지스터(265)에 대한 베이스 어드레스를 포함하고, PCI 호스트(20)는 BAR(225)에 저장된 베이스 어드레스(BA)에 기초하여 오프셋(OFFSET)을 오프셋 레지스터(265)로 라이트할 수 있다.
제2데이터 버퍼(260-2)는 메모리(260)에 포함되는 메모리 영역이고, 베이스 어드레스(BA')와 오프셋(OFFSET)을 더한 어드레스부터 베이스 어드레스(BA)와 오프셋(OFFSET)을 더한 어드레스에 BAR(225)의 사이즈를 더한 어드레스까지의 메모리 영역을 의미할 수 있다. 상기 베이스 어드레스(BA')는 BAR(225)와 관련된 베이스 어드레스(BA)와 오프셋 레지스터(265)의 사이즈만큼 더한 어드레스를 의미할 수 있다.
PCI 호스트(20)가 BAR(225)를 통해 제1데이터 버퍼(260-1)를 바라보는 동안에, PCI 호스트(20)는 오프셋(OFFSET)을 오프셋 레지스터(265)로 라이트할 수 있다. ATU(240)는 라이트 된 오프셋(OFFSET)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(260')을 제2데이터 버퍼(260-2) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(240)는 제1데이터 버퍼(260-1) 위치를 제2데이터 버퍼(260-2) 위치로 변경할 수 있다.
PCI 호스트(20)는, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(260')을 제2데이터 버퍼(260-2) 위치로 미러링(mirroring)한 후, 제2데이터(DATA2)를 제2데이터 버퍼(260-2)로 라이트 할 수 있다.
도 7는 도 2에 도시된 PCI 시스템(10B)에서 PCI 호스트(20)가 오프셋을 변경하고, PCI 장치(200)의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 2와 도 7를 참조하면, 제1데이터 버퍼(260-3)는 BAR(225)의 베이스 어드레스(BA)와 제1오프셋(OFFSET1)에 기초하여 결정된다. 예컨대, 제1데이터 버퍼(260-3)는 BAR(225)의 베이스 어드레스(BA')와 제1오프셋(OFFSET1)을 더한 어드레스부터 베이스 어드레스(BA')와 제1오프셋(OFFSET1)을 더한 어드레스에 BAR(225)의 사이즈를 더한 어드레스까지를 의미할 수 있다. 상기 베이스 어드레스(BA')는 BAR(225)와 관련된 베이스 어드레스(BA)와 오프셋 레지스터(265)의 사이즈만큼 더한 어드레스를 의미할 수 있다.
제2데이터 버퍼(260-4)는 BAR(225)의 베이스 어드레스(BA)와 제2오프셋(OFFSET2)에 기초하여 결정된다. 예컨대, 제2데이터 버퍼(260-4)는 BAR(225)의 베이스 어드레스(BA')와 제2오프셋(OFFSET2)을 더한 어드레스부터 베이스 어드레스(BA')와 제2오프셋(OFFSET2)을 더한 어드레스에 BAR(225)의 사이즈를 더한 어드레스까지를 의미할 수 있다. 상기 베이스 어드레스(BA')는 BAR(225)와 관련된 베이스 어드레스(BA)와 오프셋 레지스터(265)의 사이즈만큼 더한 어드레스를 의미할 수 있다.
PCI 호스트(20)는, 제1데이터(DATA1)를 제1데이터 버퍼(260-3)로 전송하기 위해, 제1오프셋(OFFSET1)을 오프셋 레지스터(265)로 라이트 할 수 있다. 예컨대, ATU(240)는, PCI 호스트(20)가 제1오프셋(OFFSET1)을 오프셋 레지스터(265)로 라이트하는 동작을 감지하고, ATU(240)는 라이트 된 제1오프셋(OFFSET1)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(260')을 제1데이터 버퍼(260-3) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(240)는 PCI 호스트(20)가 액세스할 수 있는 영역을 제1데이터 버퍼(260-3) 위치로 변경할 수 있다.
PCI 호스트(20)는, ATU(240)가 PCI 호스트(20)가 바라보는 데이터 버퍼 공간(160')을 제1데이터 버퍼(260-3) 위치로 미러링(mirroring)한 후, 제1데이터(DATA1)를 제1데이터 버퍼(260-3)로 라이트 할 수 있다.
PCI 호스트(20)는, 제2데이터(DATA2)를 제2데이터 버퍼(260-4)로 전송하기 위해, 제2오프셋(OFFSET2)을 오프셋 레지스터(265)로 라이트 할 수 있다. 예컨대, ATU(240)는, PCI 호스트(20)가 제2오프셋(OFFSET2)을 오프셋 레지스터(265)로 라이트하는 동작을 감지하고, ATU(240)는 라이트 된 제2오프셋(OFFSET2)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(260')을 제2데이터 버퍼(260-4) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(240)는 제1데이터 버퍼(260-3) 위치를 제2데이터 버퍼(260-4) 위치로 변경할 수 있다.
PCI 호스트(20)는, ATU(240)가 PCI 호스트(20)가 바라보는 데이터 버퍼 공간(260')을 제2데이터 버퍼(260-4) 위치로 미러링(mirroring)한 후, 제2데이터(DATA2)를 제2데이터 버퍼(260-4)로 라이트 할 수 있다.
도 8는 도 3에 도시된 PCI 시스템(10C)에서 PCI 호스트(20)가 오프셋을 변경하고, PCI 장치(300)의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 3과 도 8을 참조하면, PCI 호스트(20)가 제1데이터(DATA1)를 PCI 레지스터(320)에 포함된 BAR(325)를 통해 PCI 장치(300)의 메모리(360)로 전송할 수 있다. 예컨대, PCI 호스트(20)는 제1데이터(DATA1)를 BAR(325)에 저장된 베이스 어드레스(BA)와 관련된 제1데이터 버퍼(360-1)로 라이트할 수 있다.
제1데이터 버퍼(360-1)는 메모리(360)에 포함되는 메모리 영역이고, 베이스 어드레스(BA)부터 베이스 어드레스(BA)에 BAR(325)의 사이즈를 더한 어드레스까지의 메모리 영역을 의미할 수 있다.
PCI 호스트(20)는, 제2데이터(DATA2)를 제2데이터 버퍼(260-2)로 전송하기 위해, 오프셋(OFFSET)을 PCI 레지스터(320)에 포함된 오프셋 레지스터(330)로 라이트할 수 있다. 예컨대, PCI 호스트(20)는 오프셋(OFFSET)을 PCI 레지스터(320)의 오프셋 레지스터(330)로 라이트할 수 있다.
제2데이터 버퍼(360-2)는 메모리(360)에 포함되는 메모리 영역이고, 베이스 어드레스(BA)와 오프셋(OFFSET)을 더한 어드레스부터 베이스 어드레스(BA)와 오프셋(OFFSET)을 더한 어드레스에 BAR(325)의 사이즈를 더한 어드레스까지의 메모리 영역을 의미할 수 있다.
PCI 호스트(20)가 BAR(325)를 통해 제1데이터 버퍼(360-1)를 바라보는 동안에, PCI 호스트(20)는 오프셋(OFFSET)을 오프셋 레지스터(330)로 라이트할 수 있다. ATU(340)는 라이트 된 오프셋(OFFSET)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(360')을 제2데이터 버퍼(360-2) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(340)는 제1데이터 버퍼(360-1) 위치를 제2데이터 버퍼(360-2) 위치로 변경할 수 있다.
PCI 호스트(20)는, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(360')을 제2데이터 버퍼(360-2) 위치로 미러링(mirroring)한 후, 제2데이터(DATA2)를 제2데이터 버퍼(360-2)로 라이트 할 수 있다.
도 9는 도 3에 도시된 PCI 시스템(10C)에서 PCI 호스트(20)가 오프셋을 변경하고, PCI 장치(300)의 액세스 영역을 변경하는 동작을 설명하기 위한 개념도이다.
도 3와 도 9를 참조하면, 제1데이터 버퍼(360-3)는 BAR(325)의 베이스 어드레스(BA)와 제1오프셋(OFFSET1)에 기초하여 결정된다. 예컨대, 제1데이터 버퍼(360-3)는 BAR(325)의 베이스 어드레스(BA)와 제1오프셋(OFFSET1)을 더한 어드레스부터 베이스 어드레스(BA)와 제1오프셋(OFFSET1)을 더한 어드레스에 BAR(325)의 사이즈를 더한 어드레스까지를 의미할 수 있다.
제2데이터 버퍼(360-4)는 BAR(325)의 베이스 어드레스(BA)와 제2오프셋(OFFSET2)에 기초하여 결정된다. 예컨대, 제2데이터 버퍼(360-4)는 BAR(325)의 베이스 어드레스(BA)와 제2오프셋(OFFSET2)을 더한 어드레스부터 베이스 어드레스(BA)와 제2오프셋(OFFSET2)을 더한 어드레스에 BAR(325)의 사이즈를 더한 어드레스까지를 의미할 수 있다.
PCI 호스트(20)는, 제1데이터(DATA1)를 제1데이터 버퍼(360-3)로 전송하기 위해, 제1오프셋(OFFSET1)을 오프셋 레지스터(330)로 라이트 할 수 있다. 예컨대, ATU(340)는, PCI 호스트(20)가 제1오프셋(OFFSET1)을 오프셋 레지스터(330)로 라이트하는 동작을 감지하고, ATU(340)는 라이트 된 제1오프셋(OFFSET1)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(360')을 제1데이터 버퍼(360-3) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(340)는 PCI 호스트(20)가 액세스할 수 있는 영역을 제1데이터 버퍼(360-3) 위치로 변경할 수 있다.
PCI 호스트(20)는, ATU(340)가 PCI 호스트(20)가 바라보는 데이터 버퍼 공간(360')을 제1데이터 버퍼(360-3) 위치로 미러링(mirroring)한 후, 제1데이터(DATA1)를 제1데이터 버퍼(360-3)로 라이트 할 수 있다.
PCI 호스트(20)는, 제2데이터(DATA2)를 제2데이터 버퍼(360-4)로 전송하기 위해, 제2오프셋(OFFSET2)을 오프셋 레지스터(330)로 라이트 할 수 있다. 예컨대, ATU(340)는, PCI 호스트(20)가 제2오프셋(OFFSET2)을 오프셋 레지스터(330)로 라이트하는 동작을 감지하고, ATU(340)는 라이트 된 제2오프셋(OFFSET2)을 이용하여, PCI 호스트(20)가 바라보는 데이터 버퍼 공간(360')을 제2데이터 버퍼(360-4) 위치로 미러링(mirroring)할 수 있다. 즉, ATU(340)는 제1데이터 버퍼(360-3) 위치를 제2데이터 버퍼(360-4) 위치로 변경할 수 있다.
PCI 호스트(20)는, ATU(340)가 PCI 호스트(20)가 바라보는 데이터 버퍼 공간(360')을 제2데이터 버퍼(360-4) 위치로 미러링(mirroring)한 후, 제2데이터(DATA2)를 제2데이터 버퍼(360-4)로 라이트 할 수 있다.
도 4 내지 도 9에서, PCI 호스트(20)가 오프셋(OFFSET, OFFSET1, 또는 OFFSET2)을 변경하고, PCI 장치(100, 200, 또는 300)의 메모리의 액세스 영역을 변경하는 동작에 대해 설명하였다.
도 4 내지 도 9에서는 설명을 위해 오프셋, 제1오프셋, 제2오프셋, 제1데이터, 제2데이터, 제1데이터 버퍼, 및 제2데이터 버퍼만을 도시했지만, 본 발명의 실시에 따라서는 PCI 호스트(20)는 복수의 오프셋들과 복수의 데이터들을 PCI 장치(100, 200, 또는 300)로 전송할 수 있고, 메모리(160, 260, 또는 360)는 복수의 데이터 버퍼들을 포함할 수 있다.
도 10은 도 4, 도 6, 및 도 8에 도시된 PCI 호스트가 오프셋을 변경하고, PCI 장치로 액세스하는 방법에 대한 플로우 차트이다.
도 4, 도 6, 도 8, 및 도 10을 참조하면, PCI 호스트(20)가 오프셋을 변경하고, PCI 장치(100, 200, 또는 300)의 액세스 영역을 변경하는 동작들 각각은 오프셋 레지스터(130, 265, 또는 330)들의 위치만 상이할 뿐 실질적으로 동작 내용은 동일하거나 유사하다.
PCI 호스트(20)는 PCI 장치(100, 200, 또는 300)의 메모리(160, 260, 또는 360)로 액세스한다(S101).
예컨대, PCI 호스트(20)는 PCI 장치(100, 200, 또는 300)의 메모리(160, 260, 또는 360)로 액세스하고, 데이터를 메모리(160, 260, 또는 360)로 라이트하거나, 데이터를 메모리(160, 260, 또는 360)로부터 리드할 수 있다.
실시 예에 따라, 상기 데이터의 크기가 PCI 장치(100, 200, 또는 300)의 BAR(125, 225, 또는 325)의 사이즈보다 작은 경우에는, PCI 호스트는 BAR(125, 225, 또는 325)의 베이스 어드레스(BA 또는 BA')와 관련된 제1메모리 영역(160-1, 260-1, 360-1)으로 상기 데이터를 라이트하거나 제1메모리 영역(160-1, 260-1, 360-1)으로부터 상기 데이터를 리드할 수 있다(S105).
상기 데이터의 크기가 PCI 장치(100, 200, 또는 300)의 BAR(125, 225, 또는 325)사이즈보다 큰 경우에는, PCI 호스트는 BAR(125, 225, 또는 325)의 사이즈 내에서 제1메모리 영역(160-1, 260-1, 360-1)으로 데이터의 일부를 라이트하거나, 제1메모리 영역(160-1, 260-1, 360-1)으로부터 상기 데이터의 일부를 리드할 수 있다.
PCI 호스트(20)는, 상기 데이터의 나머지 일부를 메모리(160, 260, 또는 360)로 전송하기 위해, 오프셋을 오프셋 레지스터(130, 265, 또는 330)로 라이트하고, ATU(140, 240, 또는 340)는 상기 오프셋을 이용하여, 제1메모리 영역(160-1, 260-1, 360-1)을 제2메모리 영역(160-2, 260-2, 360-2)으로 변경할 수 있다(S109). PCI 장치(100, 200, 또는 300)는 제1메모리 영역(160-1, 260-1, 360-1)에 대한 변경 여부를 확인할 수 있다.
PCI 호스트(20)는 상기 데이터의 나머지 일부를 변경된 제2메모리 영역(160-2, 260-2, 360-2)으로 라이트하거나 제2메모리 영역(160-2, 260-2, 360-2)에서 상기 데이터의 나머지 일부를 리드할 수 있다(S111). PCI 호스트(20)는 제2메모리 영역(160-2, 260-2, 360-2)에 대한 변경 여부를 확인한 후, 제2메모리 영역(160-2, 260-2, 360-2)으로 액세스할 수 있다.
상기 데이터의 나머지 일부가 BAR(125, 225, 및 325)의 사이즈보다 큰 경우에는, BAR(125, 225, 및 325)의 사이즈 크기 내에서 상기 데이터의 나머지 일부를 전송할 수 있다. 그리고 상기 설명한 동작에 기초하여, PCI 호스트(20)는 새로운 오프셋을 오프셋 레지스터(130, 265, 또는 330)로 라이트하고, ATU(140, 240, 또는 340)는 상기 새 오프셋을 이용하여 제3메모리 영역으로 변경할 수 있다. PCI 호스트는 상기 데이터의 전송하지 못한 부분을 상기 제3메모리 영역으로 전송할 수 있다.
도 11은 도 5, 도 7, 및 도 9에 도시된 PCI 호스트가 오프셋을 변경하고, PCI 장치로 액세스하는 방법에 대한 플로우 차트이다.
도 5, 도 7, 도 9, 및 도 11을 참조하면, PCI 호스트(20)가 오프셋을 변경하고, PCI 장치(100, 200, 또는 300)의 액세스 영역을 변경하는 동작들 각각은 오프셋 레지스터(130, 265, 또는 330)들의 위치만 상이할 뿐 실질적으로 동작 내용은 동일하거나 유사하다.
PCI 호스트(20)는 PCI 장치(100, 200, 또는 300)의 메모리(160, 260, 또는 360)로 액세스할 수 있다(S201).
예컨대, PCI 호스트(20)는 PCI 장치(100, 200, 또는 300)의 메모리(160, 260, 또는 360)로 액세스하고, 데이터를 메모리(160, 260, 또는 360)로 라이트하거나, 데이터를 메모리(160, 260, 또는 360)로부터 리드할 수 있다.
실시 예에 따라, 상기 데이터의 크기가 PCI 장치(100, 200, 또는 300)의 BAR(125, 225, 또는 325)의 사이즈보다 작은 경우에는, PCI 호스트(20)는 제1오프셋(OFFSET1)을 오프셋 레지스터(130, 265, 또는 330)로 라이트하고, ATU(140, 240, 또는 340)는 베이스 어드레스(BA 또는 BA')와 관련된 메모리 영역을 제1오프셋(OFFSET1)과 관련된 제1메모리 영역(160-3, 260-3, 360-3)으로 변경할 수 있다(S205). PCI 장치(100, 200, 또는 300)는 제1메모리 영역(160-3, 260-3, 360-3)에 대한 변경 여부를 확인할 수 있다.
PCI 호스트(20)는 상기 데이터를 제1메모리 영역(160-3, 260-3, 360-3)으로 라이트하거나 제1메모리 영역(160-3, 260-3, 360-3)으로부터 상기 데이터를 리드할 수 있다(S207). PCI 호스트(20)는 제1메모리 영역(160-3, 260-3, 360-3)에 대한 변경 여부를 확인한 후, 제1메모리 영역(160-3, 260-3, 360-3)으로 액세스할 수 있다.
실시 예에 따라, 데이터의 크기가 PCI 장치(100, 200, 또는 300)의 BAR(125, 225, 또는 325)의 사이즈보다 큰 경우에는, PCI 호스트(20)는 제1오프셋(OFFSET1)을 오프셋 레지스터(130, 265, 또는 330)로 라이트하고, ATU(140, 240, 또는 340)는 베이스 어드레스(BA 또는 BA')와 관련된 메모리 영역을 제1오프셋(OFFSET1)과 관련된 제1메모리 영역(160-3, 260-3, 360-3)으로 변경할 수 있다(S209). PCI 장치(100, 200, 또는 300)는 제1메모리 영역(160-3, 260-3, 360-3)에 대한 변경 여부를 확인할 수 있다.
PCI 호스트(20)는 BAR(125, 225, 또는 325)의 사이즈 내에서 상기 데이터의 일부를 제1메모리 영역(160-3, 260-3, 360-3)으로 라이트하거나 제1메모리 영역(160-3, 260-3, 360-3)으로부터 상기 데이터를 리드할 수 있다(S211). PCI 호스트(20)는 제1메모리 영역(160-3, 260-3, 360-3)에 대한 변경 여부를 확인한 후, 제1메모리 영역(160-3, 260-3, 360-3)으로 액세스할 수 있다.
PCI 호스트(20)는 제2오프셋을 오프셋 레지스터(130, 265, 또는 330)로 라이트하고, ATU(140, 240, 또는 340)는 상기 오프셋을 이용하여, 제1메모리 영역(160-3, 260-3, 360-3)을 제2메모리 영역(160-4, 260-4, 360-4)으로 변경할 수 있다(S213).
PCI 호스트(20)는 상기 데이터의 나머지 일부를 변경된 제2메모리 영역(160-4, 260-4, 360-4)으로 라이트하거나 제2메모리 영역(160-4, 260-4, 360-4)에서 상기 데이터의 나머지 일부를 리드할 수 있다(S215). PCI 호스트(20)는 제2메모리 영역(160-4, 260-4, 360-4)에 대한 변경 여부를 확인한 후, 제2메모리 영역(160-4, 260-4, 360-4)으로 액세스할 수 있다.
도 12은 본 발명의 다른 실시 예에 따른 컴퓨터 시스템(1000)의 블록도이다.
도 1 내지 도 3과 도 12를 참조하면, 컴퓨터 시스템(1000)은 PCI 시스템(10D), 시스템 버스(50B), 프로세서(500), 시스템 메모리(700)를 포함할 수 있다.
컴퓨터 시스템(1000)은 PCI 인터페이스를 이용하는, 중앙전산처리장치(CPU), 저장장치(memory), 입출력장치(input/ouput devices), 디스크 드라이버, 프린터, 모뎀 등의 주변기기들이 결합된 시스템을 의미할 수 있다. 예컨대, 컴퓨팅 시스템(1000)은 개인용 컴퓨터(PC), 랩탑(laptop) 컴퓨터일 수 있으나, 이에 한정되는 것은 아니다.
PCI 시스템(10D)은 도 1 내지 도 11에서 설명한 PCI 시스템(10A, 10B, 또는 10C)와 실질적으로 동일하거나 유사한 구성과 기능을 수행할 수 있다.
PCI 시스템(10D)은 PCI 호스트(20), PCI 버스(50A), 제1PCI 장치(100'), 제2PCI 장치(200'), 제3PCI 장치(300')를 포함할 수 있다.
PCI 호스트(20)와 PCI 버스(50A)는 도 1 내지 도 3에서 설명한 PCI 호스트(20)와 PCI 버스(50)와 실질적으로 동일하다.
도 12에서는 제1PCI 장치(100'), 제2PCI 장치(200'), 제3PCI 장치(300')을 포함한다고 도시되어 있으나, PCI 시스템(10D)은 하나 또는 그 이상의 PCI 장치들을 포함할 수 있다.
PCI 장치들(100', 200', 및 300') 각각은 도 1 도시된 PCI 장치(100)와 도 2에 도시된 PCI 장치(200)와 도 3에 도시된 PCI 장치(300) 중에서 어느 하나일 수 있다.
PCI 장치들(100', 200', 및 300') 각각은, SSD(solid state drive), UFS(universal flash storage), HDD(hard disk drive), 비디오 그래픽 어댑터(video graphic adapter(VGA)) 카드, 사운드 어댑터 카드, 및 네트워크 인터페이스 카드(network interface card(NIC)) 중에서 어느 하나일 수 있으나, 이에 한정되는 것은 아니다.
프로세서(500), 시스템 메모리(700), 및 PCI 시스템(10D)은 시스템 버스(50B)를 통해 서로 접속될 수 있다. 시스템 버스(50B)는 컨트롤 버스, 주소 버스, 및 데이터 버스 중에서 적어도 어느 하나를 포함할 수 있다.
프로세서(500)는 컴퓨터 시스템(1000)의 작동을 제어하고, PCI 호스트(20)를 통해 PCI 장치들(100',200',및 300') 중에서 적어도 어느 하나의 작동을 제어할 수 있다.
시스템 메모리(700)는 프로세서(500)의 작동에 필요한 명령 및/또는 데이터를 포함한다. 시스템 메모리(700)는 SRAM 또는 DRAM일 수 있으나, 이에 한정되는 것은 아니다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10A, 10B, 10C, 10D: PCI 시스템
20: PCI 호스트
50, 50A: PCI 버스
50B: 시스템 버스
100, 200, 300: PCI 장치
110: PCI 장치 제어기
120: PCI 레지스터
125: 베이스 어드레스 레지스터
130, 265: 330: 오프셋 레지스터
140, 240, 340: 어드레스 변환기(ATU)
150, 250, 350: 장치 메모리
160, 260, 360: 메모리
180, 280, 380: 액세스 제어기

Claims (10)

  1. PCI(peripheral component interconnect) 호스트가 액세스하는 제1메모리 영역을 결정하는 베이스 어드레스 레지스터(base address register(BAR))를 포함하는 PCI 레지스터;
    상기 PCI 호스트로부터 전송된 오프셋(offset)을 저장하는 오프셋 레지스터(offset register);
    상기 PCI 호스트가 상기 오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 어드레스 변환기(address tranlation unit(ATU)); 및
    상기 제1메모리 영역과 상기 제2메모리 영역을 포함하고, 상기 PCI 호스트로부터 전송된 데이터를 저장하거나 저장된 데이터를 상기 PCI 호스트로 전송하는 장치 메모리를 포함하는 PCI 장치.
  2. 제1항에 있어서,
    상기 베이스 어드레스 레지스터는 베이스 어드레스(base address)를 포함하고,
    상기 제1메모리 영역은 상기 베이스 어드레스와 상기 베이스 어드레스 레지스터의 사이즈에 기초하여 결정되고,
    상기 제2메모리 영역은 상기 베이스 어드레스, 상기 오프셋, 및 상기 베이스 어드레스 레지스터의 사이즈에 기초하여 결정되는 PCI 장치.
  3. 제2항에 있어서,
    상기 제1메모리 영역은 상기 베이스 어드레스부터 상기 베이스 어드레스 레지스터의 사이즈를 더한 어드레스 영역까지의 영역이고,
    상기 제2메모리 영역은 상기 베이스 어드레스와 상기 오프셋을 더한 어드레스부터 상기 베이스 어드레스 레지스터의 사이즈를 더한 어드레스 영역까지의 영역인 PCI 장치.
  4. 제1항에 있어서,
    상기 PCI 호스트의 액세스 영역의 변경 상태를 저장하는 상태 레지스터; 및
    상기 상태 레지스터로부터 상기 변경 상태를 수신받고, PCI 호스트로 상태 신호를 전송하는 인터럽트 발생기를 더 포함하는 PCI 장치.
  5. 제1항에 있어서,
    상기 오프셋 레지스터는 상기 PCI 레지스터 내부에 위치하고,
    상기 어드레스 변환기는 상기 PCI 레지스터로부터 상기 오프셋을 리드하고, 리드된 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 PCI 장치.
  6. 제1항에 있어서,
    상기 PCI 호스트로부터 전송된 데이터는 상기 오프셋을 포함하고,
    상기 어드레스 변환기는 상기 데이터에 포함된 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 PCI 장치.
  7. PCI 호스트가 액세스하는 메모리 영역을 결정하는 베이스 어드레스 레지스터(base address register(BAR))를 포함하는 PCI 레지스터;
    상기 PCI 호스트로부터 전송된 제1오프셋을 저장하고, 상기 PCI 호스트로부터 전송된 제2오프셋을 저장하는 오프셋 레지스터(offset register);
    상기 PCI 호스트가 상기 제1오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 제1오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제1메모리 영역으로 변경하고,
    상기 PCI 호스트가 상기 제2오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 제2오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 어드레스 변환기(address translation unit(ATU)); 및
    상기 제1메모리 영역과 상기 제2메모리 영역을 포함하고, 상기 PCI 호스트로부터 전송된 데이터를 저장하거나 저장된 데이터를 상기 PCI 호스트로 리드하는 장치 메모리를 포함하는 PCI 장치.
  8. PCI 버스;
    상기 PCI 버스를 통해 접속된 적어도 하나의 PCI 장치; 및
    상기 PCI 버스를 통해 상기 적어도 하나의 PCI 장치와 연결된 PCI 호스트를 포함하고,
    상기 PCI 장치는,
    상기 PCI 호스트가 액세스하는 제1메모리 영역을 결정하는 베이스 어드레스 레지스터(base address register(BAR))를 포함하는 PCI 레지스터;
    상기 PCI 호스트로부터 전송된 오프셋(offset)을 저장하는 오프셋 레지스터(offset register);
    상기 PCI 호스트가 상기 오프셋을 상기 오프셋 레지스터로 라이트하는 동작을 감지하고, 상기 오프셋 레지스터에 저장된 상기 오프셋에 기초하여 상기 PCI 호스트의 액세스 영역을 제2메모리 영역으로 변경하는 어드레스 변환기(address tranlation unit(ATU)); 및
    상기 제1메모리 영역과 상기 제2메모리 영역을 포함하고, 상기 PCI 호스트로부터 전송된 데이터를 저장하거나 저장된 데이터를 상기 PCI 호스트로 전송하는 장치 메모리를 포함하는 PCI 시스템.
  9. 제8항에 있어서,
    상기 베이스 어드레스 레지스터는 베이스 어드레스(base address)를 포함하고,
    상기 제1메모리 영역은 상기 베이스 어드레스와 상기 베이스 어드레스 레지스터의 사이즈에 기초하여 결정되고,
    상기 제2메모리 영역은 상기 베이스 어드레스, 상기 오프셋, 및 상기 베이스 어드레스 레지스터의 사이즈에 기초하여 결정되는 PCI 시스템.
  10. 제8항에 있어서, 상기 PCI 장치는,
    상기 PCI 호스트의 액세스 영역의 변경 상태를 저장하는 상태 레지스터; 및
    상기 상태 레지스터로부터 상기 변경 상태를 수신받고, PCI 호스트로 상태 신호를 전송하는 인터럽트 발생기를 더 포함하는 PCI 시스템.

KR1020150026426A 2014-11-20 2015-02-25 Pci 장치와 이를 포함하는 pci 시스템 KR102255216B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150026426A KR102255216B1 (ko) 2014-11-20 2015-02-25 Pci 장치와 이를 포함하는 pci 시스템
US14/938,994 US10002085B2 (en) 2014-11-20 2015-11-12 Peripheral component interconnect (PCI) device and system including the PCI

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN5837/CHE/2014 2014-11-20
IN5837CH2014 2014-11-20
KR1020150026426A KR102255216B1 (ko) 2014-11-20 2015-02-25 Pci 장치와 이를 포함하는 pci 시스템

Publications (2)

Publication Number Publication Date
KR20160060527A KR20160060527A (ko) 2016-05-30
KR102255216B1 true KR102255216B1 (ko) 2021-05-24

Family

ID=56010358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150026426A KR102255216B1 (ko) 2014-11-20 2015-02-25 Pci 장치와 이를 포함하는 pci 시스템

Country Status (2)

Country Link
US (1) US10002085B2 (ko)
KR (1) KR102255216B1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102336443B1 (ko) 2015-02-04 2021-12-08 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
US10382534B1 (en) 2015-04-04 2019-08-13 Cisco Technology, Inc. Selective load balancing of network traffic
US9760513B2 (en) * 2015-09-22 2017-09-12 Cisco Technology, Inc. Low latency efficient sharing of resources in multi-server ecosystems
US11005682B2 (en) 2015-10-06 2021-05-11 Cisco Technology, Inc. Policy-driven switch overlay bypass in a hybrid cloud network environment
US9792171B2 (en) 2015-10-26 2017-10-17 International Business Machines Corporation Multiple reset modes for a PCI host bridge
US10523657B2 (en) 2015-11-16 2019-12-31 Cisco Technology, Inc. Endpoint privacy preservation with cloud conferencing
US10659283B2 (en) 2016-07-08 2020-05-19 Cisco Technology, Inc. Reducing ARP/ND flooding in cloud environment
US10263898B2 (en) 2016-07-20 2019-04-16 Cisco Technology, Inc. System and method for implementing universal cloud classification (UCC) as a service (UCCaaS)
CN106681946A (zh) * 2016-12-05 2017-05-17 西安莫贝克半导体科技有限公司 一种半导体存储适配卡及具有该半导体存储适配卡的存储装置
US11044162B2 (en) 2016-12-06 2021-06-22 Cisco Technology, Inc. Orchestration of cloud and fog interactions
US10326817B2 (en) 2016-12-20 2019-06-18 Cisco Technology, Inc. System and method for quality-aware recording in large scale collaborate clouds
US10334029B2 (en) 2017-01-10 2019-06-25 Cisco Technology, Inc. Forming neighborhood groups from disperse cloud providers
US10552191B2 (en) 2017-01-26 2020-02-04 Cisco Technology, Inc. Distributed hybrid cloud orchestration model
US10892940B2 (en) 2017-07-21 2021-01-12 Cisco Technology, Inc. Scalable statistics and analytics mechanisms in cloud networking
CN110007973B (zh) * 2019-03-26 2021-07-16 联想(北京)有限公司 一种信息处理方法及电子设备
JP6607332B1 (ja) * 2019-05-15 2019-11-20 富士通クライアントコンピューティング株式会社 中継装置、プログラム、及び情報処理システム
CN112732166B (zh) * 2019-10-28 2024-06-18 华为技术有限公司 访问固态硬盘的方法及装置
CN112445729B (zh) * 2020-11-30 2024-04-16 深圳开立生物医疗科技股份有限公司 操作地址确定方法、PCIe系统、电子设备及存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913045A (en) 1995-12-20 1999-06-15 Intel Corporation Programmable PCI interrupt routing mechanism
US5953511A (en) * 1997-04-08 1999-09-14 National Instruments Corporation PCI bus to IEEE 1394 bus translator
US6128718A (en) * 1997-08-28 2000-10-03 Intel Corporation Apparatus and method for a base address register on a computer peripheral device supporting configuration and testing of address space size
US6292855B1 (en) 1998-12-18 2001-09-18 Lsi Logic Corporation Method to allow hardware configurable data structures
US7457897B1 (en) 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
US6658521B1 (en) * 2000-12-22 2003-12-02 International Business Machines Corporation Method and apparatus for address translation on PCI bus over infiniband network
US6832278B2 (en) 2001-03-15 2004-12-14 Microsoft Corporation PCI bar target operation region
US6931457B2 (en) 2002-07-24 2005-08-16 Intel Corporation Method, system, and program for controlling multiple storage devices
US7543096B2 (en) 2005-01-20 2009-06-02 Dot Hill Systems Corporation Safe message transfers on PCI-Express link from RAID controller to receiver-programmable window of partner RAID controller CPU memory
US7281077B2 (en) 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7702827B2 (en) 2007-06-29 2010-04-20 International Business Machines Corporation System and method for a credit based flow device that utilizes PCI express packets having modified headers wherein ID fields includes non-ID data
JP2009020696A (ja) * 2007-07-11 2009-01-29 Toshiba Corp 情報処理装置及びシステム
KR101172956B1 (ko) * 2007-08-24 2012-08-09 후지쯔 가부시끼가이샤 Pci 디바이스의 i/o 공간 요구 억지 방법
US8762620B2 (en) 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
US7934033B2 (en) 2008-03-25 2011-04-26 Aprius, Inc. PCI-express function proxy
US8225019B2 (en) 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
US8122177B1 (en) 2009-05-19 2012-02-21 Xilinx, Inc. Direct memory access technique for use with PCIe endpoints
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
WO2013101012A1 (en) 2011-12-29 2013-07-04 Intel Corporation Accessing configuration and status registers for a configuration space
US9146890B1 (en) * 2013-01-25 2015-09-29 Pmc—Sierra Us, Inc. Method and apparatus for mapped I/O routing in an interconnect switch
US9021141B2 (en) * 2013-08-20 2015-04-28 Lsi Corporation Data storage controller and method for exposing information stored in a data storage controller to a host system
WO2015100672A1 (zh) * 2013-12-31 2015-07-09 华为技术有限公司 一种扩展PCIe总线域的方法和装置
US9753883B2 (en) * 2014-02-04 2017-09-05 Netronome Systems, Inc. Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory
KR102320044B1 (ko) * 2014-10-02 2021-11-01 삼성전자주식회사 Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템

Also Published As

Publication number Publication date
KR20160060527A (ko) 2016-05-30
US10002085B2 (en) 2018-06-19
US20160147676A1 (en) 2016-05-26

Similar Documents

Publication Publication Date Title
KR102255216B1 (ko) Pci 장치와 이를 포함하는 pci 시스템
US10241951B1 (en) Device full memory access through standard PCI express bus
US10282192B1 (en) Updating device code through a bus
US11768791B2 (en) Flattening portal bridge
JP5085334B2 (ja) Usb・otgコントローラ
US8645594B2 (en) Driver-assisted base address register mapping
US9336173B1 (en) Method and switch for transferring transactions between switch domains
US20140164666A1 (en) Server and method for sharing peripheral component interconnect express interface
JP2017220237A (ja) メモリモジュール、これを含むシステム及びその動作方法
US10061707B2 (en) Speculative enumeration of bus-device-function address space
US10754808B2 (en) Bus-device-function address space mapping
KR101925870B1 (ko) Ssd 콘트롤러 및 그의 제어 방법
US9026698B2 (en) Apparatus, system and method for providing access to a device function
EP2423826A2 (en) Computer system, i/o device control method, and i/o drawer
WO2019047579A1 (zh) 数据访问的方法及装置
WO2022213865A1 (zh) 计算机设备、虚拟化加速设备、数据传输方法及存储介质
US11372674B2 (en) Method, apparatus and system for handling non-posted memory write transactions in a fabric
US7007126B2 (en) Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
US9330024B1 (en) Processing device and method thereof
US20080046711A1 (en) Computer system and boot code accessing method thereof
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
KR20180023543A (ko) 시리얼 통신으로 메모리를 제공하기 위한 장치 및 방법
CN113778934B (zh) 基于PCIe的高速实时传输系统
CN101676894B (zh) 面向集中地址译码的非pci片上总线的pci虚拟化装置及方法
KR20200143922A (ko) 메모리 카드 및 이를 이용한 데이터 처리 방법

Legal Events

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