KR102320044B1 - Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템 - Google Patents

Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템 Download PDF

Info

Publication number
KR102320044B1
KR102320044B1 KR1020140133213A KR20140133213A KR102320044B1 KR 102320044 B1 KR102320044 B1 KR 102320044B1 KR 1020140133213 A KR1020140133213 A KR 1020140133213A KR 20140133213 A KR20140133213 A KR 20140133213A KR 102320044 B1 KR102320044 B1 KR 102320044B1
Authority
KR
South Korea
Prior art keywords
map table
address
addresses
host
pci
Prior art date
Application number
KR1020140133213A
Other languages
English (en)
Other versions
KR20160039910A (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 KR1020140133213A priority Critical patent/KR102320044B1/ko
Priority to US14/864,461 priority patent/US10102125B2/en
Publication of KR20160039910A publication Critical patent/KR20160039910A/ko
Application granted granted Critical
Publication of KR102320044B1 publication Critical patent/KR102320044B1/ko

Links

Images

Classifications

    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시 예에 따른 PCI(peripheral component interconnect) 장치는, 복수의 페이지 버퍼들을 포함하는 제1메모리와, 복수의 기준 주소들을 포함하는 기준 주소 레지스터(base address register)와, 상기 복수의 기준 주소들 각각을 복수의 가상 주소들 중에서 대응되는 어느 하나로 각각 변환하는 제1주소 변환기(address translation unit)와, 상기 복수의 가상 주소들 각각에 상응하여 각각이 액세스되는 복수의 맵 테이블 엔트리들(map table entries)을 포함하고, 상기 복수의 가상 주소들 각각을 상기 복수의 페이지 버퍼들의 물리 주소들 중에서 어느 하나의 물리 주소에 각각 맵핑하는 맵 테이블을 포함하고, 상기 제1주소 변환기는, 상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 상기 물리 주소들 중에서 대응되는 어느 하나로 각각 변환한다.

Description

PCI 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템{PCI DEVICE, INTERFACE SYSTEM INCLUDING SAME, AND COMPUTING SYSTEM INCLUDING SAME}
본 발명의 개념에 따른 실시 예는 PCI(peripheral component interconnect) 장치에 관한 것으로, PCI 호스트가 상기 PCI 장치의 내부 메모리에 액세스할 때, 상기 PCI 장치가 가상 주소를 갖는 맵 테이블(또는 가상 메모리)를 상기 PCI 호스트에 제공하는 PCI 장치와 이를 포함하는 PCI 인터페이스 시스템, 및 컴퓨팅 시스템에 관한 것이다.
PCI(peripheral component interconnect)는 컴퓨터 시스템의 중앙 처리 장치와 주변 기기를 연결하는 로컬 버스 규격이다.
현재 널리 사용되는 PCI 익스프레스(PCI Express(PCIe))는 PCI 버스 표준 또는 PCI-X(PCI eXtended) 버스 표준을 대체하기 위해 디자인된 고속 직렬 컴퓨터 확장(high-speed serial computer expansion) 버스 표준으로서, 보다 향상된 속도를 갖는 인터페이스이다.
종래에는, PCI 호스트가 요청한 데이터가 PCI 장치 내부 메모리의 연속된 위치에 저장되어 있지 않고 분산되어 저장되어 있는 경우, 상기 내부 메모리에 연속적인 공간을 별도로 할당하고, 상기 연속적인 공간에 상기 데이터를 복제한 후, 복제한 상기 데이터를 상기 PCI 호스트에 제공한다.
또한, PCI 호스트가 요청한 데이터가 반복된 값인 경우, 반복되는 크기만큼의 내부 메모리 공간을 할당하고, 상기 데이터를 반복하여 복제한 후, 복제한 상기 데이터를 상기 PCI 호스트에 제공한다.
종래의 방식에 의하면, PCI 장치 내부 메모리의 공간이 불필요하게 낭비되고, PCI 호스트와 PCI 장치 간의 트랜잭션(transaction)으로 인하여 시스템의 성능이 저하되는 문제가 발생할 수 있다.
본 발명이 이루고자 하는 기술적인 과제는, PCI 호스트가 PCI 장치의 내부 메모리에 액세스할 때, 가상 주소를 이용하여 맵 테이블(또는 가상 메모리)에 액세스하고, 상기 PCI 장치가, 상기 가상 주소에 해당하는 맵 테이블 엔트리 내에 저장된 물리 주소에 해당하는 페이지 버퍼에 저장된 데이터를, 상기 PCI 호스트에 제공하는 것이다. 특히, 상기 PCI 호스트에 의해 처리될 데이터가 상기 내부 메모리 내의 이산적인 위치에 저장되거나, 데이터가 반복되는 상황에서 PCI 장치 내부 메모리의 공간 효율성을 향상시킬 수 있는 PCI 장치, 이를 포함하는 PCI 인터페이스 시스템과 컴퓨팅 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 PCI 장치는, 복수의 페이지 버퍼들을 포함하는 제1메모리와, 복수의 기준 주소들을 포함하는 기준 주소 레지스터(base address register)와, 상기 복수의 기준 주소들 각각을 대응하는 복수의 가상 주소들 각각으로 변환하는 제1주소 변환기(address translation unit)와, 상기 복수의 가상 주소들 각각에 상응하여 각각이 액세스되는 복수의 맵 테이블 엔트리들(map table entries)을 포함하고, 상기 복수의 가상 주소들 각각을 상기 복수의 페이지 버퍼들의 물리 주소들 중에서 어느 하나의 물리 주소에 각각 맵핑하는 맵 테이블을 포함하고, 상기 제1주소 변환기는, 상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 대응되는 물리 주소로 변환한다.
실시 예에 따라, 상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 대응되는 물리 주소로 변환하는 제2주소 변환기를 더 포함할 수 있다.
상기 복수의 맵 테이블 엔트리들 각각은, 호스트 오프-셋을 저장하는 호스트 오프-셋 필드와, 상기 물리 주소들 중 어느 하나를 저장하는 물리 주소 필드를 포함한다.
상기 PCI 장치는 맵 테이블 관리 유닛(map table management unit)을 더 포함하고, 상기 맵 테이블 관리 유닛은, 상기 복수의 맵 테이블 엔트리들 각각에 액세스하기 위하여, 상기 복수의 가상 주소들 각각을 상기 복수의 맵 테이블 엔트리들 각각에 할당하고, 상기 복수의 맵 테이블 엔트리들 각각에 상기 호스트 오프-셋과 상기 어느 하나의 물리 주소를 저장한다.
실시 예에 따라, 호스트에 의해 처리될 데이터가 상기 제1메모리 내의 이산적인 위치들에 저장되어 있을 때, 상기 맵 테이블 관리 유닛은, 연속적인 복수의 맵 테이블 엔트리들 각각의 호스트 오프-셋 필드에 호스트 오프-셋들 각각을 순차적으로 저장하고, 상기 연속적인 복수의 맵 테이블 엔트리들 각각의 물리 주소 필드에, 상기 데이터가 저장된 페이지 버퍼들의 물리 주소들을 상기 데이터의 순서에 따라 각각 저장한다.
다른 실시 예에 따라, 호스트에 의해 처리될 데이터가, 상기 페이지 버퍼들 중에서 어느 하나에 저장된 데이터를 반복적으로 포함하는 경우, 상기 맵 테이블 관리 유닛은, 반복되는 횟수에 상응하는 수의 맵 테이블 엔트리들 각각의 물리 주소 필드에, 상기 어느 하나의 페이지 버퍼의 물리 주소를 저장한다.
상기 복수의 맵 테이블 엔트리들 각각은, 상기 물리 주소 필드에 저장된 물리 주소에 상응하는 페이지 버퍼에 대하여, 리드 권한과 라이트 권한 중에서 적어도 어느 하나를 설정하는 권한 필드(attribute field)를 더 포함할 수 있다.
상기 PCI 장치는 제2메모리를 더 포함하고, 상기 맵 테이블은 상기 제1메모리와 상기 제2메모리 중에서 어느 하나에 저장될 수 있다.
실시 예에 따라, 상기 맵 테이블이 상기 제1메모리에 저장될 때, 상기 제2메모리는 상기 맵 테이블에 포함된 상기 복수의 맵 테이블 엔트리들 중에서 적어도 어느 하나를 상기 제1메모리로부터 로드한다.
상기 PCI 장치는 SSD(solid state drive), UFS(universal flash storage), 및 HDD(hard disk drive) 중에서 어느 하나일 수 있다.
본 발명의 실시 예에 따른 인터페이스 시스템은, PCI 버스와, 상기 PCI 버스와 접속되는 적어도 하나의 PCI 장치와, 호스트의 요청에 따라, 상기 PCI 버스를 통하여 상기 호스트와 상기 적어도 하나의 PCI 장치를 접속시키기 위한 호스트 컨트롤러를 포함하고, 상기 적어도 하나의 PCI 장치는, 복수의 페이지 버퍼들을 포함하는 제1메모리와, 복수의 기준 주소들을 포함하는 기준 주소 레지스터와, 상기 복수의 기준 주소들 각각을 대응하는 복수의 가상 주소들 각각으로 변환하는 제1주소 변환기와, 상기 복수의 가상 주소들 각각에 상응하여 각각이 액세스되는 복수의 맵 테이블 엔트리들을 포함하고, 상기 복수의 가상 주소들 각각을 상기 복수의 페이지 버퍼들의 물리 주소들 중에서 어느 하나의 물리 주소에 각각 맵핑하는 맵 테이블을 포함하고, 상기 제1주소 변환기는, 상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 대응되는 물리 주소로 변환한다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 프로세서와, 상기 프로세서의 작동에 관련된 명령과 데이터를 저장하는 시스템 메모리와, PCI 버스를 통해 상기 프로세서와 접속되는 적어도 하나의 PCI 장치를 포함하고, 상기 적어도 하나의 PCI 장치는, 복수의 페이지 버퍼들을 포함하는 제1메모리와, 복수의 기준 주소들을 포함하는 기준 주소 레지스터와, 상기 복수의 기준 주소들 각각을 대응하는 복수의 가상 주소들 각각으로 변환하는 제1주소 변환기와, 상기 복수의 가상 주소들 각각에 상응하여 각각이 액세스되는 복수의 맵 테이블 엔트리들을 포함하고, 상기 복수의 가상 주소들 각각을 상기 복수의 페이지 버퍼들의 물리 주소들 중에서 어느 하나의 물리 주소에 각각 맵핑하는 맵 테이블을 포함한다. 상기 제1주소 변환기는, 상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 대응되는 물리 주소로 변환하고, 상기 복수의 맵 테이블 엔트리들 각각은, 호스트 오프-셋을 저장하는 호스트 오프-셋 필드와, 상기 물리 주소들 중 어느 하나를 저장하는 물리 주소 필드를 포함한다.
상기 적어도 하나의 PCI 장치는 맵 테이블 관리 유닛을 더 포함한다.
실시 예에 따라, 상기 프로세서에 의해 처리될 데이터가 상기 제1메모리 내의 이산적인 위치들에 저장되어 있을 때, 상기 맵 테이블 관리 유닛은, 연속적인 복수의 맵 테이블 엔트리들 각각의 호스트 오프-셋 필드에 상기 복수의 호스트 오프-셋들 각각을 순차적으로 저장하고, 상기 연속적인 복수의 맵 테이블 엔트리들 각각의 물리 주소 필드에, 상기 데이터가 저장된 페이지 버퍼들의 물리 주소들을 상기 데이터의 순서에 따라 각각 저장한다.
다른 실시 예에 따라, 상기 프로세서에 의해 처리될 데이터가, 상기 페이지 버퍼들 중에서 어느 하나에 저장된 데이터를 반복적으로 포함하는 경우, 상기 맵 테이블 관리 유닛은, 반복되는 횟수에 상응하는 수의 맵 테이블 엔트리들 각각의 물리 주소 필드에, 상기 어느 하나의 페이지 버퍼의 물리 주소를 저장한다.
상기 컴퓨팅 시스템은, PC(personal computer)와 랩탑(laptop) 컴퓨터 중에서 어느 하나일 수 있다.
본 발명의 실시 예에 따른 PCI 장치는, PCI 호스트가 상기 PCI 장치의 내부 메모리에 저장된 데이터를 처리하기 위해 액세스할 때, 가상 주소를 갖는 맵 테이블에 액세스하도록 한다. 상기 PCI 장치는, 상기 가상 주소에 해당하는 맵 테이블 엔트리 내의 물리 주소를 갖는 페이지 버퍼의 데이터를 상기 PCI 호스트에 제공한다. 따라서, 상기 PCI 호스트에 의해 처리될 데이터가 PCI 장치 내부 메모리의 이산적인 위치에 저장되거나, 어느 하나의 페이지 버퍼에 저장된 데이터를 반복적으로 포함할 때, 상기 맵 테이블이 효과적으로 이용될 수 있다. 따라서, PCI 장치 내부 메모리의 공간 효율성과 시스템의 성능이 향상되는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 PCI 장치와 이를 포함하는 인터페이스 시스템의 개략적인 블록도이다.
도 2는 도 1에 도시된 PCI 장치의 맵 테이블을 이용하여 데이터를 처리하는 과정에 대한 일 실시 예이다.
도 3은 도 2에 도시된 실시 예에 따른 맵 테이블 엔트리의 내부 필드를 나타낸다.
도 4는 도 1에 도시된 PCI 장치의 맵 테이블을 이용하여 데이터를 처리하는 과정에 대한 다른 실시 예이다.
도 5는 도 4에 도시된 실시 예에 따른 맵 테이블 엔트리의 내부 필드를 나타낸다.
도 6은 본 발명의 다른 실시 예에 따른 PCI 장치와 이를 포함하는 인터페이스 시스템의 개략적인 블록도이다.
도 7은 도 6에 도시된 PCI 장치의 맵 테이블을 이용하여 데이터를 처리하는 과정에 대한 일 실시 예이다.
도 8은 도 6에 도시된 PCI 장치의 맵 테이블을 이용하여 데이터를 처리하는 과정에 대한 다른 실시 예이다.
도 9는 도 2와 도 7에 도시된 실시 예를 나타낸 플로우차트이다.
도 10은 도 4와 도 8에 도시된 실시 예를 나타낸 플로우차트이다.
도 11은 본 발명의 실시 예에 따른 PCI 장치와 인터페이스 시스템을 포함하는 컴퓨팅 시스템의 개략적인 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 명세서에서 PCI(peripheral component interconnect)는, PCI, PCI-X(PCI-extended), 및 PCIe(PCI express)를 포함하는 의미로 사용된다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 PCI 장치와 이를 포함하는 인터페이스 시스템의 개략적인 블록도이다.
도 1을 참조하면, 본 발명의 실시 예에 따른 인터페이스 시스템(interface system; 10A)은 PCI(peripheral component interconnect) 장치(100A), PCI 호스트 컨트롤러(PCI host controller; 200), 및 PCI 버스(PCI bus; 300)를 포함한다.
인터페이스 시스템(10A)은 PCI 인터페이스 시스템일 수 있다. 도 1에는 하나의 PCI 장치(100A)를 포함하는 인터페이스 시스템(10A)이 도시되어 있으나, 인터페이스 시스템(10A)은 하나 또는 그 이상의 PCI 장치들을 포함할 수 있다.
PCI 장치(100A)는 PCI 버스(300)를 통해 PCI 호스트 컨트롤러(200)와 접속될 수 있다. PCI 장치(100A)는 PCI 장치 컨트롤러(PCI device controller; 110), 주소 변환 블록(address translation block; 120), 메모리(130), 메모리 컨트롤러(140), 캐시(150), 내부 버스(160)를 포함한다.
PCI 장치 컨트롤러(110)는 PCI 장치(100A)의 작동을 제어할 수 있다. PCI 장치 컨트롤러(110)는 PCI 레지스터(112)를 포함한다.
PCI 레지스터(112)는, PCI 장치(100A)에 대한 정보를 포함한다. 따라서, PCI 호스트 컨트롤러(200)는 PCI 레지스터(112)를 이용하여 PCI 장치(100A)를 인식할 수 있고, PCI 호스트(미도시)는 PCI 장치(100A)에 액세스할 수 있다. PCI 레지스터(112)는 기준 주소 레지스터(base address register(BAR); 114)를 포함한다.
BAR(114)는 복수의 기준 주소들을 포함할 수 있다. 상기 복수의 기준 주소들은, 인터페이스 시스템(10A) 또는 컴퓨팅 시스템의 초기화 과정에서 BIOS(basic input output system)에 의해 설정될 수 있다. 상기 PCI 호스트는, 상기 복수의 기준 주소들 중 어느 하나와 주소 오프-셋을 이용하여, PCI 장치(100A) 내의 메모리 공간 및/또는 입/출력 공간에 액세스할 수 있다.
주소 변환 블록(120)은 제1주소 변환기(address translation unit(ATU); 122)와 맵 테이블 관리 유닛(map table management unit; 126)을 포함할 수 있다.
제1ATU(122)는, 상기 복수의 기준 주소들 중 어느 하나와 상기 호스트 오프-셋을 상응하는 가상 주소로 변환할 수 있다. 상기 가상 주소는, 맵 테이블(170)에 포함된 복수의 맵 테이블 엔트리들(MTE1~MTEn; n은 자연수) 중에서 어느 하나의 맵 테이블 엔트리(예컨대, MTE1)에 액세스하기 위한 주소이다.
실시 예에 따라, 제1ATU(122)는 맵 테이블(170)을 이용하여 상기 가상 주소를 메모리(130) 내의 대응되는 페이지 버퍼(예컨대, PB1)의 물리 주소로 변환할 수 있다.
다른 실시 예에 따라, 주소 변환 블록(120)은, 맵 테이블(170)을 이용하여 상기 가상 주소를 메모리(130) 내의 대응되는 상기 페이지 버퍼(PB1)의 상기 물리 주소로 변환하기 위한 제2ATU(124)를 더 포함할 수 있다.
맵 테이블 관리 유닛(126)은, 맵 테이블(170) 내의 맵 테이블 엔트리들(MTE1~MTEn) 각각에 액세스하기 위여, 서로 다른 가상 주소들을 각각 할당할 수 있다.
맵 테이블 관리 유닛(126)은 맵 테이블(170)을 관리(예컨대, 맵 테이블의 생성, 수정, 삭제 등)할 수 있다. 맵 테이블 관리 유닛(126)은 하드웨어 또는 펌웨어(firmware)로 구현될 수 있다.
실시 예에 따라, 제1ATU(122), 제2ATU(124), 및 맵 테이블 관리 유닛(126)은 하나의 칩(chip) 안에 구현되거나, 별도의 칩으로 구현될 수 있다.
메모리(130)는 메모리 컨트롤러(140)의 제어에 따라 작동한다. 메모리(130)는 데이터를 저장하기 위한 페이지 버퍼 블록(132)을 포함하고, 페이지 버퍼 블록(132)은 복수의 페이지 버퍼들(PB1~PBm; m은 자연수)을 포함할 수 있다. 메모리(130)는 맵 테이블 관리 유닛(126)에 의해 생성되거나 수정된 맵 테이블(170)을 저장할 수 있다.
메모리(130)는 휘발성 메모리(예컨대, DRAM(dynamic random access memory))일 수 있으나, 이에 한정되는 것은 아니다.
맵 테이블(170)은 주소 변환 블록(120)이 가상 주소를 대응되는 물리 주소로 변환하기 위한 매핑 정보를 포함할 수 있다. 맵 테이블(170)은 복수의 맵 테이블 엔트리들(MTE1~MTEn)을 포함한다.
맵 테이블(170)은, PCI 장치(100A)의 초기화 과정에서 맵 테이블 관리 유닛(126)에 의해 생성될 수 있다.
캐시(150)는 맵 테이블(170)에 포함된 맵 테이블 엔트리들(MTE1~ MTEn)의 전부 또는 일부(MTE1~MTEk; k는 n보다 작거나 같은 자연수)를 메모리(130)로부터 로드할 수 있다.
캐시(150)에 로드된 맵 테이블 엔트리들(MTE1~MTEk)은 맵 테이블 관리 유닛(126)에 의해 업데이트될 수 있다. 맵 테이블 관리 유닛(126)의 업데이트 과정은, 맵 테이블 엔트리들(MTE1~MTEk)에 새로운 정보를 저장하거나, 기 저장된 정보를 삭제하는 과정을 의미할 수 있다. 업데이트된 맵 테이블 엔트리들(MTE1~MTEk)은 메모리(130)에 저장될 수 있다.
캐시(150)는 메모리(130)보다 처리 속도가 빠른, 레지스터나 SRAM(static random access memory)으로 구현될 수 있으나, 이에 한정되는 것은 아니다.
도 2는 도 1에 도시된 PCI 장치의 맵 테이블을 이용하여 데이터를 처리하는 과정에 대한 일 실시 예이다.
도 1과 도 2를 참조하면, PCI 호스트(미도시)는, PCI 레지스터(112)의 BAR(114)에 포함된 어느 하나의 기준 주소와 주소 오프-셋을 이용하여 변환된, 가상 주소에 상응하는 맵 테이블 엔트리(예컨대, 제1맵 테이블 엔트리(MTE1))에 액세스할 수 있다.
예컨대, 상기 PCI 호스트에 의해 처리될 데이터는 제1데이터(DATA1), 제2데이터(DATA2), 제3데이터(DATA3), 및 제4데이터(DATA4)를 순차적으로 포함한다고 가정한다.
도 2에 도시된 바와 같이, 제1데이터(DATA1)는 제5페이지 버퍼(PB5)에 저장되어 있고, 제2데이터(DATA2)는 제2페이지 버퍼(PB2)에 저장되어 있으며, 제3데이터(DATA3)는 제4페이지 버퍼(PB4)에 저장되어 있고, 제4데이터(DATA4)는 제7페이지 버퍼(PB7)에 저장되어 있다고 가정한다. 즉, 각각의 데이터(DATA1~DATA4)가 메모리(130A)의 페이지 버퍼 블록(132A) 내의 이산적인 위치에 저장되어 있을 수 있다.
캐시(150A)는, 메모리(130A)에 저장된 맵 테이블(170)의 맵 테이블 엔트리들(MTE1~MTEn) 중에서 일부 또는 전부(MTE1~MTEk)를 로드한다.
맵 테이블 관리 유닛(126)은, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4) 각각에 각 데이터(DATA1~DATA4)의 순서에 상응하는 물리 주소를 저장할 수 있다. 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4) 각각이 이미 상기 물리 주소들 각각을 저장하는 경우, 맵 테이블 관리 유닛(126)의 저장 작동은 생략될 수 있다.
상기 PCI 호스트는, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4)에 연속적으로 액세스할 수 있다. 즉, 호스트 관점(host view(HV)) 에서는, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4)가 연속적이므로, 상기 PCI 호스트는 각각의 데이터(DATA1~DATA4)가 연속적으로 저장된 것으로 인식할 수 있다. PCI 장치(100A)는 제1맵 테이블 엔트리(MTE1)의 가상 주소와 상기 가상 주소에 대한 호스트 오프-셋을 이용하여, 각 데이터 (DATA1~DATA4)를 상기 PCI 호스트에 연속적으로 제공할 수 있다. 따라서, 상기 PCI 호스트와 PCI 장치(100A) 사이의 트랜잭션(transaction)은 최소화될 수 있다.
도 3은 도 2에 도시된 실시 예에 따른 맵 테이블 엔트리의 내부 필드를 나타낸다.
도 1부터 도 3을 참조하면, 맵 테이블 엔트리들(MTE1~MTE4) 각각은 호스트 오프-셋 필드(HOF)와 물리 주소 필드(PAF)를 포함한다.
호스트 오프-셋 필드(HOF)는 제1ATU(122)에 의해 변환된 가상 주소에 대한 호스트 오프-셋을 저장한다. 상기 호스트 오프-셋은 상기 PCI 호스트와 PCI 장치(100A) 간의 가상 주소 액세스 단위를 의미한다.
물리 주소 필드(PAF)는 페이지 버퍼들(PB1~PBm) 중에서 어느 하나에 액세스하기 위한 물리 주소를 저장할 수 있다.
도 2의 실시 예에 의하면, 제1맵 테이블 엔트리(MTE1)의 물리 주소 필드(PAF)에는 제5페이지 버퍼(PB5)의 물리 주소(PMA1)가 저장되고, 제2맵 테이블 엔트리(MTE2)의 물리 주소 필드(PAF)에는 제2페이지 버퍼(PB2)의 물리 주소(PMA2)가 저장되며, 제3맵 테이블 엔트리(MTE3)의 물리 주소 필드(PAF)에는 제4페이지 버퍼(PB4)의 물리 주소(PMA3)가 저장되고, 제4맵 테이블 엔트리(MTE4)의 물리 주소 필드(PAF)에는 제7페이지 버퍼(PB7)의 물리 주소 (PMA4)가 저장될 수 있다,
즉, 각각의 물리 주소들(PMA1~PMA4)은 각각의 데이터(DATA1~DATA4)의 순서에 대응한다.
실시 예에 따라, 맵 테이블 엔트리들(MTE1~MTE4) 각각은, 페이지 버퍼의 리드 권한 및/또는 라이트 권한을 설정하기 위한 권한 필드(attribute field(ATF))를 더 포함할 수 있다. 예컨대, 권한 필드(ATF)가 2-비트를 가진다고 가정하면, 상기 2-비트 중에서 상위 1-비트는 리드 권한을 설정하기 위한 비트이고, 하위 1-비트는 라이트 권한을 설정하기 위한 비트일 수 있다.
예를 들어, 제1맵 테이블 엔트리(MTE1)의 권한 필드(ATF)의 상기 상위 1-비트가 '1(또는 0)'로 설정되어 있을 때, 제1물리 주소(PMA1)에 해당하는 페이지 버퍼(PB5)의 데이터(DATA1)는 리드될 수 있다. 제1맵 테이블 엔트리(MTE1)의 권한 필드(ATF)의 상기 하위 1-비트가 '1(또는 0)'로 설정되어 있을 때, 제1물리 주소(PMA1)에 해당하는 페이지 버퍼(PB5)에는 데이터가 라이트될 수 있다.
반면, 제1맵 테이블 엔트리(MTE1)의 권한 필드(ATF)의 상기 상위 1-비트가 '0(또는 1)'으로 설정되어 있을 때, 제1물리 주소(PMA1)에 해당하는 페이지 버퍼(PB5)의 데이터(DATA1)는 리드될 수 없다. 제1맵 테이블 엔트리(MTE1)의 권한 필드(ATF)의 상기 하위 1-비트가 '0(또는 1)'으로 설정되어 있을 때, 제1물리 주소(PMA1)에 해당하는 페이지 버퍼(PB5)에는 데이터가 라이트될 수 없다.
도 4는 도 1에 도시된 PCI 장치의 맵 테이블을 이용하여 데이터를 처리하는 과정에 대한 다른 실시 예이다.
도 1과 도 4를 참조하면, PCI 호스트(미도시)는, PCI 레지스터(112)의 BAR(114)에 포함된 어느 하나의 기준 주소와 주소 오프-셋을 이용하여 변환된, 가상 주소에 상응하는 맵 테이블 엔트리(예컨대, 제1맵 테이블 엔트리(MTE1))에 액세스할 수 있다.
예컨대, 상기 PCI 호스트에 의해 처리될 데이터는 메모리(130B)의 어느 하나의 페이지 버퍼(예컨대, 제3페이지 버퍼(PB3))에 저장된 데이터(DATA)를 반복적으로 포함한다고 가정한다.
캐시(150B)는, 메모리(130B)에 저장된 맵 테이블(170)의 맵 테이블 엔트리들(MTE1~MTEn) 중에서 일부 또는 전부(MTE1~MTEk)를 로드한다.
예컨대, 상기 PCI 호스트에 의해 처리될 데이터가 제3페이지 버퍼(PB3)에 저장된 데이터(DATA)를 4번 반복하여 포함하는 경우, 맵 테이블 관리 유닛(126)은, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4) 각각에 제3페이지 버퍼(PB3)의 물리 주소를 저장할 수 있다. 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4) 각각이 이미 상기 물리 주소를 저장하는 경우, 맵 테이블 관리 유닛(126)의 저장 작동은 생략될 수 있다.
PCI 장치(100A)는 제1맵 테이블 엔트리(MTE1)의 가상 주소와 상기 가상 주소에 대한 호스트 오프-셋을 이용하여, 데이터(DATA)를 상기 PCI 호스트에 반복하여 제공할 수 있다.
도 5는 도 4에 도시된 실시 예에 따른 맵 테이블 엔트리의 내부 필드를 나타낸다.
도 1, 및 도 3부터 도 5를 참조하면, 도 5에 도시된 맵 테이블 엔트리들(MTE1~MTE4)은 도 3에 도시된 맵 테이블 엔트리들(MTE1~MTE4)과 실질적으로 동일한 구조를 갖는다.
도 4의 실시 예에 의하면, 맵 테이블 엔트리들(MTE1~MTE4) 각각의 물리 주소 필드(PAF)에는 동일한 물리 주소, 즉 제3페이지 버퍼(PB3)의 물리 주소(PMA1)가 저장된다.
맵 테이블 엔트리들(MTE1~MTE4) 각각에 저장된 물리 주소(PMA1)가 동일하므로, 권한 필드(ATF)에도 동일한 권한 값(ATT1)이 저장될 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 PCI 장치와 이를 포함하는 인터페이스 시스템의 개략적인 블록도이다.
도 1과 도 6을 참조하면, 도 6에 도시된 인터페이스 시스템(10B) 및 PCI 장치(100B)는, 메모리(131)와 RAM(random access memory; 151)을 제외하고는 도 1에 도시된 인터페이스 시스템(10A) 및 PCI 장치(100A)와 실질적으로 동일하다.
메모리(131)는 복수의 페이지 버퍼들(PB1~PBm)을 갖는 페이지 버퍼 블록(132)을 포함한다. 그러나, 도 1에 도시된 메모리(130)와는 달리, 맵 테이블(170)을 저장하지 않는다.
RAM(151)은 맵 테이블(170)을 저장할 수 있다. 예컨대, RAM(151)은 SRAM으로 구현될 수 있으나, 이에 한정되는 것은 아니다.
맵 테이블(170)에 저장된 복수의 맵 테이블 엔트리들(MTE1~MTEn)은 맵 테이블 관리 유닛(126)에 의해 업데이트될 수 있다. 맵 테이블 관리 유닛(126)의 업데이트 과정은, 맵 테이블 엔트리들(MTE1~MTEk)에 새로운 정보를 저장하거나, 기 저장된 정보를 삭제하는 과정을 의미할 수 있다. 업데이트된 맵 테이블 엔트리들(MTE1~MTEn)은 RAM(151)에 저장될 수 있다.
도 7은 도 6에 도시된 PCI 장치의 맵 테이블을 이용하여 데이터를 처리하는 과정에 대한 일 실시 예이다.
도 1부터 도 3, 도 6, 및 도 7을 참조하면, PCI 호스트(미도시)는, PCI 레지스터(112)의 BAR(114)에 포함된 어느 하나의 기준 주소와 주소 오프-셋을 이용하여 변환된, 가상 주소에 상응하는 맵 테이블 엔트리(예컨대, 제1맵 테이블 엔트리(MTE1))에 액세스할 수 있다.
도 2의 예시와 같이, 도 7에서도 상기 PCI 호스트에 의해 처리될 데이터가 제1데이터(DATA1), 제2데이터(DATA2), 제3데이터(DATA3), 및 제4데이터(DATA4)를 순차적으로 포함한다고 가정한다.
도 7에 도시된 바와 같이, 제1데이터(DATA1)는 제5페이지 버퍼(PB5)에 저장되어 있고, 제2데이터(DATA2)는 제2페이지 버퍼(PB2)에 저장되어 있으며, 제3데이터(DATA3)는 제4페이지 버퍼(PB4)에 저장되어 있고, 제4데이터(DATA4)는 제7페이지 버퍼(PB7)에 저장되어 있다고 가정한다. 즉, 각각의 데이터(DATA1~DATA4)가 메모리(131A)의 페이지 버퍼 블록(132A) 내의 이산적인 위치에 저장되어 있을 수 있다.
맵 테이블 관리 유닛(126)은, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4) 각각에, 각각의 데이터(DATA1~DATA4)의 순서에 상응하는 물리 주소를 저장할 수 있다. 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4) 각각이 이미 상기 물리 주소들 각각을 저장하는 경우, 맵 테이블 관리 유닛(126)의 저장 작동은 생략될 수 있다.
상기 PCI 호스트는, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4)에 연속적으로 액세스할 수 있다. 즉, 호스트 관점(host view(HV))에서는, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4)가 연속적이므로, 상기 PCI 호스트는 각각의 데이터(DATA1~DATA4)가 연속적으로 저장된 것으로 인식할 수 있다. PCI 장치(100A)는 제1맵 테이블 엔트리(MTE1)의 가상 주소와 상기 가상 주소에 대한 호스트 오프-셋을 이용하여, 각 데이터 (DATA1~ DATA4)를 상기 PCI 호스트에 연속적으로 제공할 수 있다. 따라서, 상기 PCI 호스트와 PCI 장치(100A) 사이의 트랜잭션(transaction)은 최소화될 수 있다.
도 7에 도시된 맵 테이블 엔트리들(MTE1~MTE4)의 내부 필드는 도 3에 도시된 맵 테이블 엔트리들(MTE1~MTE4)의 내부 필드와 실질적으로 동일하다. 따라서, 상술한 도 3의 맵 테이블 엔트리들(MTE1~MTE4)의 내부 필드에 대한 설명은 도 7에 도시된 맵 테이블 엔트리들(MTE1~MTE4)에 동일하게 적용될 수 있다.
도 8은 도 6에 도시된 PCI 장치의 맵 테이블을 이용하여 데이터를 처리하는 과정에 대한 다른 실시 예이다.
도 1, 및 도 4부터 도 8을 참조하면, PCI 호스트(미도시)는, PCI 레지스터(112)의 BAR(114)에 포함된 어느 하나의 기준 주소와 주소 오프-셋을 이용하여 변환된, 가상 주소에 상응하는 맵 테이블 엔트리(예컨대, 제1맵 테이블 엔트리(MTE1))에 액세스할 수 있다.
도 4의 예시와 같이, 도 8에서도 상기 PCI 호스트에 의해 처리될 데이터가 메모리(131B)의 어느 하나의 페이지 버퍼(예컨대, 제3페이지 버퍼 (PB3))에 저장된 데이터(DATA)를 반복적으로 포함한다고 가정한다.
예컨대, 상기 PCI 호스트에 의해 처리될 데이터가 제3페이지 버퍼(PB3)에 저장된 데이터(DATA)를 4번 반복하여 포함하는 경우, 맵 테이블 관리 유닛(126)은, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4) 각각에 제3페이지 버퍼(PB3)의 물리 주소를 저장할 수 있다. 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4) 각각이 이미 상기 물리 주소를 저장하는 경우, 맵 테이블 관리 유닛(126)의 저장 작동은 생략될 수 있다.
PCI 장치(100A)는 제1맵 테이블 엔트리(MTE1)의 가상 주소와 상기 가상 주소에 대한 호스트 오프-셋을 이용하여, 데이터(DATA)를 상기 PCI 호스트에 반복하여 제공할 수 있다.
도 8에 도시된 맵 테이블 엔트리들(MTE1~MTE4)의 내부 필드는 도 5에 도시된 맵 테이블 엔트리들(MTE1~MTE4)의 내부 필드와 실질적으로 동일하다. 따라서, 상술한 도 5의 맵 테이블 엔트리들(MTE1~MTE4)의 내부 필드에 대한 설명은 도 8에 도시된 맵 테이블 엔트리들(MTE1~MTE4)에 동일하게 적용될 수 있다.
도 9는 도 2와 도 7에 도시된 실시 예를 나타낸 플로우차트이다.
도 1부터 도 3, 도 6부터 도 7, 및 도 9를 참조하면, PCI 호스트(미도시)는 PCI 버스(300)를 통해 PCI 장치(100A 또는 100B)에 액세스하고, 데이터를 처리할 수 있다(S900).
상기 PCI 호스트에 의해 처리될 데이터(예컨대, DATA1~DATA4)는 메모리(130 또는 131) 내의 이산적인 위치에 저장되어 있을 수 있다. 이 때, 맵 테이블 관리 유닛(126)은, 맵 테이블(170) 내에 포함된 맵 테이블 엔트리들(MTE1~MTEn) 중에서 연속된 맵 테이블 엔트리들(예컨대, MTE1~MTE4) 각각에, 메모리(130 또는 131) 내에 저장된 데이터(DATA1~DATA4)의 순서에 상응하는 물리 주소들(예컨대, PMA1~PMA4) 각각을 저장한다(S920).
상기 PCI 호스트는 제1맵 테이블 엔트리(MTE1)의 가상 주소와, 상기 가상 주소에 대한 호스트 오프-셋을 이용하여 맵 테이블 엔트리들(MTE1~ MTE4)에 액세스하고, 데이터(DATA1~DATA4)를 처리할 수 있다(S940).
도 10은 도 4와 도 8에 도시된 실시 예를 나타낸 플로우차트이다.
도 1, 도 4부터 도 6, 도 8, 및 도 10을 참조하면, PCI 호스트(미도시)는 PCI 버스(300)를 통해 PCI 장치(100A 또는 100B)에 액세스하고, 데이터를 처리할 수 있다(S1000).
상기 PCI 호스트에 의해 처리될 데이터는 메모리(130 또는 131) 내의 어느 하나의 페이지 버퍼(예컨대, PB3)에 저장된 데이터(예컨대, DATA)를 반복적으로 포함할 수 있다. 이 때, 맵 테이블 관리 유닛(126)은, 맵 테이블(170) 내에 포함된 맵 테이블 엔트리들(MTE1~MTEn) 중에서 데이터(DATA)의 반복 횟수에 상응하는 수의 맵 테이블 엔트리들(예컨대, 상기 반복 횟수가 '4'일 때, 제1맵 테이블 엔트리(MTE1)부터 제4맵 테이블 엔트리(MTE4)) 각각에, 데이터(DATA)가 저장된 페이지 버퍼(PB3)의 물리 주소(예컨대, PMA1)를 저장한다(S1020).
상기 PCI 호스트는 제1맵 테이블 엔트리(MTE1)의 가상 주소와, 상기 가상 주소에 대한 호스트 오프-셋을 이용하여 맵 테이블 엔트리들(MTE1~MTE4)에 액세스하고, 데이터(DATA)를 처리한다(S1040)
도 11은 본 발명의 실시 예에 따른 PCI 장치와 인터페이스 시스템을 포함하는 컴퓨팅 시스템의 개략적인 블록도이다.
도 1, 도 6, 및 도 11을 참조하면, 컴퓨팅 시스템(1000)은 프로세서(1100), 시스템 메모리(1200), 시스템 버스(1300), 및 인터페이스 시스템(10)을 포함할 수 있다.
컴퓨팅 시스템(1000)은 개인용 컴퓨터(PC), 랩탑(laptop) 컴퓨터일 수 있으나, 이에 한정되는 것은 아니다.
프로세서(1100)는 컴퓨팅 시스템(1000)의 작동을 제어하고, PCI 호스트 컨트롤러(200)를 통해 PCI 장치들(100-1~100-N; N은 자연수) 중에서 적어도 어느 하나의 작동을 제어할 수 있다.
시스템 메모리(1200)는 프로세서(1100)의 작동에 필요한 명령 및/또는 데이터를 포함한다. 시스템 메모리(1200)는 SRAM 또는 DRAM일 수 있으나, 이에 한정되는 것은 아니다.
프로세서(1100), 메모리(1200), 및 인터페이스 시스템(10)은 시스템 버스(1300)를 통해 서로 접속될 수 있다. 시스템 버스(1300)는 컨트롤 버스, 주소 버스, 및 데이터 버스 중에서 적어도 어느 하나를 포함할 수 있다.
인터페이스 시스템(10)은 도 1에 도시된 인터페이스 시스템(10A) 또는 도 6에 도시된 인터페이스 시스템(10B)을 의미한다.
인터페이스 시스템(10)은 하나 또는 그 이상의 PCI 장치들(100-1~100-N; N은 자연수)을 포함할 수 있다. PCI 장치들(100-1~100-N) 각각은 도 1에 도시된 PCI 장치(100A)와 도 6에 도시된 PCI 장치(100B) 중에서 어느 하나일 수 있다.
PCI 장치들(100-1~100-N) 각각은, SSD(solid state drive), UFS(universal flash storage), HDD(hard disk drive), 비디오 그래픽 어댑터(video graphic adapter(VGA)) 카드, 사운드 어댑터 카드, 및 네트워크 인터페이스 카드(network interface card(NIC)) 중에서 어느 하나일 수 있으나, 이에 한정되는 것은 아니다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 10A, 10B: 인터페이스 시스템 140: 메모리 컨트롤러
100A, 100B, 100-1~100-N: PCI 장치 150, 150A, 150B: 캐시
110: PCI 장치 컨트롤러 151, 151A, 151B: RAM
112: PCI 레지스터 170: 맵 테이블
114: BAR(base address register) 200: PCI 호스트 컨트롤러
120: 주소 변환 블록 300: PCI 버스
122: 제1ATU(address translation unit) 1000: 컴퓨팅 시스템
124: 제2ATU 1300: 시스템 버스
126: 맵 테이블 관리 유닛(map table management unit)
130, 130A, 130B, 131, 131A, 131B: 메모리

Claims (10)

  1. 호스트와 통신하는 PCI(Peripheral Component Interconnect) 장치에 있어서, 복수의 페이지 버퍼들을 포함하는 제1메모리;
    복수의 기준 주소들을 포함하는 기준 주소 레지스터(base address register);
    상기 복수의 기준 주소들 각각을 복수의 가상 주소들 중에서 대응되는 어느 하나로 각각 변환하는 제1주소 변환기(address translation unit); 및
    상기 복수의 가상 주소들 각각에 상응하여 각각이 액세스되는 복수의 맵 테이블 엔트리들(map table entries)을 포함하고, 상기 복수의 가상 주소들 각각을 상기 복수의 페이지 버퍼들의 물리 주소들 중에서 어느 하나의 물리 주소에 각각 맵핑하는 맵 테이블을 포함하고,
    상기 제1주소 변환기는,
    상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 상기 물리 주소들 중에서 대응되는 어느 하나로 각각 변환하고,
    상기 호스트는, 상기 복수의 기준 주소들로부터 상기 복수의 페이지 버퍼들 각각에 대응하는 기준 주소를 식별하고,
    상기 PCI 장치는, 상기 호스트로부터의 상기 복수의 가상 주소들 중 첫 번째 기준 주소의 수신에 응답하여, 상기 제1 주소 변환기를 통해 상기 첫 번째 기준 주소를 상기 복수의 가상 주소들 중 첫 번째 가상 주소로 변환하고, 상기 복수의 페이지 버퍼들 중에서, 상기 복수의 물리 주소들 중 상기 첫 번째 가상 주소에 대응되는 첫 번째 물리 주소를 갖는, 첫 번째 페이지 버퍼에 저장된 데이터를 상기 호스트에 공급하는, PCI 장치.
  2. 제1항에 있어서,
    상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 상기 물리 주소들 중에서 대응되는 어느 하나로 각각 변환하는 제2주소 변환기를 더 포함하는 PCI 장치.
  3. 제1항에 있어서,
    상기 복수의 맵 테이블 엔트리들 각각은,
    호스트 오프-셋을 저장하는 호스트 오프-셋 필드; 및
    상기 물리 주소들 중 어느 하나를 저장하는 물리 주소 필드를 포함하는 PCI 장치.
  4. 제3항에 있어서,
    맵 테이블 관리 유닛(map table management unit)을 더 포함하고,
    상기 맵 테이블 관리 유닛은,
    상기 복수의 맵 테이블 엔트리들 각각에 액세스하기 위하여, 상기 복수의 가상 주소들 각각을 상기 복수의 맵 테이블 엔트리들 각각에 할당하고,
    상기 복수의 맵 테이블 엔트리들 각각에 상기 호스트 오프-셋과 상기 어느 하나의 물리 주소를 저장하는 PCI 장치.
  5. 제4항에 있어서,
    호스트에 의해 처리될 데이터가 상기 제1메모리 내의 이산적인 위치들에 저장되어 있을 때, 상기 맵 테이블 관리 유닛은,
    연속적인 복수의 맵 테이블 엔트리들 각각의 호스트 오프-셋 필드에 호스트 오프-셋들 각각을 순차적으로 저장하고,
    상기 연속적인 복수의 맵 테이블 엔트리들 각각의 물리 주소 필드에, 상기 데이터가 저장된 페이지 버퍼들의 물리 주소들을 상기 데이터의 순서에 따라 각각 저장하는 PCI 장치.
  6. 제1항에 있어서,
    제2메모리를 더 포함하고,
    상기 맵 테이블은 상기 제1메모리와 상기 제2메모리 중에서 어느 하나에 저장되는 PCI 장치.
  7. 제6항에 있어서,
    상기 맵 테이블이 상기 제1메모리에 저장될 때,
    상기 제2메모리는,
    상기 맵 테이블에 포함된 상기 복수의 맵 테이블 엔트리들 중에서 적어도 어느 하나를 상기 제1메모리로부터 로드하는 PCI 장치.
  8. PCI 버스;
    상기 PCI 버스와 접속되는 적어도 하나의 PCI 장치; 및
    호스트의 요청에 따라, 상기 PCI 버스를 통하여 상기 호스트와 상기 적어도 하나의 PCI 장치를 접속시키기 위한 호스트 컨트롤러를 포함하고,
    상기 적어도 하나의 PCI 장치는,
    복수의 페이지 버퍼들을 포함하는 제1메모리;
    복수의 기준 주소들을 포함하는 기준 주소 레지스터;
    상기 복수의 기준 주소들 각각을 복수의 가상 주소들 중에서 대응되는 어느 하나로 각각 변환하는 제1주소 변환기; 및
    상기 복수의 가상 주소들 각각에 상응하여 각각이 액세스되는 복수의 맵 테이블 엔트리들을 포함하고, 상기 복수의 가상 주소들 각각을 상기 복수의 페이지 버퍼들의 물리 주소들 중에서 어느 하나의 물리 주소에 각각 맵핑하는 맵 테이블을 포함하고,
    상기 제1주소 변환기는,
    상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 상기 물리 주소들 중에서 대응되는 어느 하나로 각각 변환하고,
    상기 호스트는, 상기 복수의 기준 주소들로부터 상기 복수의 페이지 버퍼들 각각에 대응하는 기준 주소를 식별하고,
    상기 PCI 장치는, 상기 호스트로부터의 상기 복수의 가상 주소들 중 첫 번째 기준 주소의 수신에 응답하여, 상기 제1 주소 변환기를 통해 상기 첫 번째 기준 주소를 상기 복수의 가상 주소들 중 첫 번째 가상 주소로 변환하고, 상기 복수의 페이지 버퍼들 중에서, 상기 복수의 물리 주소들 중 상기 첫 번째 가상 주소에 대응되는 첫 번째 물리 주소를 갖는, 첫 번째 페이지 버퍼에 저장된 데이터를 상기 호스트에 공급하는, 인터페이스 시스템(interface system).
  9. 제8항에 있어서,
    상기 복수의 맵 테이블 엔트리들 각각은,
    복수의 호스트 오프-셋들 중 어느 하나를 저장하는 호스트 오프-셋 필드; 및
    상기 물리 주소들 중 어느 하나를 저장하는 물리 주소 필드를 포함하는 인터페이스 시스템.
  10. 프로세서;
    상기 프로세서의 작동에 관련된 명령과 데이터를 저장하는 시스템 메모리; 및
    PCI 버스를 통해 상기 프로세서와 접속되는 적어도 하나의 PCI 장치를 포함하고,
    상기 적어도 하나의 PCI 장치는,
    복수의 페이지 버퍼들을 포함하는 제1메모리;
    상기 복수의 페이지 버퍼들 각각에 대응하는 복수의 기준 주소들을 포함하는 기준 주소 레지스터;
    상기 복수의 기준 주소들 각각을 복수의 가상 주소들 중에서 대응되는 어느 하나로 각각 변환하는 제1주소 변환기; 및
    상기 복수의 가상 주소들 각각에 상응하여 각각이 액세스되는 복수의 맵 테이블 엔트리들을 포함하고, 상기 복수의 가상 주소들 각각을 상기 복수의 페이지 버퍼들의 물리 주소들 중에서 어느 하나의 물리 주소에 각각 맵핑하는 맵 테이블을 포함하고,
    상기 제1주소 변환기는,
    상기 맵 테이블을 이용하여 상기 복수의 가상 주소들 각각을 상기 물리 주소들 중에서 대응되는 어느 하나로 각각 변환하고,
    상기 복수의 맵 테이블 엔트리들 각각은,
    호스트 오프-셋을 저장하는 호스트 오프-셋 필드; 및
    상기 물리 주소들 중 어느 하나를 저장하는 물리 주소 필드를 포함하고,
    상기 PCI 장치는,
    호스트로부터의 상기 복수의 가상 주소들 중 첫 번째 기준 주소의 수신에 응답하여, 상기 제1 주소 변환기를 통해 상기 첫 번째 기준 주소를 상기 복수의 가상 주소들 중 첫 번째 가상 주소로 변환하고, 상기 복수의 페이지 버퍼들 중에서, 상기 복수의 물리 주소들 중 상기 첫 번째 가상 주소에 대응되는 첫 번째 물리 주소를 갖는, 첫 번째 페이지 버퍼에 저장된 데이터를 상기 호스트에 공급하는, 컴퓨팅 시스템.
KR1020140133213A 2014-10-02 2014-10-02 Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템 KR102320044B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140133213A KR102320044B1 (ko) 2014-10-02 2014-10-02 Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템
US14/864,461 US10102125B2 (en) 2014-10-02 2015-09-24 PCI device, interface system including the same, and computing system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140133213A KR102320044B1 (ko) 2014-10-02 2014-10-02 Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20160039910A KR20160039910A (ko) 2016-04-12
KR102320044B1 true KR102320044B1 (ko) 2021-11-01

Family

ID=55632914

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140133213A KR102320044B1 (ko) 2014-10-02 2014-10-02 Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템

Country Status (2)

Country Link
US (1) US10102125B2 (ko)
KR (1) KR102320044B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102255216B1 (ko) * 2014-11-20 2021-05-24 삼성전자주식회사 Pci 장치와 이를 포함하는 pci 시스템
US20170351639A1 (en) * 2016-06-06 2017-12-07 Cisco Technology, Inc. Remote memory access using memory mapped addressing among multiple compute nodes
US10394711B2 (en) * 2016-11-30 2019-08-27 International Business Machines Corporation Managing lowest point of coherency (LPC) memory using a service layer adapter
US11030144B2 (en) * 2018-12-14 2021-06-08 Texas Instruments Incorporated Peripheral component interconnect (PCI) backplane connectivity system on chip (SoC)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060195626A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003208266A1 (en) 2002-01-19 2003-07-30 Pact Xpp Technologies Ag Reconfigurable processor
KR100445637B1 (ko) 2002-07-03 2004-08-25 삼성전자주식회사 엔디안 정보를 제공하는 컴퓨터 시스템 및 그 컴퓨터시스템의 데이터 전송 방법
US7533210B2 (en) 2002-10-24 2009-05-12 Sun Microsystems, Inc. Virtual communication interfaces for a micro-controller
JP2005018325A (ja) 2003-06-25 2005-01-20 Hitachi Ltd 半導体集積回路
US20060212870A1 (en) * 2005-02-25 2006-09-21 International Business Machines Corporation Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization
US20060253682A1 (en) 2005-05-05 2006-11-09 International Business Machines Corporation Managing computer memory in a computing environment with dynamic logical partitioning
US8595434B2 (en) 2005-08-25 2013-11-26 Silicon Image, Inc. Smart scalable storage switch architecture
US8856781B2 (en) 2006-09-14 2014-10-07 Intel Corporation Method and apparatus for supporting assignment of devices of virtual machines
US7941568B2 (en) * 2008-05-05 2011-05-10 International Business Machines Corporation Mapping a virtual address to PCI bus address
US8612662B2 (en) 2008-06-01 2013-12-17 Hewlett-Packard Development Company, L.P. Queue sharing and reconfiguration in PCI express links
US9535849B2 (en) * 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8521941B2 (en) 2010-12-28 2013-08-27 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US8495252B2 (en) * 2011-01-17 2013-07-23 International Business Machines Corporation Implementing PCI-express memory domains for single root virtualized devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060195626A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization

Also Published As

Publication number Publication date
US20160098358A1 (en) 2016-04-07
KR20160039910A (ko) 2016-04-12
US10102125B2 (en) 2018-10-16

Similar Documents

Publication Publication Date Title
KR102147905B1 (ko) 어드레스 기반의 멀티-스트림 스토리지 장치 액세스
US9760497B2 (en) Hierarchy memory management
US9886194B2 (en) NVDIMM adaptive access mode and smart partition mechanism
KR102320044B1 (ko) Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템
KR102051698B1 (ko) 단일 페이지 테이블 엔트리 내의 속성 필드들의 다중 세트들
US20180136875A1 (en) Method and system for managing host memory buffer of host using non-volatile memory express (nvme) controller in solid state storage device
JP2017194959A (ja) NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体
US20220179792A1 (en) Memory management device
JP2008033928A (ja) Gpuにおけるページマッピングのための専用機構
US10146440B2 (en) Apparatus, system and method for offloading collision check operations in a storage device
CN117743205A (zh) 用dram作为可按字节寻址存储器的缓存的方法和装置
US9904622B2 (en) Control method for non-volatile memory and associated computer system
US20190065395A1 (en) Storage device and data arrangement method
US9081764B2 (en) Iimplementing DMA migration of large system memory areas
US20170371804A1 (en) Method for Writing Multiple Copies into Storage Device, and Storage Device
US9703599B2 (en) Assignment control method, system, and recording medium
US9632950B2 (en) Storage control device controlling access to a storage device and access controlling method of a storage device
US8504764B2 (en) Method and apparatus to manage object-based tiers
JP6243884B2 (ja) 情報処理装置、プロセッサ、および情報処理方法
CN114610654A (zh) 一种固态存储设备以及向其写入数据的方法
WO2017082323A1 (ja) 分散処理システム、分散処理装置、方法および記憶媒体
CN107066208A (zh) 一种外存设备的非对称读写方法及nvm外存设备
US20190171565A1 (en) Memory allocation apparatus and method
US11113440B1 (en) Memory migration in hybrid emulation
CN114282465A (zh) 一种SoC芯片仿真验证方法、装置、设备及存储介质

Legal Events

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