KR20010006757A - Dma 및 l1/l2 캐시 성능을 향상시키기 위한 방법,장치 및 컴퓨터 프로그램 제품 - Google Patents
Dma 및 l1/l2 캐시 성능을 향상시키기 위한 방법,장치 및 컴퓨터 프로그램 제품 Download PDFInfo
- Publication number
- KR20010006757A KR20010006757A KR1020000011581A KR20000011581A KR20010006757A KR 20010006757 A KR20010006757 A KR 20010006757A KR 1020000011581 A KR1020000011581 A KR 1020000011581A KR 20000011581 A KR20000011581 A KR 20000011581A KR 20010006757 A KR20010006757 A KR 20010006757A
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- page
- buffer
- memory
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000004590 computer program Methods 0.000 title claims description 3
- 230000015654 memory Effects 0.000 claims abstract description 99
- 239000000872 buffer Substances 0.000 claims abstract description 66
- 230000008859 change Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 claims description 2
- 230000003213 activating effect Effects 0.000 claims 2
- 230000004913 activation Effects 0.000 claims 1
- 230000002708 enhancing effect Effects 0.000 claims 1
- 230000005055 memory storage Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 42
- 238000003860 storage Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000012546 transfer Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- 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
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
- G06F13/4226—Bus 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 with asynchronous protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral 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)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
특별한 'I/O' 페이지는 대용량 (예를 들면, 4K 바이트) 을 가지지만, 특유의 캐시 라인 특성을 가지는 것으로 정의된다. DMA 판독을 위하여, PCI 호스트 브리지에 의하여 캐시가능 판독으로서 I/O 페이지에서의 제 1 캐시 라인은 접근될 수도 있으며, 다른 모든 라인은 캐시 불가능한 접근이다 (캐시할 의사없는 DMA 판독). DMA 기입을 위하여, PCI 호스트 브리지는 모든 캐시 라인을 캐시가능한 것으로 접근한다. PCI 호스트 브리지는 데이터를 위한 I/O 페이지 크기의 캐시 검사 입도를 유지하며, 호스트 브리지가 I/O 페이지 내에서의 캐시 라인 상에 저장 (무효) 타입 시스템 버스 동작을 검출하면, 그 페이지 내에서 캐시된 데이터는 무효화된다 (L1/L2 캐시는 이 페이지에서의 모든 캐시 라인을 캐시가능한 것으로 지속적으로 처리함). PCI 호스트 브리지에서 데이터의 전체 페이지를 무효화시키기 위하여, 제 1 라인을 캐시가능한 것으로 정의함으로써, 하나의 캐시 라인만이 L1/L2 캐시에 의하여 시스템 버스 상에서 무효화시킬 필요가 있다. 이러한 라인들은 L1/L2 캐시에서 '수정' 상태에 남겨지기 때문에, 시스템 버스 동작 없이 I/O 페이지에서의 다른 캐시 라인에 대한 모든 저장은 L1/L2 캐시에 직접적으로 발생할 수 있다.
Description
본 발명은 일반적으로 데이터 처리 시스템에 관한 것이며, 특히 주메모리 및 하나 이상의 캐시 메모리로부터 데이터를 사전 인출하는 처리 시스템에 관한 것이다. 보다 구체적으로는, 본 발명은 직접 메모리 접근 및 캐시 메모리의 성능을 향상시키는 방법, 장치 및 컴퓨터 프로그램에 관한 것이다.
최근의 마이크로프로세서 시스템에서, 프로세서 라이프 사이클은 기술이 지속적으로 향상함에 따라 지속적으로 짧아지고 있다. 또한, 스페큘러티브 실행, 더 깊은 파이프라인, 더 많은 실행 요소 등의 설계 기술은 데이터 처리 시스템의 성능을 지속적으로 향상시켰다. 프로세서는 메모리로부터 데이터 및 명령어를 보다 신속하게 요구하기 때문에, 향상된 성능은 시스템의 메모리 인터페이스에 보다 가중한 부담을 준다. 데이터 처리 시스템의 성능을 증가시키기 위하여, 캐시 메모리 시스템이 종종 구현된다.
캐시 메모리를 채용하는 데이터 처리 시스템은 이 기술분야에서 널리 알려져 있다. 캐시 메모리는 최소 대기시간으로 프로세서 ("CPU") 에 현재 프로그램 및 데이터를 사용 가능하게 함으로써 데이터 처리 시스템의 속도를 증가시키는 초고속 메모리 장치이다. 대용량 내부 캐시 (L1 캐시) 들은 메모리 대기시간을 감소시키는 것을 보조하기 위하여 구현되며, 그것들은 보다 대용량인 외부 캐시 (L2 캐시) 에 의하여 종종 증대된다. 캐시는 캐시 라인 데이터를 위한 저장 영역으로서 작용한다. 캐시 메모리는 각 라인이 연관된 "태그" 및 속성 비트를 가지는 "라인들" 로 전형적으로 분리된다. 캐시 메모리에서의 라인들은 주메모리로부터의 데이터의 복사본을 저장한다. 예를 들어, 캐시에서 데이터의 "4K 페이지" 는 각 라인에서 128 바이트를 가지는 메모리로부터 32 라인의 데이터를 포함하는 것으로 정의될 수도 있다.
캐시 메모리 시스템의 주된 장점은 최빈도로 접근되는 명령어 및 데이터를 고속 캐시 메모리에 유지함으로써, 전체 처리 시스템의 평균 메모리 접근 시간은 캐시의 접근 시간에 접근한다. 캐시 메모리의 크기가 주메모리 크기의 단지 수분의 일 정도 이지만, 메모리 요청의 대부분은 프로그램의 "참조의 국부화" 성질 때문에 고속 캐시 메모리에서 성공적으로 발견된다. 이러한 성질은 메모리 참조가 메모리의 소수 국부화된 영역 (이 경우, L1 및 L2) 에 한정되는 것을 유지한다.
캐시 메모리의 기본 동작은 공지되었다. 프로세서가 메모리를 접근할 필요가 있는 경우, 그 캐시가 검사된다. 프로세서에 의하여 어드레스된 워드가 캐시에서 발견되면, 그것은 고속 캐시 메모리로부터 판독된다. 프로세서에 의하여 어드레스된 워드가 캐시에서 발견되지 않으면, 워드를 판독하기 위하여 주메모리가 접근된다. 접근된 워드를 포함하는 워드의 블록은 주메모리로부터 캐시 메모리에 전송된다. 이러한 방법으로, 추가적인 데이터가 캐시에 전송되어 (사전 인출됨), 메모리에 대한 이후 참조는 요구되는 워드를 고속 캐시 메모리에서 용이하게 발견할 것이다.
사전 인출 기술은 대기시간을 감소시키기 위해 미리 내부 L1 캐시에 메모리 데이터를 공급하도록 자주 구현된다. 이상적인 것은, 프로세서가 요구하는 경우, 명령어 및 데이터의 복사본이 항상 L1 캐시에 있도록 데이터 및 명령어가 충분히 미리 사전 인출된다. 명령어 및/또는 데이터의 사전 인출은 이 기술 분야에서 널리 알려져 있다.
고속 I/O 직접 메모리 접근 (DMA) 성능을 요구하는 시스템 (예를 들면, 그래픽) 에서, I/O 를 위한 시스템 메모리 데이터의 관리는 전형적으로 다음과 같다:
1) 시스템 프로세서는 시스템 메모리 공간에서 4K 바이트 (4K) 페이지 버퍼의 1세트로 일련의 저장을 실시함으로써 데이터를 발생시킨다. 이것은 데이터가 L1/L2 캐시에서 '수정' (캐시에서는 유효하며, 시스템 메모리에 재기입되지 않음) 으로 표시되도록 한다.
2) 프로세서는 발생된 4K 페이지에 DMA 판독을 수행하도록 I/O 장치를 초기화한다.
3) I/O 장치는 시스템 메모리로 일련의 DMA 판독을 실시한다.
4) I/O 장치를 위한 DMA 동작을 수행하는 PCI 호스트 브리지는 '공유' (캐시에서 유효하고, 시스템 메모리에서 유효함) 상태에서 데이터를 사전 인출하고 캐시한다. PCI 호스트 브리지가 데이터를 판독할 때에, L1/L2 캐시는 '수정' 상태로부터 '공유' 상태로 각각의 데이터 캐시 라인을 변화시킨다 (즉, L1/L2 캐시 가 개입하고, 판독 가능한 메모리에 데이터를 직접 공급하거나 '밀어 넣는다').
5) DMA 장치가 종료되는 경우, 4K 버퍼는 재사용된다 (즉, 소프트웨어는 데이터가 회전하는 고정된 1세트의 버퍼를 가진다).
DMA I/O 성능을 유지하기 위하여, PCI 호스트 브리지는 공유 상태에서 데이터를 사전 인출/캐시하도록 사용되는 그 자체의 캐시를 포함할 수도 있다. 이것은 데이터 사용 장치 (예를 들면, I/O 장치) 에 근접하여 DMA 데이터를 이동되게 하여 DMA 판독 성능을 최대화한다. PCI 호스트 브리지가 시스템 버스 상에 캐시가능 판독을 발행하는 경우, 캐시가능 판독을 수행하는 PCI 호스트 브리지로 인하여 이것은 L1/L2 캐시가 '수정' 상태에서 '공유' 상태로 변화되도록 한다. 소프트웨어가 이 4K 페이지 캐시 공간을 재사용하여 새로운 DMA 데이터를 저장하고자 하는 경우, L1/L2 캐시 내의 모든 라인이 '공유' 상태로 변화되기 때문에 이 상태 변화 동작은 성능의 불이익을 발생시킨다. 새로운 저장을 하기 위하여, L1/L2 캐시 는 각 라인이 '공유' 상태에서 '수정' 상태로 취해지는 것을 지시하는 각 라인에 대한 시스템 버스 명령을 수행해야 한다. 구 데이터가 필요하지 않은 경우에도 (PCI 호스트 브리지는 그 데이터가 현재 무효라는 지시를 필요로 함), 이것은 4K 페이지에서의 각 캐시 라인 (32개 있음) 에 대하여 발생하여야 한다. 새로운 저장 이전에 '수정' 상태로 모든 이러한 캐시 라인의 상태를 변화시키기 위하여 시스템 버스 상에 행해져야할 32개의 시스템 버스 명령어인 추가된 메모리 코히어런시 트래픽은, 프로세서의 성능을 현저하게 악화시킬 수 있다.
프로세서에 의한 4K 페이지로의 저장은 L1/L2 캐시가 '수정' 상태에 있는 경우와 달리 '공유' 상태에 있는 경우에는, 4 내지 5배 더 걸릴 수도 있다는 것을 나타낸다. 이것은, 각 캐시 라인의 상태를 '수정' 상태로 변화시키기 위해 시스템 버스 상에 필요한 추가된 코히어런시 트래픽에 기인한다.
직접 메모리 접근 장치의 속도 및 효율을 증가시키는 방법 및 장치를 제공하는 것이 바람직하다. L1/L2 캐시에서 데이터의 페이지 상태를 변화시키는데 필요한 시스템 버스 명령어의 수를 감소시키는 방법 및 장치를 제공하는 것 역시 바람직하다.
따라서, 본 발명의 목적은 L1/L2 캐시에서 버퍼의 상태를 변화시키는데 필요한 시스템 버스 명령어의 수를 감소시키는 방법 및 장치를 제공하는 것이다.
본 발명의 다른 목적은 직접 메모리 접근 장치의 속도 및 효율을 증가시키는 방법 및 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 캐시가 하나의 버스 동작으로 메모리 버퍼를 소거하도록 허용하는 방법 및 장치를 제공하는 것이다.
도 1 은 본 발명의 바람직한 실시예가 구현되어 있는 데이터 처리 시스템의 상위 레벨 블록도.
도 2a 는 본 발명의 바람직한 실시예에 따른 특별한 DMA (Direct Memory Access) I/O 페이지를 사용하는 방법의 상위 레벨 흐름도.
도 2b 는 본 발명의 바람직한 실시예에 따른 특별한 DMA I/O 페이지를 재사용하는 방법의 상위 레벨 흐름도.
도 3 은 본 발명의 바람직한 실시예에 따른 프로세서 저장을 수행하는 L1/L2 코히어런시 프로시저에 대한 흐름도.
도 4 는 본 발명의 바람직한 실시예에 따라 PCI 호스트 브리지가 DMA 요청을 수행하고 있는 특별한 DMA I/O 페이지를 사용하는 방법의 상위 레벨 흐름도.
도 5 는 본 발명의 바람직한 실시예에 따라 PCI 호스트 브리지가 시스템 버스 코히어런시를 검사할 수 있는 특별한 DMA I/O 페이지를 사용하는 방법 중 일부분의 상위 레벨 흐름도.
* 도면의 주요부분에 대한 부호의 설명 *
102 프로세서 104 L1 캐시
106 L2 캐시 108 PCI 호스트 브리지
109 캐시 110 시스템 메모리
112 시스템 버스 114 메모리 제어기
116 PCI 버스 118 및 120 입출력 장치
122 비휘발성 메모리 124 DMA 메모리
130, 132, 134, 136 버퍼
전술한 목적은 이하에 기재된 바와 같이 성취된다. 특별한 'I/O' 페이지는 대용량 (예를 들면, 4K 바이트) 을 가지지만, 특유의 캐시 라인 특성을 가지는 것으로 정의된다. DMA 판독에 대하여, 캐시가능 판독으로서 I/O 페이지에서의 제 1 캐시 라인은 PCI 호스트 브리지에 의하여 접근될 수도 있으며, 다른 모든 라인은 캐시 불가능한 접근이다 (캐시할 의사없는 DMA 판독). DMA 기입에 대하여, PCI 호스트 브리지는 모든 캐시 라인을 캐시가능한 것으로 접근한다. PCI 호스트 브리지는 데이터에 대한 I/O 페이지 크기의 캐시 검사 입도를 유지하며, 그것은 PCI 호스트 브리지가 I/O 페이지 내에서의 캐시 라인 상에 저장 (무효) 타입 시스템 버스 동작을 검출하면, 그 페이지 내에서 캐시된 데이터는 무효화된다는 것을 의미한다 (L1/L2 캐시는 이 페이지에서의 모든 캐시 라인을 캐시가능한 것으로 계속 처리함). PCI 호스트 브리지에서 데이터의 전체 페이지를 무효화시키기 위하여, 제 1 라인을 캐시가능한 것으로 정의함으로써, 단지 하나의 캐시 라인은 L1/L2 캐시에 의하여 시스템 버스 상에서 무효화될 필요가 있다. 이러한 라인들은 L1/L2 캐시에서 '수정' 상태로 남겨지기 때문에, 시스템 버스 동작 없이 I/O 페이지에서의 다른 캐시 라인에 대한 모든 저장은 L1/L2 캐시에서 직접적으로 발생할 수 있다.
본 발명의 추가적인 목적, 특징 및 장점뿐만 아니라 전술한 사항들은 이하의 상세한 설명에서 명확해진다.
본 발명의 특징으로 사료되는 신규한 장점은 첨부된 청구항에 나타난다. 하지만, 그 사용의 바람직한 실시예, 추가적인 목적 및 장점뿐만 아니라, 발명 그 자체도 첨부 도면을 참조하여 도시되는 실시예의 상세한 설명을 참조하면 이해될 수 있다.
여기서 도면을 참조하고, 특히 도 1을 참조하여, 본 발명의 바람직한 실시예에 따른 멀티 프로세서 데이터 처리 시스템이 기술된다. 데이터 처리 시스템 (100) 은 바람직하게 뉴욕주, 아몽크 (Armonk) 의 인터내셔널 비즈네스 머신즈 (International Business Machines) 로부터 사용 가능한 프로세서의 파워 피씨 (PowerPC) 계열 중 하나를 포함하는 멀티 프로세서 (SMP) 시스템 (102) (하나만 도시됨) 이다. 예시적인 실시예에서 단지 하나의 프로세서가 도시되어도, 당업자는 본 발명에 따른 멀티 프로세서 데이터 처리 시스템에서 추가적인 프로세서가 사용될 수도 있음을 알 것이다.
프로세서 (102) 는 레벨 1 (L1) 캐시 (104) 를 포함한다. 데이터 접근 대기시간을 최소화시키기 위하여, 레벨 2 (L2) 캐시 (106) 와 같은 캐시 메모리의 하나 이상의 추가적인 레벨이 데이터 처리 시스템 (100) 내에서 구현될 수도 있다. 더 낮은 캐시 레벨 (L2) 은 L1 캐시에 데이터를 탑재하며 전형적으로 접근 대기시간은 길지만 진행적으로 더 큰 저장 용량을 가지도록 채용된다. 예를 들어, L1 캐시 (104) 는 32KB 의 저장 용량 및 약 1회 내지 2회의 프로세서 사이클의 접근 대기시간을 가질 수도 있다. L2 캐시 (106) 는 512KB의 저장 용량을 가질 수 있지만 5회의 프로세서 사이클의 접근 대기시간을 가질 수도 있다. L2 캐시 (106) 는 전형적으로 훨씬 더 큰 저장 용량을 가지지만, 50회의 프로세서 사이클 보다 더 긴 접근 대기시간을 가질 수도 있는 시스템 메모리 (110) 및 프로세서 (102) 사이에 중간 저장 장치로서 작용한다.
데이터 처리 시스템 (100) 에 채용되는 캐시 체계 및 캐시 체계 구조에서의 양 레벨의 수는 변동할 수도 있다. L2 캐시 (106) 는 CPU (102) 및 시스템 메모리 (110) (시스템 버스 (102) 를 통함) 사이에 접속된 전용 캐시이다. 당업자는 도시된 레벨 및 구성의 다양한 변형이 구현될 수도 있다는 것을 인식할 수 있다.
L2 캐시 (106) 는 시스템 버스 (102) 를 통하여 시스템 메모리 (110) 에 접속된다. 메모리 제어기 (114) 및 PCI 호스트 브리지 (108) 도 시스템 버스 (112) 에 접속된다. 메모리 제어기 (114) 는 시스템 메모리 (110) 로의 접근을 조절한다. 소프트웨어는 DMA 메모리 (124) 에 의하여 사용되는 시스템 메모리 (110) 내에서 버퍼 영역을 정리할 수 있다 (예를 들어, DMA 메모리 (124) 는 시스템 메모리 (110) 공간에서 1세트의 4K 페이지 버퍼일 수도 있음). PCI 호스트 브리지 (108) 는 시스템 버스 (112) 를 PCI 버스 (116) 에 접속하여, 디스플레이 (도시 생략), I/O 장치 (118 및 120) 및 PCI 버스 (116) 에 대한 접속을 제공하는 그래픽 어댑터와 같은 I/O 장치에 대한 접속을 제공한다. 따라서, 시스템 버스 (112), PCI 호스트 브리지 (108) 및 PCI 버스 (116) 는 대체 구현이 공지된 부착된 장치를 커플링하는 상호 접속을 형성한다.
입/출력 (I/O) 서브 시스템은 PCI (Peripheral Component Interconnect) 와 같은 I/O 버스 (116) 로 구비되어, PCI 호스트 브리지 (PCIHB ; 108) 를 따라서 수 개의 I/O 장치 (118 및 120) 에 부착된다. I/O 버스 (116) 는 PCIHB (108) 을 통하여 하나 이상의 I/O 장치를 시스템 버스 (112) 에 접속하며, I/O 장치 (118 및 120) 는 PCIHB (108) 을 통하여 시스템 메모리 (110) 에/으로부터 명령어 및 데이터를 전송하도록 사용된다.
프로세서 (102) 가 I/O 장치 (118 및 120) 를 접근하고자 하는 경우, PCIHB (108) 은 시스템 버스 (112) 로부터 I/O 버스 (116) 로 프로세서 명령어를 전달할 수도 있다. 추가적으로, PCIHB (108) 도 I/O 장치 (118 및 120) 에 의하여 초기화되는 I/O 버스 (116) 로부터 시스템 메모리 (110) 에 직접 메모리 접근 (DMA) 을 전달할 수도 있다. DMA 를 위하여, PCIHB (108) 은 DMA 성능을 향상시키기 위하여 데이터를 사전 인출하고 캐시한다. PCIHB (108) 은 그 자체의 캐시 (109) 뿐만 아니라 L1/L2 캐시 (104 및 106) 에 걸친 코히어런시를 유지하고, 시스템 메모리 (110) 를 접근하기 위하여 시스템 버스 명령어를 발행하는 시스템 버스 (112) 상의 프로세서 (102) 와 매우 유사하게 동작한다.
I/O 마스터 장치는 PCIHB (108) 을 통하여 시스템 메모리 (110) 로부터 수 개의 다른 위치 (그 반대도 적용됨) 에 데이터를 전송하는 I/O 버스 (116) 상의 DMA 를 초기화할 수 있는 장치이다. 이 블록도에서, I/O 장치 (120) 는 시스템 메모리 (110) 에, 그리고 시스템 메모리 (110) 로부터 데이터를 전송할 수 있는 I/O 마스터 장치를 표시한다. 이러한 타입의 전송은 프로세서 (102) 에 의한 간섭없이 행해질 수 있다.
I/O 장치 (118 및 120) 는 종래의 어댑터를 통하여 PCI 버스 (116) 에 인터페이스될 수도 있는 모든 마우스 또는 트랙 볼과 같은 그래픽 지시 장치, 디스플레이 및 프린터를 포함하는 종래의 주변 장치를 포함할 수도 있다. 비휘발성 메모리 (122) 는 하드디스크 드라이브를 포함하고, 전원이 들어온 시스템 (100) 에 응답하여 휘발성 시스템 메모리 (110) 로 탑재되는 시스템 (100) 의 오퍼레이팅 시스템 및 다른 소프트웨어 제어 동작을 저장한다. 당업자는 직렬 및 병렬 포트, 네트워크 또는 부착된 장치로의 접속 등과 같은 도 1 에 도시되지 않은 다수의 추가적인 소자를 포함할 수도 있다는 것을 알 것이다. 그러한 변경 및 변형은 본 발명의 사상 및 범주내의 것이다.
DMA 버퍼 (124) 내에서, 데이터는 예를 들어, 각각 128 바이트의 데이터의 32 라인을 구성하는 4K 페이지 버퍼 (130 및 132) 에 저장될 수도 있다. L1/L2 캐시 (102 및 104) 가 프로세서 (102) 로부터 L1/L2 캐시에서 공유 상태에 있는 라인에 저장을 실행할 수 있기 전에, 개별적인 시스템 버스 동작이 다른 캐시들이 각 캐시의 복사본을 무효화시키도록 통지하기 위하여 요구된다. 이것은 각 캐시 라인을 위하여 행해지기 때문에, 프로세서는 새로운 데이터를 위한 여지를 만들도록 1페이지 버퍼를 소거하기 위한 반복적인 버스 동작의 회수로 인하여 느려진다. 본 발명은 4K 페이지 버퍼 (I/O) 를 설정하여, 버퍼가 32회의 버스 동작 대신 1회의 버스 동작으로 소거될 수도 있다.
전형적인 4K 페이지 버퍼는 버퍼 (130 및 132) 에 의하여 표시된다. 본 발명으로부터의 4K I/O 페이지 버퍼는 버퍼 (134 및 136) 에 의하여 표시된다. 버퍼 내의 데이터의 라인은 그 버퍼내의 블록에 의하여 표시되며, 하나 블록내의 빗금친 부분은 공유 상태를 표시한다. 버퍼 (130) 내에서, 버퍼가 소거되기 전에 각 캐시 라인 (32개의 라인) 에 대한 개별 시스템 버스 동작을 요구하면서, DMA 접근이 완료된 후에, 모든 캐시 라인이 공유된다. 버퍼 (132) 의 캐시 라인은 데이터가 버퍼 (132) 로의 기입을 허용하도록 수정하는 것으로 도시된다. 본 발명에 의하여 요구되는 바와 같은 DMA 접근이 종료한 후에, I/O 버퍼 (134) 의 제 1 캐시 라인은 수정 상태에 나머지 라인과 함께 공유 상태에 있다. I/O 버퍼 (136) 내의 모든 라인들은 수정 상태에 있다. 버퍼 (130) 의 코히어런시 상태를 버퍼 (132) 의 코히어런시 상태로 변환하는 것에 반해, 버퍼 (134) 의 코히어런시 상태로부터 버퍼 (136) 의 코히어런시 상태로 변환하는 것은 데이터가 I/O 버퍼 (134) 에 저장되는 것을 허용하기 위하여 I/O 버퍼 (134) 에서 제 1 라인만이 변화되도록 요구한다. 비교하면, (변화할 하나의 라인만을 선택하는) I/O 페이지 버퍼 상태를 변화시키는 것은 (32개의 라인을 변화 상태로 변화시킬 것을 요구하는) 전형적인 버퍼를 소거하는 것보다 짧은 시간량이 걸린다.
도 2a 를 참조하여, 본 발명의 바람직한 실시예에 따른 특별한 DMA I/O 페이지를 사용하는 방법의 상위 레벨 흐름도를 설명한다. 그 과정은 이후에 판독할 PCI I/O 장치에 대한 데이터를 생성하기 위하여 현재 사용하지 않는 4K I/O 페이지를 획득하는 소프트웨어 애플리케이션을 도시하는 단계 (202) 로 시작한다. 그 과정은 적어도 하나의 저장이 4K I/O 페이지에서 제 1 캐시 라인에 대한 것이 경우, 4K I/O 페이지에 일련의 저장을 수행하는 소프트웨어 애플리케이션을 설명하는 단계 (204) 로 다음에 전달한다. 그 과정은 적어도 하나의 판독이 4K I/O 페이지에서 제 1 캐시 라인에 대한 것인 경우, PCI 호스트 브리지를 통하여 4K I/O 페이지의 DMA 판독을 수행하도록, DMA 장치를 초기화하는 소프트웨어 애플리케이션을 도시하는 단계 (206) 로 계속한다. 그 과정은 다음에 소프트웨어 애플리케이션이 전송할 더 많은 데이터를 가지는지 여부의 결정을 설명하는 단계 (208) 로 전달한다. 전송할 데이터가 더 없는 경우, 그 공정은 완료된다. 전송할 더 많은 데이터가 있는 경우, 대신에 그 과정은 소프트웨어 응용이 사용하지 않는 4K I/O 페이지 버퍼를 획득하는 단계 (202) 로 복귀한다.
도 2b 를 참조하여, 본 발명의 바람직한 실시예에 따른 특별한 DMA I/O 페이지를 재사용하는 방법의 상위 레벨 흐름도를 도시한다. 그 과정은 I/O 장치가 I/O 페이지 버퍼로부터의 DMA 판독을 완료하는지 여부의 결정을 도시하는 단계 (222) 로 시작한다. I/O 장치가 I/O 페이지 버퍼로부터의 DMA 판독을 완료하지 않으면, 단계 (222) 로 복귀하여 그 단계를 반복한다. I/O 장치가 I/O 페이지 버퍼로부터의 DMA 판독을 완료하면, 그 과정은 대신에 I/O 페이지 버퍼를 "소프트웨어 애플리케이션에 의하여 재사용될 준비 완료" 라고 표시된 소프트웨어를 설명하는 단계 (224) 로 전달된다. 그 과정은 단계 (222) 로 복귀하며, I/O 장치가 I/O 페이지 버퍼로의 DMA 판독으로 I/O 장치가 완료되었는지 여부를 결정한다.
도 3 을 참조하여, 본 발명의 바람직한 실시예에 따른 프로세서 저장을 수행하는 L1/L2 코히어런시에 대한 상위 레벨 흐름도를 설명한다. 그 과정은 그 프로시저를 시작하는 것을 도시하는 단계 (300) 로 시작한다. 그 과정은 프로세서가 저장 동작을 실시하는 것을 시도할지 여부의 결정을 설명하는 단계 (302) 로 진행한다. 프로세서가 저장 동작을 실시하는 것을 시도하지 않으면, 그 과정은 단계 (302) 로 복귀하여 그 단계를 반복한다. 프로세서가 저장 동작을 실시하는 것을 시도하면, 그 과정은 대신에 저장이 완료되는 것을 허용하기 전에 L1/L2 캐시의 상태를 확인하는 L1/L2 캐시를 도시하는 단계 (304) 로 전달한다. 그 과정은 이후 단계 (306) 로 전달하여, L1/L2 캐시 라인 상태가 '무효' 인지 여부의 결정을 설명한다. 그 캐시가 '무효' 이면, 그 과정은 캐시 라인의 복사본 및 라인을 '수정' 단계로 판독하는 시스템 버스 상에서 '수정할 의사의 판독' 동작을 수행하도록 발행되는 명령어를 도시하는 단계 (308) 로 진행하여 한다. 그 과정은 이후 L1/L2 캐시로 실시되는 프로세서의 저장 명령어를 설명하는 단계 (318) 로 진행한다.
단계 (306) 로 복귀하여, L1/L2 캐시 라인 상태가 '무효' 상태이면, 그 과정은 L1/L2 캐시 라인 상태가 '공유' 상태인지 여부의 결정을 도시하는 단계 (310) 로 진행한다. 캐시 라인이 '공유' 되면, 그 과정은 라인의 소유권을 얻고 '수정' 상태로 라인을 변화시키기 위하여 시스템 버스 상에서 실시되는 '데이터 요구'를 설명하는 단계 (312) 로 진행한다. 그 과정은 이후 프로세서의 저장 기능이 L1/L2 캐시로 실시되는 단계 (318) 로 전달한다. 대신에, L1/L2 캐시 라인 상태가 '공유' 상태가 아니면, 그 과정은 L1/L2 캐시 라인 상태가 '수정' 상태인지 여부의 결정을 도시하는 단계 (314) 로 진행한다. 캐시 라인이 수정되지 않으면, 단지 3개의 L1/L2 캐시 라인 상태로 가정되기 때문에 오류 메시지를 설명하는 단계 (316) 로 전달한다.
단계 (314) 로 복귀하여, L1/L2 캐시 라인 상태가 '수정' 상태이면, 그 과정은 대신에 L1/L2 캐시로 실시되는 프로세서의 저장을 도시하는 단계 (318) 로 전달한다. 이후 그 과정은 또 다른 저장을 실시할 것을 시도하는 프로세서를 설명하는 단계 (302) 로 진행한다.
도 4 를 참조하여, 본 발명의 바람직한 실시예에 따라서 PCI 호스트 브리지가 DMA 요청을 편리하게 하는 특별한 DMA I/O 페이지를 활용하는 방법의 상위 레벨 흐름도를 설명한다. 그 과정은 I/O 페이지 버퍼가 지정되는 것을 도시하는 단계 (400) 로 시작한다. 그 단계는 I/O 장치가 DMA 판독을 실시할 것을 시도하는지 여부의 결정을 설명하는 단계 (402) 로 진행한다. I/O 장치가 DMA 판독을 실시할 것을 시도하지 않으면, 그 과정은 단계 (402) 로 복귀하여 DMA 판독이 결정될 때까지 반복한다. I/O 장치가 DMA 판독을 실시할 것을 시도하면, 그 과정은 대신에 PCI 호스트 브리지 캐시에서 라인의 상태를 확인하는 PCI 호스트 브리지를 도시하는 단계 (404) 로 진행한다. 다음으로, 그 과정은 PCI 호스트 브리지 캐시가 '무효' 상태에 있는지 여부의 결정을 설명하는 단계 (406) 로 전달된다. 캐시가 '무효' 상태에 있으면, 그 과정은 I/O 페이지로의 DMA 판독이 I/O 페이지의 제 1 캐시 라인의 판독인지 종래의 I/O 버퍼 (I/O 페이지가 아님) 의 판독인지 여부의 결정을 표시하는 단계 (408) 로 진행한다. 그 판독이 I/O 페이지의 제 1 캐시 라인 또는 종래의 I/O 버퍼에서의 임의의 캐시 라인의 판독이면, 그 과정은 '판독' 시스템 버스 동작이 그 라인의 공유 복사본을 검색할 것을 실행하는 것을 설명하는 단계 (412) 로 전달한다. L1/L2 캐시는 라인의 상태를 '수정' 상태로부터 '공유' 상태로 변화시켜야 한다. 그 과정은 그후 DMA 판독을 I/O 장치에 전달하는 PCI 호스트 브리지를 도시하는 단계 (418) 로 진행한다.
단계 (408) 로 복귀하여, 판독이 페이지에서 제 1 캐시 라인에 대한 것이 아니고, I/O 페이지에 대한 것이면, 그 과정은 대신 '캐시할 의사를 가진 판독' 시스템 버스 동작이 라인의 공유 복사본을 검색하며, L1/L2 캐시는 캐시 라인을 '수정' 상태 유지시킬 수 있는 것을 설명하는 단계 (410) 로 진행한다. 이후, 그 공정은 I/O 장치로의 DMA 판독 데이터를 전달하는 PCI 호스트 브리지를 도시하는 단계 (418) 로 전달한다.
여기서, 단계 (406) 로 복귀하여, PCI 호스트 브리지가 '무효' 상태에 있지 않으면, 그 과정은 대신 L1/L2 캐시 라인이 '공유' 상태에 있는지 여부의 결정을 설명하는 단계 (414) 로 진행한다. 캐시 라인이 '공유' 상태에 있지 않으면, 그 과정은 2개의 PCI 호스트 브리지 캐시 라인 상태만으로 가정되기 때문에 오류 메시지를 도시하는 단계 (416) 로 진행한다. 단계 (414) 로 복귀하여, L1/L2 캐시 라인이 '공유' 상태에 있으면, 그 과정은 I/O 장치로 DMA 판독 데이터를 전달하는 PCI 호스트 브리지를 설명하는 단계 (418) 로 진행한다. 그 과정은 I/O 페이지로 DMA 판독을 실시하는 것을 시도하는 I/O 장치를 설명하는 단계 (401) 로 계속한다.
'I/O 페이지' 의 코히어런시를 관리하기 위하여, PCI 호스트 브리지는 4K 'I/O 페이지' 가 재사용될 수 있기 전에 페이지의 제 1 캐시 라인에 저장함으로써 4K 'I/O 페이지' 를 무효화시키도록 조정된다. 제 1 라인이 L1/L2 캐시에 캐시가능 판독으로 나타나도록 고안되기 때문에, PCI 호스트 브리지는 DMA 판독에서 특별한 것으로서 제 1 캐시 라인을 처리한다. L1/L2 캐시는 제 1 캐시 라인을 '공유' 상태로부터 '수정' 상태로 변화시킬 프로세서의 의사를 지시하면서 시스템 버스 코히어런시 접근을 한다. PCI 호스트 브리지는 4K 페이지 입도 (크기) 에 대하여 검사하고 있으며, 4K 페이지의 제 1 캐시 라인에 저장이 발생하는 경우, PCI 호스트 브리지는 전체 페이지를 무효화시켜서, 4K 페이지에서 모든 캐시 라인을 무효화시킬 것을 요구하는 모든 시스템 버스 트래픽을 회피한다.
도 5 를 참조하여, 본 발명의 바람직한 실시예에 따라서, PCI 호스트 브리지가 시스템 버스 코히어런시를 검사할 수 있는 특별한 DMA I/O 페이지를 사용하는 방법의 I/O 페이지 무효 부분의 상위 레벨 흐름도를 도시한다. 그 과정은 무효 프로시저를 시작하는 것을 표시하는 단계 (500) 로서 시작한다. 그 과정은 L1/L2 캐시가 PCI 호스트 브리지에 의하여 '공유' 로 표시되는 4K I/O 페이지를 히트하는 L1/L2 캐시 라인의 상태를 변화시키는 시스템 버스 동작을 수행할지 여부의 결정을 설명하는 단계 (502) 에 진행한다. 그렇지 않으면, 그 과정은 PCI 호스트 브리지에 의하여 취해지는 동작이 없음을 표시하는 단계 (504) 로 전달한다. 그 과정은 단계 (502) 로 계속되며 반복한다. 단계 (502) 로 복귀하여, L1/L2 캐시가 L1/L2 캐시 라인의 상태를 변화시키는 시스템 버스 동작을 수행할 것을 시도하면, 그 페이지는 '공유' 로 표시되기 때문에, 그 과정은 대신 PCI 호스트 브리지 캐시에서 데이터의 영향받기 쉬운 4K 페이지 (예를 들어, I/O 페이지) 를 무효화시키는 PCI 호스트 브리지를 설명하는 단계 (506) 로 전달한다.
판독되는 4K I/O 페이지에서 제 1 캐시 라인만을 캐시가능한 것으로 정의함으로써, L1 캐시는 4K 버퍼를 재사용할 것을 시도하는 경우, '수정' 상태에서 제 1 캐시 라인을 제외한 모든 라인을 가진다. DMA 가 수행되는 경우, 제 1 라인만이 '공유' 상태에 있다. 페이지를 재사용하여 PCI 호스트 브리지가 그 페이지를 무효화시키는 것을 인식할 때마다, 소프트웨어는 I/O 페이지에서 제 1 캐시 라인에 저장한다. I/O 페이지의 제 1 캐시 라인으로의 DMA 판독 또는 DMA 기입은 L1/L2 캐시 가 '수정' 상태로부터 '공유' 상태로 제 1 캐시 라인을 변화시킨다.
본 발명의 바람직한 실시예에 따라 정의된 이러한 I/O 페이지는 4K 페이지의 제 1 캐시 라인으로의 저장이 하나의 시스템 버스 처리만을 요구하여 '공유' 상태로부터 '수정' 상태로 L1/L2 캐시를 취하기 때문에, 구 재사용 4K I/O 페이지에 저장함으로써 신 4K 페이지를 생성하는 경우, 프로세서의 성능을 크게 향상시킨다. I/O 페이지에서의 모든 다른 캐시 라인은 L1/L2 캐시에서의 '수정' 상태에 남겨져서, 이러한 캐시 라인들로의 프로세서 저장들은 시스템 버스 코히어런시 트래픽을 요구하지 않는 L1/L2 캐시로 직접 이동할 수 있다.
본 발명은 메모리 페이지가 다른 수단들에 의하여 접근되는 경우에도 시스템에 적용될 수도 있다. 본 발명의 추가적인 실시예는 PCI 호스트 브리지에서 TCE (Translation Control Entry) 테이블을 사용하는 시스템에 제공될 수도 있다. TCE 테이블은 일반적으로 설정 한계; 예를 들면, 4 기가 바이트 (GB) 이상에서 시스템 메모리를 접근하는데 사용되는 PCI 호스트 브리지에 제공된다. 그러한 시스템에서, TCE 그 자체는 4K I/O 페이지에서 제 1 캐시 라인을 사용하는 대신 기동 메커니즘으로서 사용될 수도 있다. 이러한 경우에, PCI 호스트 브리지는 '캐시할 의사가 없는 판독' (더 이상 특별한 것으로 처리되지 않음) 으로서 모든 판독을 수행할 수 있으며, 프로그램 논리는 그 페이지가 재사용될 때마다 DMA 판독에 사용되는 TCE 에 저장을 실행함으로써 페이지를 무효화시킨다 (즉, 데이터를 인출하도록 사용되는 TCE 가 수정되면, PCI 호스트 브리지는 4K 페이지 내에서 인출하는 데이터를 무효화시킴). I/O 페이지 실시예에서와 같이, 시스템 버스는 현저하게 감소된다.
본 발명은 전체적으로 기능적인 장치의 문맥에서 기재되어 있는 한편, 당업자는 본 발명의 구조 및/또는 그 특성이 다양한 형태의 명령어의 컴퓨터 사용 가능한 매체의 형태로 분배될 수 있고 분배를 실재로 수행하는데 사용되는 매체를 가지는 특정 타입의 신호에 상관없이 본 발명이 균등하게 적용된다는 것을 인식할 수 있을 것이다. 컴퓨터 사용 가능한 매체의 예는 ROM (Read Only Memory) 또는 EEPROM (Erasable, Electrically Programmable Read Only Memory) 과 같은 비휘발성이며 하드 코드된 타입의 매체, 플로피 디스크, 하드 디스크 및 CD-ROM 과 같은 기록 가능한 타입의 매체 및 디지털 및 아날로그 통신 링크와 같은 전송 타입 매체를 포함한다.
본 발명이 특히 바람직한 실시예를 참조하여 도시되고 기재되지만, 형태 및 상세에서 다양한 변화가 본 발명의 사상 및 범주를 일탈하지 않고 이루어질 수도 있다는 것은 당업자에 의하여 이해될 수 있을 것이다.
Claims (21)
- 직접 메모리 접근 및 캐시 성능을 향상시키는 방법에 있어서,메모리 버퍼 내의 제 1 캐시 라인이 캐시가능하게 판독되도록 상기 메모리 버퍼를 정의하는 단계;상기 메모리 버퍼 내의 나머지 캐시 라인을 수정 상태에 있는 것으로 더 정의하는 단계; 및공유 상태로부터 수정 상태로 상기 제 1 캐시 라인을 변화시키기 위한 상기 캐시에 의한 시도에 응답하여, 상기 메모리 버퍼 전체를 무효화시키는 단계를 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 방법.
- 제 1 항에 있어서,상기 메모리 버퍼를 무효화시키기 위하여, PCI 호스트 브리지를 기동시키는 단계를 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 방법.
- 제 2 항에 있어서,상기 버퍼 내의 데이터의 페이지의 상기 제 1 캐시 라인에 저장 동작을 수행하는 단계를 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 방법.
- 제 1 항에 있어서,시스템 메모리에서 페이지 버퍼를 탐색하는 단계를 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 방법.
- 제 4 항에 있어서,상기 제 1 캐시 라인이 상기 공유 상태로부터 상기 수정 상태로 변화되면, 상기 메모리 버퍼 내의 데이터의 전체 페이지를 무효화시키는 단계를 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 방법.
- 직접 메모리 접근 및 캐시 성능을 향상시키는 장치에 있어서,정보를 저장하기 위한 캐시;캐시 동작을 실시하기 위한 제어 논리 수단;메모리 버퍼 내에서 제 1 캐시 라인이 캐시가능하게 판독되도록 상기 메모리 버퍼를 정의하기 위한 하드웨어; 및추가적인 시스템 버스 명령어 없이, 상기 메모리 내의 모든 캐시 라인을 동시에 무효화시키기 위한 수단을 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 장치.
- 제 6 항에 있어서,메모리 저장을 예약할 수 있는 논리 수단을 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 장치.
- 제 6 항에 있어서,상기 메모리 버퍼 내의 나머지 캐시 라인을 수정 상태에 있는 것으로 더 정의하는 추가적인 논리 수단을 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 장치.
- 제 6 항에 있어서,상기 메모리를 무효화시키기 위하여 PCI 호스트 브리지를 기동시키는 논리 수단을 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 장치.
- 제 6 항에 있어서,상기 버퍼 내의 데이터의 페이지의 상기 제 1 캐시 라인에 저장 동작을 수행하는 수단을 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 장치.
- 제 6 항에 있어서,시스템 메모리에서 페이지 버퍼를 탐색하기 위한 검사 수단을 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 장치.
- 제 6 항에 있어서,추가적인 시스템 버스 명령어 없이 상기 메모리 버퍼 내의 모든 캐시 라인을 동시에 무효화시키기 위한 상기 수단은, 상기 제 1 캐시 라인이 상기 공유 상태로부터 상기 수정 상태로 변화되면, 상기 메모리 버퍼 내의 데이터의 전체 페이지를 무효화시키기 위한 수단을 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키는 장치.
- 직접 메모리 접근 및 캐시 성능을 향상시키기 위하여 컴퓨터 판독가능 매체 내에 명령어를 가지는 컴퓨터 프로그램 제품에 있어서,페이지 버퍼 내의 제 1 캐시 라인이 캐시가능하게 판독되도록 상기 페이지 버퍼를 정의하기 위한 상기 컴퓨터 판독가능 매체 내의 명령어;상기 페이지 버퍼 내의 나머지 캐시 라인을 수정 상태에 있는 것으로 더 정의하는 상기 컴퓨터 판독 가능한 매체 내의 명령어; 및공유 상태로부터 수정 상태로 상기 제 1 캐시 라인을 변화시키기 위한 상기 캐시에 의한 시도에 응답하여, 상기 페이지 버퍼의 내용을 무효화시키기 위한 상기 컴퓨터 판독가능 매체 내의 명령어를 포함하는 컴퓨터 프로그램 제품.
- 제 13 항에 있어서,상기 페이지 버퍼의 내용을 무효화시키기 위하여, PCI 호스트 브리지를 기동시키는 상기 컴퓨터 판독 가능한 매체 내의 명령어를 더 포함하는 컴퓨터 프로그램 제품.
- 제 14 항에 있어서,상기 페이지 버퍼의 상기 제 1 캐시 라인에 저장 동작을 수행하기 위한 상기 컴퓨터 판독가능 매체 내의 명령어를 더 포함하는 컴퓨터 프로그램 제품.
- 제 13 항에 있어서,시스템 메모리에서 상기 페이지 버퍼를 검사하기 위한 상기 컴퓨터 판독가능 매체 내의 명령어를 더 포함하는 컴퓨터 프로그램 제품.
- 제 16 항에 있어서,상기 제 1 캐시 라인이 상기 공유 상태로부터 상기 수정 상태로 변화되면, 상기 페이지 버퍼에서 데이터의 전체 페이지를 무효화시키기 위한 상기 컴퓨터 판독가능 매체 내의 명령어를 더 포함하는 컴퓨터 프로그램 제품.
- 직접 메모리 접근 및 캐시 성능을 향상시키기 위한 방법에 있어서,캐시 메모리를 위한 어드레스 테이블 내의 4K I/O 페이지를 위한 어드레스 엔트리를 정의하는 단계;기동 메커니즘으로서 상기 어드레스 엔트리를 사용하는 단계;상기 4K I/O 페이지에 '캐시할 의사 없는 판독' 으로서 모든 판독을 수행하는 단계;상기 어드레스 엔트리에 의하여 참조되는 위치에 직접 메모리 접근 (DMA) 판독 데이터를 저장하는 단계; 및상기 4K I/O 페이지 내의 모든 데이터를 무효화시키는 단계를 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키기 위한 방법.
- 제 18 항에 있어서,상기 4K I/O 페이지가 재사용될 여부를 결정하는 단계를 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키기 위한 방법.
- 제 17 항에 있어서,상기 DMA 판독 데이터를 상기 엔트리에 저장하는 단계는,상기 4K I/O 페이지에서 모든 데이터를 무효화시키기 위하여, 호스트 브리지를 기동시키는 단계를 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키기 위한 방법.
- 제 17 항에 있어서,상기 4K I/O 페이지에 새로운 데이터를 기입하는 단계를 더 포함하는 직접 메모리 접근 및 캐시 성능을 향상시키기 위한 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/282,631 | 1999-03-31 | ||
US09/282,631 US6338119B1 (en) | 1999-03-31 | 1999-03-31 | Method and apparatus with page buffer and I/O page kill definition for improved DMA and L1/L2 cache performance |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010006757A true KR20010006757A (ko) | 2001-01-26 |
KR100353656B1 KR100353656B1 (ko) | 2002-09-19 |
Family
ID=23082392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020000011581A KR100353656B1 (ko) | 1999-03-31 | 2000-03-08 | Dma 및 l1/l2 캐시 성능을 향상시키기 위한 방법, 장치 및 컴퓨터 프로그램 기록 매체 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6338119B1 (ko) |
JP (1) | JP3893008B2 (ko) |
KR (1) | KR100353656B1 (ko) |
CN (1) | CN1240000C (ko) |
CA (1) | CA2298780A1 (ko) |
TW (1) | TW457433B (ko) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257158B1 (en) | 1998-05-18 | 2007-08-14 | Kendyl A. Román | System for transmitting video images over a computer network to a remote receiver |
US7233619B1 (en) | 1998-12-21 | 2007-06-19 | Roman Kendyl A | Variable general purpose compression for video images (ZLN) |
US8290034B2 (en) | 1998-12-21 | 2012-10-16 | Zin Stai Pte. In, Llc | Video transmission and display including bit-wise sub-sampling video compression |
US8170095B2 (en) * | 1998-12-21 | 2012-05-01 | Zin Stai Pte. In, Llc | Faster image processing |
US8068544B2 (en) * | 1998-12-21 | 2011-11-29 | Zin Stai Pte. In, Llc | Compression with doppler enhancement |
US8416847B2 (en) * | 1998-12-21 | 2013-04-09 | Zin Stai Pte. In, Llc | Separate plane compression using plurality of compression methods including ZLN and ZLD methods |
US7671864B2 (en) * | 2000-01-14 | 2010-03-02 | Roman Kendyl A | Faster image processing |
US20030005428A1 (en) * | 2001-05-26 | 2003-01-02 | Roman Kendyl A. | Global media exchange |
US7016417B1 (en) | 1998-12-23 | 2006-03-21 | Kendyl A. Roman | General purpose compression for video images (RHN) |
US8004572B2 (en) * | 1999-05-17 | 2011-08-23 | Zin Stai Pte. In, Llc | System for transmitting a video stream over a computer network to a remote receiver |
US7191462B1 (en) | 1999-11-08 | 2007-03-13 | Kendyl A. Román | System for transmitting video images over a computer network to a remote receiver |
US6574682B1 (en) * | 1999-11-23 | 2003-06-03 | Zilog, Inc. | Data flow enhancement for processor architectures with cache |
US6728835B1 (en) * | 2000-08-30 | 2004-04-27 | Unisys Corporation | Leaky cache mechanism |
US6820161B1 (en) * | 2000-09-28 | 2004-11-16 | International Business Machines Corporation | Mechanism for allowing PCI-PCI bridges to cache data without any coherency side effects |
US6463510B1 (en) * | 2000-12-29 | 2002-10-08 | Compaq Information Technologies Group, L.P. | Apparatus for identifying memory requests originating on remote I/O devices as noncacheable |
US6470429B1 (en) * | 2000-12-29 | 2002-10-22 | Compaq Information Technologies Group, L.P. | System for identifying memory requests as noncacheable or reduce cache coherence directory lookups and bus snoops |
US6701417B2 (en) * | 2001-04-11 | 2004-03-02 | Sun Microsystems, Inc. | Method and apparatus for supporting multiple cache line invalidations per cycle |
US6684297B2 (en) * | 2001-04-11 | 2004-01-27 | Sun Microsystems, Inc. | Reverse directory for facilitating accesses involving a lower-level cache |
US6973528B2 (en) * | 2002-05-22 | 2005-12-06 | International Business Machines Corporation | Data caching on bridge following disconnect |
US20050038946A1 (en) * | 2003-08-12 | 2005-02-17 | Tadpole Computer, Inc. | System and method using a high speed interface in a system having co-processors |
WO2005076137A1 (en) * | 2004-02-05 | 2005-08-18 | Research In Motion Limited | Memory controller interface |
US7765534B2 (en) | 2004-04-30 | 2010-07-27 | International Business Machines Corporation | Compiler with cache utilization optimizations |
US7484016B2 (en) * | 2004-06-30 | 2009-01-27 | Intel Corporation | Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine |
TWI243999B (en) * | 2004-08-17 | 2005-11-21 | Via Tech Inc | Apparatus and related method for maintaining read caching data of south bridge with north bridge |
US20060100997A1 (en) * | 2004-10-27 | 2006-05-11 | Wall Gary C | Data caching |
US20060179174A1 (en) * | 2005-02-02 | 2006-08-10 | Bockhaus John W | Method and system for preventing cache lines from being flushed until data stored therein is used |
US20060179173A1 (en) * | 2005-02-02 | 2006-08-10 | Bockhaus John W | Method and system for cache utilization by prefetching for multiple DMA reads |
US7328310B2 (en) * | 2005-02-02 | 2008-02-05 | Hewlett-Packard Development Company, L.P. | Method and system for cache utilization by limiting number of pending cache line requests |
US7330940B2 (en) * | 2005-02-02 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Method and system for cache utilization by limiting prefetch requests |
US20060184735A1 (en) * | 2005-02-15 | 2006-08-17 | Maxwell Technologies, Inc. | Methodology for effectively utilizing processor cache in an electronic system |
JP4370327B2 (ja) * | 2005-03-14 | 2009-11-25 | パナソニック株式会社 | バスコントローラ |
US7533198B2 (en) * | 2005-10-07 | 2009-05-12 | International Business Machines Corporation | Memory controller and method for handling DMA operations during a page copy |
US7734842B2 (en) * | 2006-03-28 | 2010-06-08 | International Business Machines Corporation | Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages |
JP4785637B2 (ja) * | 2006-06-16 | 2011-10-05 | キヤノン株式会社 | データ転送装置及びその制御方法 |
US20090119460A1 (en) * | 2007-11-07 | 2009-05-07 | Infineon Technologies Ag | Storing Portions of a Data Transfer Descriptor in Cached and Uncached Address Space |
CN101600029B (zh) * | 2008-06-06 | 2013-05-08 | 博通集成电路(上海)有限公司 | 背景噪声降低系统及方法 |
US8806140B1 (en) * | 2009-12-16 | 2014-08-12 | Applied Micro Circuits Corporation | Dynamic memory module switching with read prefetch caching |
US20130262780A1 (en) * | 2012-03-30 | 2013-10-03 | Srilatha Manne | Apparatus and Method for Fast Cache Shutdown |
GB2529425A (en) * | 2014-08-19 | 2016-02-24 | Ibm | Data processing apparatus and method |
CN106484334A (zh) * | 2016-10-20 | 2017-03-08 | 郑州云海信息技术有限公司 | 一种释放预读资源的方法及装置 |
CN108628766B (zh) * | 2017-03-23 | 2024-01-23 | 三星电子株式会社 | 非易失存储器、计算系统、及读取方法 |
KR101951309B1 (ko) * | 2017-04-19 | 2019-04-29 | 서울시립대학교 산학협력단 | 데이터 처리 장치 및 데이터 처리 방법 |
US10599568B2 (en) * | 2018-04-09 | 2020-03-24 | Intel Corporation | Management of coherent links and multi-level memory |
CN111049566B (zh) * | 2019-11-20 | 2022-03-08 | 中国航空工业集团公司西安航空计算技术研究所 | 信息传递方法和机载lrm模块 |
CN114157621A (zh) * | 2020-09-07 | 2022-03-08 | 华为技术有限公司 | 一种发送清除报文的方法及装置 |
US20240053891A1 (en) * | 2022-08-12 | 2024-02-15 | Advanced Micro Devices, Inc. | Chipset Attached Random Access Memory |
CN117971728B (zh) * | 2024-03-29 | 2024-10-18 | 北京象帝先计算技术有限公司 | 缓存器及缓存控制方法、集成电路系统、电子组件及设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4885680A (en) * | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
JPH0612363A (ja) * | 1992-06-26 | 1994-01-21 | Toshiba Corp | メモリ制御装置およびマルチプロセッサシステム |
US5613153A (en) * | 1994-10-03 | 1997-03-18 | International Business Machines Corporation | Coherency and synchronization mechanisms for I/O channel controllers in a data processing system |
JP2852232B2 (ja) * | 1996-04-24 | 1999-01-27 | 新潟日本電気株式会社 | コンピュータ |
US5884100A (en) * | 1996-06-06 | 1999-03-16 | Sun Microsystems, Inc. | Low-latency, high-throughput, integrated cache coherent I/O system for a single-chip processor |
US5953538A (en) * | 1996-11-12 | 1999-09-14 | Digital Equipment Corporation | Method and apparatus providing DMA transfers between devices coupled to different host bus bridges |
US6128711A (en) * | 1996-11-12 | 2000-10-03 | Compaq Computer Corporation | Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes |
EP0887738B1 (en) * | 1997-06-27 | 2008-08-13 | Bull S.A. | Interface bridge between a system bus and local buses with translation of local addresses for system space access programmable by address space |
JPH11272555A (ja) * | 1998-03-20 | 1999-10-08 | Fujitsu Ltd | キャッシュメモリ制御システム |
US6003106A (en) * | 1998-05-27 | 1999-12-14 | International Business Machines Corporation | DMA cache control logic |
-
1999
- 1999-03-31 US US09/282,631 patent/US6338119B1/en not_active Expired - Lifetime
-
2000
- 2000-02-16 CA CA002298780A patent/CA2298780A1/en not_active Abandoned
- 2000-02-29 TW TW089103444A patent/TW457433B/zh not_active IP Right Cessation
- 2000-03-08 KR KR1020000011581A patent/KR100353656B1/ko not_active IP Right Cessation
- 2000-03-23 CN CNB001043838A patent/CN1240000C/zh not_active Expired - Fee Related
- 2000-03-24 JP JP2000084906A patent/JP3893008B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1268695A (zh) | 2000-10-04 |
JP3893008B2 (ja) | 2007-03-14 |
CA2298780A1 (en) | 2000-09-30 |
TW457433B (en) | 2001-10-01 |
KR100353656B1 (ko) | 2002-09-19 |
US6338119B1 (en) | 2002-01-08 |
JP2000305842A (ja) | 2000-11-02 |
CN1240000C (zh) | 2006-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100353656B1 (ko) | Dma 및 l1/l2 캐시 성능을 향상시키기 위한 방법, 장치 및 컴퓨터 프로그램 기록 매체 | |
US6721848B2 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
US5557769A (en) | Mechanism and protocol for maintaining cache coherency within an integrated processor | |
US7793067B2 (en) | Translation data prefetch in an IOMMU | |
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
US5119485A (en) | Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation | |
JP5528554B2 (ja) | ブロックベースの非透過的キャッシュ | |
US7669009B2 (en) | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches | |
US8099557B2 (en) | Push for sharing instruction | |
JP3989457B2 (ja) | 局所的なキャッシュ・ブロック・フラッシュ命令 | |
JP3714617B2 (ja) | キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット | |
KR19980079433A (ko) | 비포함 캐쉬 메모리 계층 구조에서 사용하기 위한 캐쉬 일관성 메카니즘 구현 방법 및 시스템 | |
US20120159077A1 (en) | Method and apparatus for optimizing the usage of cache memories | |
US8347034B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
US7308557B2 (en) | Method and apparatus for invalidating entries within a translation control entry (TCE) cache | |
US20220066940A1 (en) | Limited propagation of unnecessary memory updates | |
JP5319049B2 (ja) | キャッシュシステム | |
JPH10307754A (ja) | システム・バスに対するキャッシュ操作の要求ベースの発行方法及び装置 | |
US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors | |
WO2006102045A2 (en) | A method and an apparatus to reduce network utilization in a multiprocessor system | |
US7685372B1 (en) | Transparent level 2 cache controller | |
KR100304318B1 (ko) | 프로세서버스에대한캐시조작의요구에기초해서명령을발행하는방법및장치 | |
KR20040047398A (ko) | 캐쉬 메모리를 이용한 데이터 억세스 방법 | |
TWI782754B (zh) | 微處理器和在微處理器中實現的方法 |
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 | ||
FPAY | Annual fee payment |
Payment date: 20110902 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |