KR100268178B1 - 캐쉬 기능을 가지는 피시아이 장치 - Google Patents

캐쉬 기능을 가지는 피시아이 장치 Download PDF

Info

Publication number
KR100268178B1
KR100268178B1 KR1019970072050A KR19970072050A KR100268178B1 KR 100268178 B1 KR100268178 B1 KR 100268178B1 KR 1019970072050 A KR1019970072050 A KR 1019970072050A KR 19970072050 A KR19970072050 A KR 19970072050A KR 100268178 B1 KR100268178 B1 KR 100268178B1
Authority
KR
South Korea
Prior art keywords
pci
address
memory
local
data
Prior art date
Application number
KR1019970072050A
Other languages
English (en)
Other versions
KR19990052557A (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 KR1019970072050A priority Critical patent/KR100268178B1/ko
Publication of KR19990052557A publication Critical patent/KR19990052557A/ko
Application granted granted Critical
Publication of KR100268178B1 publication Critical patent/KR100268178B1/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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 캐쉬 기능을 가지는 피시아이(Peripheral Component Interconnect;이하, PCI라함) 장치에 관한 것으로, 특히 PCI 버스를 사용하는 컴퓨터 시스템에서, PCI 버스에 연결된 장치에 캐쉬 기능을 가지도록 하여PCI 버스를 통하여 여러가지 자원에 접근하는 사이클에 대해 빠른 접근이 이루어질 수 있도록 한 PCI장치에 관한 것이다.
PCI 버스는 자체에 빠른 주파수와 폭 넓은 어드레스/데이터 버스를 가지고 있기 때문에 최근 들어 널리 사용되고 있다. 그러나 외부 장치에 연결되는 여러 메모리, 디스크, 그리고 네트워크 자원 등은 각 자원들의 특성에 따른 지연 시간으로 인해 PCI 버스의 빠른 속도를 따라가지 못한다.
따라서 본발명은 늦은 지연 시간을 가지는 지역 메모리를 접근하는 사이클에 대해서 쓰기가 수행되면 캐쉬 메모리에 이 데이터 값을 써넣고는 바로 쓰기 사이클을 완료한다. 그리고 이 데이터를 PCI 버스 접근과 상관없이 늦은 메모리에 써넣는다. 캐쉬 메모리에 저장된 데이터를 PCI 버스를 통해서 요구하게 되면, 즉시 캐쉬 메모리에서 데이터를 보낼 수가 있다 이렇게 읽기와 쓰기를 캐쉬 메모리를 통하여 수행하게 하여 전체적으로 시스템의 성능을 향상시킨다.

Description

캐쉬 기능을 가지는 피시아이 장치
본 발명은 캐쉬 기능을 가지는 피시아이(Peripheral Component Interconnect;이하, PCI라함) 장치에 관한 것으로, 특히 버스를 사용하는 컴퓨터 시스템에서 PCI 버스를 통하여 여러가지 자원에 접근하는 사이클에 대해 PCI 버스 상에서의 대기시간을 최소화하고, PCI 버스에 연결된 장치에 캐쉬 기능을 가지도록 하여 빠른 접근이 이루어질 수 있도록 한 PCI장치에 관한 것이다.
일반적으로, PCI 버스는 시스템 보드내에서 구성되는 버스로 33MHz, 32 비트 어드레스-데이터 멀티프렉싱 버스이지만, 버스의 주파수는 66MHz, 버스폭은 64 비트로 확장이 가능하도록 이에 대한 사양도 정해져 있다. PCI 버스는 빠른 I/O 와 메모리 접근이 가능하고, 이를 위해 버스트 데이터 전송(연속적 데이터 전송)을 허용해 준다. PCI 버스는 특정 프로세서에 편향되어 설계되어 있지 않고, 다양한 형태의 프로세서에 적용이 가능하다. 현재까지 수립된 PCI 버스의 전기적 사양에 따르면 한 개의 PCI 버스에 10개의 로드를 부착할 수 있다. 따라서 이론상 최대로 장착할 수 있는 PCI 디바이스의 수는 168개까지 가능하다. 또한, 연속적 데이터 전송이 가능하여 32 비트 버스를 사용하는 경우에 최대의 데이터 전송 속도는 133 Mbytes/sec 이고, 64 비트인 경우에는 264 Mbytes/sec 까지 가능한 대용량의 데이터 전송 프로토콜을 지원한다. PCI 버스의 전기적 사양에서는 5.0 Volt 와 3.3 Volt 신호에 대해 모두 사용할 수 있도록 되어 있다. 현재의 PCI 클럭은 33 MHz이며, 버스 중재는 PCI 버스 중앙에 위치한 버스 중재기가 전체 PCI 버스에 연결된 요청기(Master)들의 버스 사용 요청을 중재하여 버스 사용을 허가해 주는 중앙 중재 방식을 사용한다.
여러 종류의 프로세서에 의해 시작되는 자원의 접근 사이클은 프로세서의 버스를 통해서 진행된다. 이러한 프로세서 버스상의 메모리 접근 사이클이 PCI 버스에 연결된 자원을 접근하는 경우에는 PCI 버스 브릿지에 의해 PCI 사이클로 변환이 된다. PCI 버스 브릿지는 PCI 버스를 요청하는 기능과 버스에 대해 응답하는 기능을 모두 가지고 있는 경우가 많다. 이러한 경우에는 PCI 버스 브릿지는 프로세서의 사이클에 대해 자신이 응답을 한다는 신호를 보낸 후에, 이를 PCI 버스를 통해 PCI 프로토콜로 변환하여 계속 그 사이클을 진행한다. 프로세서와 PCI 버스 브릿지 사이의 프로토콜은 프로세서의 특성에 따라 미리 정해지기 때문에, PCI 버스 브릿지는 이러한 프로세서와의 신호 핸드세이킹을 이미 정의된 프로토콜에 따라 동작할 수 있어야 한다.
이러한 PCI 버스 요청기(Master)인 PCI 버스 브릿지에 의해 진행되는 PCI 버스 사이클에 대해 응답해야 할 의무가 있는 응답기(Target)는, 먼저 PCI 버스를 통해 제기된 사이클이 자신이 가지고 있는 자원을 접근하는 것인지를 확인한 후에, 그 사이클에 대해 자신이 응답을 할 것이라는 신호를 보내고, 자신의 자원을 접근한 후에 그 결과를 다시 PCI 버스 신호로 바꾸어 보낸다. 이때 응답기에 연결된 자원은 대부분 PCI의 빠른 프로토콜에 맞추어 응답을 할 수가 없다. 이런 경우에는 PCI 버스 요청기는 응답이 올 때까지 PCI 버스를 잡고 있어야 한다.
따라서, 많은 컴퓨터 시스템 내에서 사용되는 PCI 버스는 전송 속도가 빠르고 데이터 폭이 넓어 높은 성능을 낼 수 있도록 사양이 정해져 있다. 그러나, PCI 버스에 외부 장치로 연결되는 여러 메모리 자원들이 PCI 버스의 빠른 속도를 따라 가지 못해, 자신의 메모리 접근을 진행하는 동안에 PCI 버스를 점유하고 있어, 전체 시스템의 성능을 감소시키는 경우가 많다.
따라서, 본 발명은 늦은 접근시간을 가지는 메모리 자원들을 사용하는 시스템에서 PCI 버스를 오랜시간 동안 점유하지 않도록 캐슁 기능을 제공하여, PCI 버스의 접근에 대한 응답의 대기시간을 최소화 시켜 전체 시스템의 성능을 향상시키는 캐쉬 기능을 가지는 PCI 장치를 제공하는데 그 목적이 있다.
상기한 목적을 달성하기 위한 본 발명은 주변기기 연결(이하, PCI라 함) 버스의 응답 사이클을 진행하는 PCI 버스 인터페이스 제어기와, 지역 캐쉬 메모리를 접근하는 동작과 지역 메모리 자원을 접근하는 동작을 수행하는 지역 캐쉬 메모리 제어기와, PCI 어드레스를 저장하는 PCI 어드레스 버퍼와, PCI 버스의 쓰기 데이터를 캐쉬 메모리와 지역 메모리로 보내기 위한 쓰기 데이터 버퍼와, PCI 버스의 어드레스를 자신의 메모리 영역인지를 확인하기 위해 사용되는 PCI 어드레스 비교기와, PCI 버스의 사이클이 어떤 전송 형태를 가지고 있으며 이들 전송 형태가 자신에 지역 메모리 접근을 진행하는 전송인지를 비교하는 PCI 전송 형태 비교기와, PCI버스 인터페이스 제어기의 상태를 제어하기 위한 PCI상태 제어기와, 지역 메모리 자원의 데이터를 PCI 버스 옆에 두어 빠른 데이터 접근을 허용해 주는 지역 캐쉬 메모리와, 캐쉬 메모리의 상태를 저장할 뿐 아니라 PCI의 접근 어드레스가 자신의 캐쉬 메모리에 있는지는 비교하는 지역 캐쉬 태그 메모리와, 지역 메모리에서 읽혀져 온 데이터가 바로 PCI 버스로 구동되지 않고 상기 지역 캐쉬 메모리에서 읽혀진 데이터가 빠른 사이클로 PCI 버스로 구동되게 하는 삼상태 버퍼와, 상기 모든 캐쉬 메모리와 지역 메모리 자원 및 각종 버퍼를 제어하는 신호를 원하는 시점에 적절히 구동하는 지역 캐쉬 상태 제어기를 포함하는 것을 특징으로 한다.
본 발명은 PCI 버스에 연결되어 PCI 버스 프로토콜을 준수하며 빠른 지역자원의 접근을 수행 할 수 있도록 하기 위한 장치로, PCI 버스 요청기(Master)로는 작용하지 않고 단지 응답기(Target)로만 동작되는 PCI 자원의 제어에 사용된다. 또한 DMA 동작을 하기 위해 사용되는 PCI 버스를 통한 연속적 데이터 접근 사이클(Burst Cycle)이 그 자체에 많은 PCI 접근 시간이 소요되고, 많은 데이터 버퍼를 필요로 하게 되어, 본 발명의 효용성이 발휘되지 않아 이를 지원하지 않는다.
도 1은 PCI 버스를 가지는 컴퓨터 시스템의 연결 구성 예시도.
도 2는 본 발명에 따른 캐쉬 기능을 가지는 PCI 장치의 상세 내부 주변 장치와 관계를 나타낸 예시도.
도 3은 본 발명에 따른 PCI 버스 쓰기 사이클의 응답 파형도.
도 4는 본 발명에 따른 PCI 버스 읽기 사이클의 응답 파형도.
도 5는 도 2에 도시된 PCI 버스 인터페이스 제어 회로의 상태 흐름도.
도 6은 도 2에 도시된 지역 캐쉬 제어기의 상태 흐름도.
〈도면의 주요부분에 대한 부호의 설명〉
10 : PCI 버스 인터페이스 제어기 12 : PCI 어드레스 비교기
13 : PCI 전송 형태 비교기 14 : PCI 사이클 상태 제어기
20 : 지역 캐쉬 제어기 21 : 지역 캐쉬 제어기
25 : PCI 어드레스 버퍼 26 : 쓰기 데이터 버퍼
이하, 첨부한 도면을 참조하여 본 발명을 상세히 설명하면 다음과 같다.
도 1을 참조하면, 본 발명이 적용될 수 있는 시스템의 전체도면으로서, 다수개의 프로세서(1 및 2)와 PCI 버스 브릿지(3), PCI 버스 요청기(4), 그리고 CTU(Caching Target Unit;5)가 연결되어 구성되어 있다. 또한, CTU(5)에 부가버스(Add-On Bus)로 연결이 되는 지역 메모리 자원들을 나타내고 있다. 부가버스는 지역 메모리 자원을 접근하기 위해 제공되는 어드레스, 데이터, 그리고 제어 신호들로 이루어진다. 현재 CTU(5)에 연결될 수 있는 지역 자원으로 다수개의 메모리( MEM0, MEM1)와 같이 두 개의 자원으로 나타내었다. 이는 특정 지역 메모리 자원을 지정할 수도 있으나, 본 발명은 여러종류의 자원을 지원할 수 있기 때문이다.
도 2를 참조하면, 본 발명에 따른 CTU 장치의 내부와 주변 장치와 관계를 나타내는 도면으로, CTU는 기능상 크게 두 개의 서브 모듈로 구성된다. PCI 사이클을 제어하는 PCIC(PCI bus interface Controller;10), 지역 메모리 자원을 은닉시키기 위한 지역 캐쉬 메모리와 이들 캐쉬 메모리를 제어하고 또한 지역 메모리 자원과의 인터페이스를 위한 LCCM(Local Cache Control Module;20)으로 이루어져 있다.
각각의 서브 모듈의 기능은 다음과 같다.
PCI버스 인터페이스 제어기(이하, PCIIFC라 함)(10)는 내부에 구성 레지스터(Configuration Register;11), 어드레스 비교기(ADEC, Address Decoder ;12), PCI 버스에서 진행중인 전송형태를 비교하는 전송 형태 비교기(TTC, Transfer Type Comparator;13), PCI 사이클의 진행 상태에 따른 프로토콜을 제어하는 PCI 상태 제어기 (PCICSM:PCI Stage Machine;14)로 구성된다. 구성 레지스터(11)는 CTU의 PCI 동작을 결정짓는데 필요한 정보가 저장된다. 이 정보들은 PCI 버스 사양에 정의된 내용이 저장될 수 있게 구성되어 있다. 구성 레지스터(11)를 초기화하는 과정에서 이 정보들이 구성된다. 구성 레지스터(11)는 PCI 버스의 구성 사이클(Configuration Cycle)에 의해 값이 쓰여진다. 이들 정보 중에서 중요한 것은 CTU가 응답해야 할 지역 메모리 영역이 정의되어 있어야 한다. 이는 CTU에 연결된 지역 메모리 자원이 지원하는 어드레스 영역을 의미하며, 이 지역 메모리 영역을 접근하는 사이클에 대해서는 CTU가 응답해야 한다.
어드레스 비교기(ADEC; 12)는 PCI 버스 사이클의 어드레스 단계(Address Phase)에서 구동되는 어드레스를 분석하여 CTU에 연결된 메모리를 접근하는지를 알기 위해 사용된다. 이때 PCI 버스의 사이클이 자신의 어드레스 영역인지를 구성 레지스터의 값과 비교를 한다.
현재 진행중인 사이클에 대해 CTU가 응답해야 하는 지를 알 수 있도록 하기 위해 전송형태 비교기(13)가 PCIIFC(10) 내부에 있다. 전송형태 비교기(13)는 PCI의 C/BE# 신호를 보고 CTU가 응답해야 하는 전송형태인가를 비교하는 전송형태 비교기 이다. 따라서 PCI 사이클이 읽기(read)인지 쓰기(write) 인지를 알려 주는 신호(201)를 구동한다. PCICSM(14)는 PCI 프로토콜에 맞게 각종 PCI 제어 신호를 구동하고, 이에 따라 LCC(21)가 동작될 수 있도록 하는 신호(201)를 구동한다. 또한, 현재 지역 메모리 접근 사이클이 PCI 버스에 숨겨져서 부가버스(Add-On Bus)를 통해서 진행중에 있으면, 이를 비지(busy) 신호(201)를 PCI상태제어기(14)에 알려진다. PCI 읽기 사이클인 경우에는 읽기가 진행되는 어드레스가 지역 캐쉬 메모리(22)에 있는 지의 여부를 힛(hit)신호(201)를 통해서 알 수 있다. 도 2에 도시된 바와같이 CLK, RESET#, AD[31:0], FRAME#, IRDY#, C/BE[3:0]#, DEVSEL#, STOP#, TRDY# 이다.
지역 캐쉬 제어 모듈(이하, LCCM라함)(20)은 CTU내에 있는 여러가지 지역 캐쉬 메모리(22,23), 이들 케쉬 메모리를 제어하는 제어기인 LCC(21), PCI 어드레스 버스로부터 받은 어드레스를 저장하는 PCI어드레스 버퍼(이하, ADDBUF라함)(25), PCI쓰기 데이터를 저장하는 쓰기 데이터 버퍼(Write Data Buffer: 이하, WDBUF라함 ;26)로 구성된다. LCC(21)는 캐쉬 메모리를 제어하는 신호를 구동할 뿐만 아니라, PCIIFC(10)와 지역 자원 제어기(LRC)와 같이 연결되어 CTU의 사이클 진행을 주도한다. 또한, 지역 메모리 제어를 위한 신호(lm0_rw, lm1_rw, lm0_cs, lm1_rw)들을 구동하고, 이들 지역 메모리 자원을 위한 Add-ON Bus를 제공하기 위한 어드레스와 데이터 버퍼를 제어하는 신호를 구동한다. 데이터 메모리(22)는 지역 캐쉬 메모리로 PCI 사이클의 진행을 빠르게 하기 위하여 PCI 버스 가장 가까이 위치하여, 자신의 캐쉬 메모리에 담긴 데이터를 PCI 버스 요청기가 요구하면 즉시 그 값을 보내 줄 수 있도록 하는 캐쉬 데이터 메모리이다. 이 데이터의 내용은 PCI 쓰기 싸이클에서는 자신의 해당 데이터 캐쉬 메모리 어드레스에 그 값을 써 넣게 되고, PCI 읽기 사이클인 경우 두가지 형태의 동작이 있다. PCI 읽기 사이클이 자신의 캐쉬에 HIT(PCI 버스 요청기가 요구한 어드레스의 데이터가 자신의 지역 캐쉬 메모리에 있는 경우)한 경우에는 캐쉬 데이터 메모리에서 즉시 읽어서 응답하게 되고, MISS인 경우에는 해당 지역 메모리 자원을 접근하여 읽어온 데이터를 PCI 버스를 통해서 전송함과 동시에 지역 캐쉬 데이터 메모리에 저장한다.
TAG 메모리(23)는 PCI에서 진행되는 읽기 사이클에 대해 자신의 캐쉬 데이터 메모리(22)에 그 데이터를 가지고 있는 지를 알아 보기 위해서 다이렉트 캐쉬 어드레스 매핑 방식에 의한 어드레스를 저장하고 있다. 또한, 자신이 데이터를 가지고 있는 경우에는 TAG 메모리(23)에서 힛(HIT) 신호(202)가 구동된다. 쓰기 사이클에 대해서는 그 해당 어드레스를 TAG 메모리에 저장한다. PCIIFC(10)에 의해 지역 메모리 접근이 시작되면, LCC(21)는 지역 메모리 자원을 접근하기 위해 lm0_cs(local memory 0 chip select), lm0_rw(local memory 0 read write), lm1_cs, lm1_rw 신호를 발생시킨다. 또한, 지역 메모리 자원의 접근이 완료되면, 읽기인 경우에는 읽어온 데이터를 자신의 지역 캐쉬인 데이터 메모리(22) 및 TAG 메모리(23)에 저장하는 신호(202, 203)를 구동하고, 쓰기인 경우에는 지역 메모리로 쓰기를 진행하는 동시에 이들 데이터와 어드레스 값을 지역 캐쉬 메모리에서 넣는다.
LCC(21)은 ADDBUF(25)를 제어하는 신호(205)와 WDBUF(26)을 제어하는 신호(206, 207)을 생성한다. 이 ADDBUF(25)에 PCI 어드레스를 저장하기 위한 신호로는 addbuf_latch 신호(205)가 있다. WDBUF(26)를 제어하는 신호로는 wdbuf_latch(206), wdbuf_oe(207) 신호가 있다.
ADDBUF(25)는 PCI 버스를 통해 진행되는 사이클의 어드레스를 저장하는 버퍼이다. ADDBUF(25)는 addbuf_latch(205)에 의해 PCI 버스의 AD[31:0]을 래치한다. ADDBUF(25)는 데이터 메모리(DATA RAM;22), TAG메모리(TAG RAM;23)의 어드레스를 구동하고, 또한 지역 메모리의 접근을 가능하도록 어드레스를 구동한다.
LCC(21)은 PCI 사이클이 쓰기인 경우에는 PCI 버스의 쓰기 데이터를 wdbuf_latch(206)로 WDBUF(26)에 써넣고 이 쓰기 데이터를 지역 메모리로 옮기기 위해 wdbuf_oe(207) 신호를 구동해야 한다. 읽기인 경우에는 wdbuf_ oe(207) 신호는 구동되지 않는다.
도 3을 참조하면, PCI 버스 쓰기 사이클에 대한 CTU 응답을 파형으로 나타낸 도면으로, PCI 버스 요청기는 FRAME# 신호와 함께 사이클 형태(C/BE#), 접근을 원하는 어드레스(AD)를 구동한다. 이때 CTU는 그 사이클에 대해서 자신이 응답해야 하는 지를 어드레스 비교기 ADEC(12)와 전송형태 비교기 TTC(13)의 비교 결과를 보고 자신이 응답해야 하는 지의 여부를 알 수 있다. PCI 버스 쓰기 사이클에 대해 자신이 응답해야 하는 지를 알게되면 PCIIFC(10)는 IRDY#가 구동되는 것을 확인함과 동시에 DEVSEL# 신호와 TRDY# 신호를 구동한다. 그리고 PCIIFC(10)는 쓰기 사이클이 진행되었음을 LCC(21)에게 알려준다. 이때 만약 이전에 진행된 지역 자원 접근이 LRC(30)에 의해 완료가 된 상태가 아니면, 이 쓰기 사이클에 대해서 재시도를 요청해야 한다. 이때는 TRDY# 신호가 구동됨과 동시에 STOP# 신호를 구동한다. PCI 쓰기 사이클은 위상(Phase)0에서 사이클이 시작되고 위상2에서 자신이 응답해야 됨을 알게되고, 위상3에서 모든 사이클이 완료된다. 따라서 쓰기 사이클에 대해서는 지연시간이 전혀 없이 동작되는 것을 알 수 있다.
도 4를 참조하면, PCI 버스 읽기 사이클에 대한 CTU 응답을 파형으로 나타낸 도면으로, PCI 버스 요청기는 FRAME# 신호와 함께 사이클 형태(C/BE#), 접근을 원하는 어드레스(AD)를 구동한다. 이때 CTU는 그 사이클에 대해서 자신이 응답해야 하는 지를 어드레스 비교기(12)와 전송형태 비교기(13)의 비교 결과를 보고 자신이 응답해야 하는 지의 여부를 알 수 있다.
PCI 버스 읽기 사이클에 대해 자신이 응답해야 하는 지를 알게되고, 또한 지역 캐쉬 메모리(22)에 읽기를 요구한 데이터가 들어 있는 것을 확인하게 되면, PCIIFC(10)는 IRDY#가 구동되는 것을 확인함과 동시에 DEVSEL# 신호와 TRDY# 신호와 데이터 AD[31:0]을 구동한다. 이때 만약 이전에 진행된 지역 자원 접근이 LRC(30)에 의해 완료가 된 상태가 아니거나, 자신의 지역 캐쉬 메모리(22)에 요청한 데이터가 들어 있지 않는 것이 확인되면, 이 읽기 사이클에 대해서 재시도를 요청해야 한다. 이때는 TRDY# 신호가 구동됨과 동시에 STOP# 신호를 구동한다. PCI 읽기 사이클은 위상0에서 사이클이 시작되고 위상2에서 자신이 응답해야 됨을 알게되고, 위상3에서 모든 사이클이 완료된다. 따라서 읽기 사이클에 대해서는 지역 캐쉬 메모리에 데이터가 들어 있으면, 지연시간이 전혀 없이 동작되는 것을 알 수 있다.
도 5를 참조하면, PCICSM(14)의 상태 흐름도로서, PCI 사이클이 진행된다. PCI 브릿지나 PCI 버스 요청기에 의해 제기 되는 PCI 버스 사이클이 자신의 지역 메모리를 접근하는 경우에는 PCICSM(14)은 다음과 같이 상태 흐름도가 진행된다.
IDLE(50) : PCI 브릿지나 PCI 버스 요청기에 의해 제기 되는 PCI 버스 사이클이 있는지를 FRAME# 신호를 통해서 살펴보는 상태이다. 상태에서 FRAME#이 구동되는 것이 확인되면 CC(120)로 상태가 천이된다. FRAME#이 구동되지 않으면 그대로 IDLE(110)에 머물러 있는다.
이때, ADDBUF는 항상 PCI 클럭인 CLK 신호로 어드레스를 래치하고 있어야 한다.
CC(51) : 이 상태에서는 IRDY#가 구동되기를 기다린다. IRDY#는 PCI 버스 요청기가 요청에 대한 준비가 되었음을 나타낸다. 이때 IRDY#가 구동되고 자신의 사이클임을 나타내는 mycycle 신호가 구동되는 지를 확인한다. mycycle 신호는 구성 레지스터(11)에 정의된 지역 메모리 영역임이 확인되고, C/BE#[3:0] 신호가 CTU가 응답해야 하는 사이클일 때 발생된다. 자신의 어드레스 영역임을 확인하는 데에는 ADEC(12)가 사용되고, 자신이 응답해야 되는 전송형태인 지는 TTC(13)이 사용된다. 만약 mycycle가 아니면 이때는 CTU가 해당 PCI 사이클에 대하여 응답하지 않아야 하므로, IDLE(110)로 상태가 천이(501)된다. mycycle이지만 IRDY#가 구동되지 않으면 현재의 CC(51) 상태에 머물러 있는다.
IRDY#가 구동되지 않는 이유는 PCI 사이클을 진행한 요청기가 어떤 이유에 의해 더이상 그 사이클이 진행할 수 없는 경우이므로, CTU도 더이상 사이클을 진행하지 않아야 한다. 이 상태에서 IRDY#가 구동되고 CTU가 PCI 사이클 진행에 대해 응답을 할 수 있는 상태이면, DONE(52)로 상태가 천이된다. 이렇게 천이될 수 있는 조건(502)은 mycycle이고, CTU가 현재 부가 버스로 다른 지역 메모리 자원을 접근하고 있지 않아야 한다. 이 busy 신호(201)는 LCC(21)에 의해 알 수 있다. 이 DONE(52) 상태로 천이되는 경우에 쓰기인 경우에는 busy 만 아니면, 바로 천이(504) 되지만 읽기인 경우에는 지역 캐쉬 메모리(22)에 PCI 요청기가 원하는 데이터가 있는 지를 확인해야 한다. 만약 캐쉬 메모리(22) 내에 PCI 요청기가 요구한 데이터가 있으면 LCCM(20)에 의해 hit 신호가 구동된다. 이렇게 되면 DONE(52)로 상태가 천이(503) 된다. 그러나 LCC(21)에 의해 busy 신호(201)가 구동되면 쓰기/읽기 모든 사이클에 대해 RETRY(53) 상태로 천이(506,507) 된다. 읽기인 경우에는 캐쉬 메모리(22)에 데이터가 없는 경우에도 RETRY(53) 상태로 천이(505) 된다.
DONE(52) : 이 상태에서는 PCI 버스를 통해서 사이클이 완료됨을 알리기 위해, TRDY#, DEVSEL# 신호가 구동된다. 읽기인 경우에는 지역 캐쉬 메모리의 데이터를 읽어서 이 값을 PCI 데이터 버스로 구동한다. 이 상태에서는 바로 IDLE(50) 상태로 천이가 이루어진다.
RETRY(53) : 이 상태는 PCI 요청기의 요구를 들어 줄 수 있는 상태가 아니므로 PCI 요청기가 다시 진행해 줄 것을 요구하는 신호(DEVSEL#, STOP#)를 PCI 버스에 구동한다. 이 상태에서는 바로 IDLE(50) 상태로 천이가 이루어진다.
도 6을 참조하면, LCC(21)의 상태 흐름도로서, PCIIFC(10)에 의해 시작된 지역 메모리 접근 사이클을 수행하는 기능과 지역 캐쉬 메모리를 제어하는 기능을 수행한다. 지역 메모리 자원에는 앞에서 설명한 바와 같이 여러종류가 될 수 있다. 따라서, LCC(21)는 무슨 자원이 연결되어 있는가에 따라서 그 제어가 달라 질 수가 있다. 그러나, 여기서는 LCC에 두개의 메모리 자원이 있는 것으로 가정을 하였다. 실제 어떠한 메모리 자원이 연결되어 있어도 이 발명은 적용이 가능하다. 대부분의 메모리 자원은 어드레스, 데이터, 읽기/쓰기, 그리고 칩선택(chip enable)신호로 이루어져 있기 때문이다. 여기서 어드레스 부분은 ladd이고, 데이터 부분은 ldata이고 읽기/쓰기는 lm0_rw, lm1_rw에 해당되고, 칩선택 신호는 lm0_cs, lm1_cs에 해당된다.
LCC(21)가 수행하는 두 번째 기능은 CTU 내부에 있는 지역 캐쉬 메모리(22, 23)를 제어하는 것이다. 이 캐쉬 메모리를 제어하기 위해서 구동되는 신호는 DATA RAM을 읽기/쓰기 신호(dr_rw, 203)와 DATA RAM(22)의 데이터를 밖으로 구동하는 신호(dr_oe, 203)가 있고, 또한 캐쉬 TAG RAM의 읽기/쓰기 신호(tr_rw, 202)와 TAG RAM에서 어드레스를 비교한 결과가 일치하게 되면 구동되는 hit 신호(202)가 있다. 이 외에도 LCCM(20) 내부에 있는 두개의 어드레스, 메모리 버퍼를 제어하는 신호(205, 206, 207)를 제어한다.
LCC의 상태흐름은 아래와 같다.
IDLE(60) : 이 상태는 사이클이 진행되기를 기다리는 상태이다. PCIIFC에 의해 사이클이 읽기가 진행되면 read신호(201), 쓰기가 진행되면 write 신호(201)가 발생된다. 이 신호들은 TTC(13)에 의해 생성되는 신호들이다. 이때 진행되는 사이클이 CTU에서 처리해야 되는 경우에는 mycycle 신호가 구동된다. 따라서 읽기(read)이고 자신의 사이클(mycycle)이고, 읽기를 요청한 데이터가 지역 캐쉬 메모리(22)에 있는 경우(hit)에는 RD_HIT 상태(61)로 천이된다(602). 읽기이고 캐쉬 메모리에 없는 경우에는 RD_GO 상태(62)로 천이된다(601). PCI 사이클이 쓰기이고, 자신이 처리해야 되는 경우에는 WR_CA(64) 상태로 천이된다(604). 이 모든 경우가 아니면 현재의 IDLE(210) 상태에 머물러 있는다(605). 이 상태에서 mycycle인 경우에는 PCI 버스 상의 어드레스를 ADDBUF(25)에 보관해야 하므로 더이상 addbuf_latch신호(205)를 구동하지 않는다. 이 신호는 평상시에는 PCI 클럭과 같은 주기로 계속 구동을 하여 PCI 버스 상의 어드레스를 언제든지 가져 올 수 있는 상태로있어야 한다. 이 상태에서는 PCI 버스에서 진행되는 사이클이 언제 진행될 지 모르기 때문에, 언제든지 지역 캐쉬 메모리를 읽을 수 있는 상태로있어야 한다. 따라서 지역 캐쉬 메모리로는 읽기 상태로 항상 신호가 구동되고 있다.
RD_HIT(61) : 이 상태는 지역 캐쉬 메모리에서 읽기를 요구한 데이터를 바로 PCI 버스로 보내 주는 상태이다. PIC 버스 요청기가 요구한 데이터가 읽기이고 캐쉬 메모리에 hit 된 상태이기 때문에 캐쉬 메모리에서 읽혀진 데이터는 바로 PCI 데이터 버스를 통해서 구동된다. 따라서 DATA RAM(203)에서 읽혀진 데이터가 PCI 데이터 버스로 구동될 수 있도록 신호(204)를 구동한다.
이 상태에서는 한 PCI 클럭만에 버스로 데이터를 구동할 수 있기 때문에 바로 IDLE 상태(60)로 천이된다. 다시 어드레스를 ADDBUF(25)에 보관하기 위해서 지금까지 멈추어 두었던 addbuf_latch 신호(205)를 계속 구동한다.
RD_GO(62) : 지역 캐쉬 메모리(22)에 데이터가 없기 때문에 지역 메모리로 PCI 요청기가 요구한 데이터를 읽으러 가는 상태이다. 이 상태에 있는 동안에 LCC(21)는 busy 신호(201)를 계속 구동하고 있어야 한다. 이는 이 신호가 구동되어야 또 다른 PCI 버스 사이클이 진행되지 않기 때문이다.
읽기가 완료되면 read_done 신호가 구동된다. 이 신호는 현재 무슨 지역 메모리 자원이 CTU에 연결되어 있는지는 도 2의 구성 레지스터(Configuration register;11)에 초기화 작업 시에 정의가 되고, 또한 각 지역 메모리 자원들의 접근 시간 또한 이때 정의되기 때문에 이 내용을 참조하여 그 신호의 구동 시간이 결정된다. 이 상태에 있는 동안에는 lm0_rw, lm1_rw, lm0_cs, lm1_cs신호가 구동된다. 어떤 지역 메모리 자원을 접근하는 가에 따라 신호가달라지지만, 읽기 신호가 구동되고 해당 지역 메모리를 지정하기 위한 chip_select 신호가 구동된다. 이 신호들은 읽기가 완료될 때까지 구동된다. read_done 신호가 구동되면 WRR_CA(63) 상태로 천이된다(607). 그렇지 않으면 계속 RD_GO(62) 상태에 머물러 있는다(606).
WRR_CA(63) : 지역 캐쉬 메모리에 지역 메모리 자원으로부터 읽어온 데이터를 써넣는 상태이다. 따라서, 도 2의 TAG 메모리(23)나, 데이터 메모리(22)에 쓰기 신호를 구동하고 ldata에 구동되고 있는 데이터가 데이터 메모리(22)에 써넣어 진다. 다시 어드레스를 ADDBUF(25)에 보관하기 위해서 지금까지 멈추어 두었던 addbuf_latch 신호(205)를 계속 구동한다. 구동되고 있는 busy 신호(201)를 멈추고 바로 IDLE 상태(60)로 천이한다(608).
WR_CA(64) : 이 상태는 PCI 요청기가 요구한 쓰기 데이터를 WDBUF에 PCI 버스의 쓰기 데이터가 저장하고, 이 데이터를 지역 캐쉬 메모리에 쓰기를 수행하는 단계이다. WRR_CA(63)과 같은 형태의 캐쉬 메모리 쓰기가 일어난다. 또한 PCI 요청기가 요구한 쓰기 데이터를 지역 메모리로 써 넣어야 하므로 WR_GO 상태(65)로 천이된다(609).
WR_GO(65) : 이 상태는 지역 메모리 쓰기를 수행하는 단계이다. 이때 이 상태에 있는 동안에 LCC(21)는 busy 신호(201)를 계속 구동하고 있어야 한다. 이는 지역 메모리 자원으로 쓰기가 아직 완료되지 않은 상태에서 또 다른 쓰기 사이클이 진행되면 안되기 때문이다. 지역 메모링 쓰기가 완료된 것이 write_done 신호를 통해 알려지면 IDLE 상태(60)로 천이된다(610). 그렇지 않으면 지역 메모리 자원에 쓰기가 완료되기를 기다린다(611).
이 상태에 있는 동안에는 lm0_rw, lm1_rw, lm0_cs, lm1_cs 신호가 구동된다. 어떤 지역 메모리 자원을 접근하는 가에 따라 신호가 달라지지만, 쓰기 신호가 구동되고 해당 지역 메모리를 지정하기 위한 chip_select 신호가 구동된다. 이 신호들은 쓰기가 완료될 때까지 구동된다. write_done이 완료되면, 어드레스를 다시 ADDBUF(25)에 보관하기 위해서 addbuf_latch 신호(205)를 계속 구동한다. 또한 여태껏 구동되던 busy신호(21)의 구동을 멈춘다.
본 발명은 빠르고 데이터 폭이 넓어 높은 성능을 가지는 PCI 버스에 외부 장치로 연결되는 여러 지역 메모리 자원들이 PCI 버스의 빠른 속도에 따라 가지 못하여 자신의 메모리 접근을 진행하는 동안에 PCI 버스를 잡게 되어 전체 시스템의 성능을 감소시키는 경우를 방지하고, PCI 버스의 접근에 대한 응답의 대기시간을 최소화하기 위해 지역 캐쉬 메모리를 사용함으로써 빠른 PCI 버스 사이클을 지원하게 되어 많은 프로세싱 데이터를 빠르게 처리하는 효과를 가질 수 있다.

Claims (3)

  1. 주변기기 연결 버스의 응답 사이클을 진행하는 주변기기 연결 버스 인터페이스 제어기와,
    지역 캐쉬 메모리를 접근하는 동작과 지역 메모리 자원을 접근하는 동작을 수행하는 지역 캐쉬 메모리 제어기와,
    주변기기 연결 어드레스를 저장하는 주변기기 연결 어드레스 버퍼와,
    주변기기 연결 버스의 쓰기 데이터를 캐쉬 메모리와 지역 메모리로 보내기 위한 쓰기 데이터 버퍼와,
    주변기기 연결 버스의 어드레스를 자신의 메모리 영역인지를 확인하기 위해 사용되는 주변기기 연결 어드레스 비교기와,
    주변기기 연결 버스의 사이클이 어떤 전송 형태를 가지고 있으며 이들 전송 형태가 자신에 지역 메모리 접근을 진행하는 전송인지를 비교하는 주변기기 연결 전송 형태 비교기와,
    주변기기 연결버스 인터페이스 제어기의 상태를 제어하기 위한 주변기기 연결상태 제어기와,
    지역 메모리 자원의 데이터를 주변기기 연결 버스 옆에 두어 빠른 데이터 접근을 허용해 주는 지역 캐쉬 메모리와,
    캐쉬 메모리의 상태를 저장할 뿐 아니라 주변기기 연결의 접근 어드레스가 자신의 캐쉬 메모리에 있는지는 비교하는 지역 캐쉬 태그 메모리와,
    지역 메모리에서 읽혀져 온 데이터가 바로 주변기기 연결 버스로 구동되지 않고 상기 지역 캐쉬 메모리에서 읽혀진 데이터가 빠른 사이클로 주변기기 연결 버스로 구동되게 하는 삼상태 버퍼와,
    상기 모든 캐쉬 메모리와 지역 메모리 자원 및 각종 버퍼를 제어하는 신호를 원하는 시점에 적절히 구동하는 지역 캐쉬 상태 제어기를 포함하는 것을 특징으로 하는 캐쉬 기능을 가지는 주변기기 연결 장치.
  2. 제 1 항에 있어서,
    상기 상태 제어기는 주변기기 연결 버스 사이클의 진행을 빠르게 하기 위해 전체 세번의 주변기기 연결 클럭으로 모든 주변기기 연결 동작을 수행하는 것을 특징으로 하는 캐쉬 기능을 가지는 주변기기 연결 장치.
  3. 제 1 항에 있어서,
    상기 지역 캐쉬 메모리 제어기는 다양한 종류의 메모리 자원에 적용할 수 있고, 지역 캐쉬 메모리 자원을 주변기기 연결 프로토콜에 맞게 제어하여 빠른 데이터 접근을 가능케 하는 것을 특징으로 하는 캐쉬 기능을 가지는 주변기기 연결장치.
KR1019970072050A 1997-12-22 1997-12-22 캐쉬 기능을 가지는 피시아이 장치 KR100268178B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970072050A KR100268178B1 (ko) 1997-12-22 1997-12-22 캐쉬 기능을 가지는 피시아이 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970072050A KR100268178B1 (ko) 1997-12-22 1997-12-22 캐쉬 기능을 가지는 피시아이 장치

Publications (2)

Publication Number Publication Date
KR19990052557A KR19990052557A (ko) 1999-07-15
KR100268178B1 true KR100268178B1 (ko) 2000-10-16

Family

ID=19528197

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970072050A KR100268178B1 (ko) 1997-12-22 1997-12-22 캐쉬 기능을 가지는 피시아이 장치

Country Status (1)

Country Link
KR (1) KR100268178B1 (ko)

Also Published As

Publication number Publication date
KR19990052557A (ko) 1999-07-15

Similar Documents

Publication Publication Date Title
US5353415A (en) Method and apparatus for concurrency of bus operations
US5463753A (en) Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller
EP0392657B1 (en) System providing cache coherent direct memory access between dissimilar bus systems
US6405271B1 (en) Data flow control mechanism for a bus supporting two-and three-agent transactions
US5802576A (en) Speculative cache snoop during DMA line update
US5564114A (en) Method and an arrangement for handshaking on a bus to transfer information between devices in a computer system
US5045998A (en) Method and apparatus for selectively posting write cycles using the 82385 cache controller
US5561783A (en) Dynamic cache coherency method and apparatus using both write-back and write-through operations
WO1994008297A9 (en) Method and apparatus for concurrency of bus operations
JPS6113618B2 (ko)
US5678064A (en) Local bus-ISA bridge for supporting PIO and third party DMA data transfers to IDE drives
US5313591A (en) Computer bus arbitration for N processors requiring only N unidirectional signal leads
US20030046473A1 (en) Method and interface for improved efficiency in performing bus-to-bus read data transfers
US5327545A (en) Data processing apparatus for selectively posting write cycles using the 82385 cache controller
US5933613A (en) Computer system and inter-bus control circuit
JP4097883B2 (ja) データ転送装置および方法
US5933859A (en) Processor to memory interface logic for use in a computer system using a multiplexed memory address
US5809534A (en) Performing a write cycle to memory in a multi-processor system
KR100268178B1 (ko) 캐쉬 기능을 가지는 피시아이 장치
US5699540A (en) Pseudo-concurrent access to a cached shared resource
JP3817327B2 (ja) データ処理システムにおいてチップ選択可能な装置をアクセスする方法および装置
EP0184320B1 (en) Improved performance memory bus architecture
US6009482A (en) Method and apparatus for enabling cache streaming
KR0176075B1 (ko) 주변소자연결 버스 응답 장치
KR100274425B1 (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
FPAY Annual fee payment

Payment date: 20070702

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee