KR100190377B1 - 마이크로 프로세서의 버스 인터페이스 유닛 - Google Patents

마이크로 프로세서의 버스 인터페이스 유닛 Download PDF

Info

Publication number
KR100190377B1
KR100190377B1 KR1019960052657A KR19960052657A KR100190377B1 KR 100190377 B1 KR100190377 B1 KR 100190377B1 KR 1019960052657 A KR1019960052657 A KR 1019960052657A KR 19960052657 A KR19960052657 A KR 19960052657A KR 100190377 B1 KR100190377 B1 KR 100190377B1
Authority
KR
South Korea
Prior art keywords
cycle
bus
write
buffer
interface unit
Prior art date
Application number
KR1019960052657A
Other languages
English (en)
Other versions
KR19980034568A (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 KR1019960052657A priority Critical patent/KR100190377B1/ko
Priority to US08/965,764 priority patent/US5881256A/en
Publication of KR19980034568A publication Critical patent/KR19980034568A/ko
Application granted granted Critical
Publication of KR100190377B1 publication Critical patent/KR100190377B1/ko

Links

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/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache 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)

Abstract

1. 청구범위에 기재된 발명이 속한 기술분야
고성능 마이크로 프로세서에서 2개의 버스 사이클을 동시에 진행시킬 수 있는 버스 인터페이스 유닛(unit).
2. 발명이 해결하려고 하는 기술적 과제
수퍼스칼라 방식을 사용하는 고성능 마이크로 프로세서, 특히 펜티움과 같은 2개의 병렬적인 파이프라인 구조를 사용하는 마이크로 프로세서에서, 각 파이프라인으로부터 오는 버스 사이클의 요구를 동시에 처리할 수 있는 마이크로 프로세서의 버스 인터페이스 유닛(unit)를 제공하는 것임.
3. 발명의 해결방법의 요지
고성능 마이크로프로세서의 버스 인터페이스 유닛으로, 프로세서의 성능 향상을 향상 시키는 수단으로 2개의 버스 사이클을 동시에 파이프라인 진행시킬 수 있는 버스 인터페이스 유닛을 구성함.
4. 발명의 중요한 용도
펜티움 호환 마이크로 프로세서의 버스 인터페이스 유닛으로 사용할 수 있음.

Description

마이크로 프로세서의 버스 인터페이스 유닛
본 발명은 마이크로 프로세서에 관한 것으로, 특히 고성능 마이크로 프로세서에서 2개의 버스 사이클을 동시에 진행시킬 수 있는 버스 인터페이스 유닛(unit)에 관한 것이다.
반도체 설계 및 공정 기술의 발달로 인해서, 더욱더 복잡한 기능을 단일 칩 안에 집적하는 것이 가능하게 되었다. 이러한 발전에 따라 마이크로 프로세서도 기존의 것에 비해 엄청난 성능 향상을 이룩하게 되었다.
그런데 이러한 성능 향상은 주로 내부 마이크로 프로세서의 내부 성능을 비약적으로 발전시켰으나, 주변 장치들은 그 장치들의 특수성으로 인해 상대적으로 느리게 발전하였다. 예를 들면, 반도체 메모리의 속도는 프로세서의 속도에 비해 훨씬 느리기 때문에 내부적으로 아주 빠르게 연산을 할지라도 메모리를 한 번 억세스(access)하면 많은 사이클을 손해를 보게 된다.(캐쉬 메모리(cache memory)를 갖고 있더라도, 반드시 사이클이 외부로 나가야 하는 경우는 문제가 된다.) 특히, 이러한 문제는 여러 개의 명령어를 동시에 수행시키는 수퍼스칼라 프로세서의 경우는 더 부각되게 된다.
그러므로 이러한 내부 코아와 주변 장치의 속도 차이 및 수퍼 스칼라 구조에서 오는 많은 버스 동작(bus activity)의 필요성을 만족시키기 위해서는, 이것들 간의 인터페이스 블락인 버스 인터페이스 유닛의 개선이 필요하다.
구체적으로 설명하면, 마이크로 프로세서의 코아 유닛(core unit)은 연산 유닛(execution unit)을 여러 개를 동시에 여러 개의 명령어를 수행하는 수퍼스칼라(super-scalar)방식을 사용하거나, 파이프라인(pipeline)단계를 종전의 단순한 파이프라인 방식에 비해 더 세분화 시키는 수퍼파이프라인(super-pieline)방식을 통하여 크게 성능이 개선되었다.
이러한 코아 유닛의 성능 향상으로 인하여, 종전의 프로세서에 비해서 훨씬 더 큰 버스 활동(bus activity)를 요하게 되었다.
또한 상대적으로 아주 빠르게 동작 속도가 향상되어 가는 코아 유닛에 비해, 프로세서의 주변 장치들은 느리게 동작 속도가 증가하고 있기 때문에, 이것들이 매개(interface)역할을 하고 있는 버스 인터페이스 유닛의 중요성이 날로 커지고 있는 실정이다.
본 발명의 적용 대상이 되는 펜티움호환 프로세서의 경우도, 내부 코아 유닛은 2개의 명령어를 동시에 수행시킬 수가 있으므로, 기존의 486과 같은 버스 인터페이스 유닛으로는 코아의 성능 향상을 만족시킬 수가 없다.
본 발명의 과제는 수퍼스칼라 방식을 사용하는 고성능 마이크로 프로세서, 특히 펜티움과 같은 2개의 병렬적인 파이프라인 구조를 사용하는 마이크로 프로세서에서, 각 파이프라인으로부터 오는 버스 사이클의 요구를 동시에 처리할 수 있는 마이크로 프로세서의 버스 인터페이스 유닛(unit)를 제공하는 것이다.
도 1 은 펜티움 호환 마이크로 프로세서의 버스 인터페이스 유닛의 역할을 보여주기 위한 간략화된 시스템 구성도.
도 2 는 본 발명에 의한 버스 인터페이스 유닛의 구성을 나타낸 개략도.
도 3 은 펜티움의 버스 사이클 파이프 라이닝을 설명하기 위한 개념도이다.
도 4 는 본 발명에 의한 사이클 큐의 구성을 나타낸 개략도.
도 5 는 스눕 사이클 처리용 상태 머신의 개념도.
도 6 은 쓰기 버퍼(write buffer)용 상태 머신의 개념도.
도 7 은 쓰기 버퍼의 구성을 나타낸 개략도.
도면의 주요 부분에 대한 부호의 설명
102 ... 버스 사이클 중재기 104 ... 사이클 정보 선택기
106 ... 사이클 큐 108 ... 사이클 발생기
110 ... 버스 제어기 112 ... 쓰기 버터
114 ... 스눕 제어기
상기 과제를 달성하기 위하여 본 발명은,
여러 유닛으로부터 오는 여러 개의 사이클 요구를 중재하는 버스 사이클 중재기(Bus Cycle Arbiter); 상기 버스 사이클 중재기에서 결정된 신호에 따라 유닛으로부터 오는 사이클 정보를 선택하는 사이클 정보 선택기(Cycle Mux); 선택된 정보를 저장하는 2개까지 저장하는 사이클 큐(Cycle Queue); 상기 사이클 큐 정보에 따라 버스 사이클을 발생시키는 사이클 발생기(Cycle Generator); 및 이러한 모든 유닛을 제어하는 버스 제어기(Bus Controller); 병렬성에 걸맞게 메모리 쓰기 사이클의 성능 향상을 위해서, 코아 유닛이 실제 쓸 장소에 다 쓸 때까지 기다리지 않고 다음 동작을 할수 있도록 해주는 쓰기 버터(Write Buffer); 및 쓰기 지연(write back)캐쉬를 사용하는, 고성능 프로세서에서 내부 캐쉬 데이터의 동일성 유지를 위해, 내부 캐쉬에 대한 조사(snooping)를 담당하는 스눕 제어기(Snoop Controller)를 포함하여 이루어진 마이크로 프로세서의 버스 인터페이스 유닛을 제공하는 것이다.
상기 버스 인터페이스 유닛은 프로세서의 성능 향상을 향상 시키는 수단으로 2개의 버스 사이클을 동시에 파이프라인 진행시킬 수 있다.
상기 마이크로 프로세서는 코아 유닛과 버스 유닛과의 사이클 요구와 승인에 관계된 프로토콜을 데이터 캐쉬와 코드 캐쉬만으로 한정을 시킴으로써, 인터페이스 부분을 쉽게 한다.
상기 사이클 중재기는 여러 장치로부터 오는 사이클 요구를 고정적인 우선 순위 원칙을 적용시켜 승인 신호를 주며, 그 우선 순위에 따라 중재기를 사용한다.
상기 사이클 중재기의 우선 순위 원칙은 쓰기 백 버퍼 사이클 큐 쓰기 버퍼 데이터 캐쉬 코드 캐쉬의 순이다.
상기 쓰기 백 버퍼는 펜티움 호환 프로세서의 데이터 캐쉬에 3개의 쓰기 백 버퍼가 있으므로, 이것들 간의 우선 순위는 외부 스눕 쓰기 백 버퍼 내부 스눕 쓰기 백 버퍼 대체(replacement) 쓰기 백 버퍼로 한다.
상기 사이클 큐는 2개의 사이클을 동시에 진행시키기 위한 저장 수단, 중단된 사이클을 재시작하는 수단 및 비정렬 사이클을 진행시키기 위한 수단으로 사용된다.
상기 사이클 큐는 2개의 큐중 먼저 쓰여진 것을 나타내는 올더(Older) 필드, 진행이 중지된 사이클이 있다는 것을 알리는 할트(Halt) 필드, 사이클을 진행시킬 주소인 어들(Addr) 필드, 진행될 오퍼런드(operand)의 크기를 나타내는 오에스(OS)필드, 비정렬 사이클의 첫 번째 사이클 임을 나타내는 에프(F)필드, 진행할 사이클의 종류를 나타내는 버스 사이클(bus cycle) 필드, 외부 캐쉬를 제어하기 위한 피씨디(pcd)/디더블유티(pwt) 필드 및 큐에 타당한(valid)한 사이클이 저장되어 있다는 브이(V) 필드를 포함한다.
상기 사이클 큐는 실제 사이클을 큐를 움직이는 대신에 올더(Older) 필드 라는 포인터 수단을 이용해서 지정한다.
상기 버스 제어기는 전체 버스 유닛을 제어하고, 사이클이 진행되는 상태에 따라 6개의 단계로 나누어 2개의 파이프라인을 진행시키는 수단으로 사용한다.
상기 쓰기 버퍼는 메모리 쓰기(write)를 하는 경우 실제 메모리에 데이터가 쓰일 때까지 코아 유닛이 기다지 않고 다음 동작을 할 수 있도록, 쓰기 사이클에 대한 일시적인 버퍼 역할을 하는 수단으로 사용한다.
상기 쓰기 버퍼는 버퍼를 제어하기 위한 수단으로 5개의 상태(state)를 이용해서 제어하는 상태 머신(state machine)을 갖는다.
상기 쓰기 버퍼의 5개의 상태는 버퍼가 비어 있다는 것을 나타내는 아이들(IDLE)상태, 현재 버퍼에 어떤 메모리 쓰기(write)가 저장되어 버스 사이클을 얻기 위해 중재기로 사이클 요청 신호를 보내는 알이큐(REQ)상태, 버퍼에 저장된 사이클이 현재 버스 유닛으로 진행되는 서브(SERV)상태, 외부에서 사이클 중지 신호가 들어와 진행이 중지된 보프(BOFF)상태 및 데이터 캐쉬의 라인 상태(line state)를 갱신 시키는 업데이트(UPDATE)상태로 구성된다.
상기 쓰기 버퍼는 코아 유닛의 파이프 당 1개씩을 할당해서 각 파이프로부터의 쓰기(write)를 동시에 저장하는 수단을 갖는다.
상기 스눕 제어기는 스눕 동작을 버스 프로토콜에 맞도록 제어하기 위해서 7개의 상태(state)를 갖는 상태 머신(state machine)을 이용해 제어한다.
상기 스눕 제어기의 7 개의 상태는 스눕 관련 동작이 없는 아이들(IDLE)상태, 외부로부터 들어온 스눕 요구를 내부의 각 유닛들에게 보내고 그 결과를 받아들이는 스타트(START)상태, 스눕 결과에 따라 다음 동작을 결정하는 체크(CHECK)상태, 데이터 캐쉬에서 변형된 라인(modified line)에 대한 스눕 히트(snoop hit)가 발생했으나, 현재 바로 쓰기 백(write back)사이클을 진행시킬 수 없어 기다리는 웨이트(WAIT)상태, 사이클을 진행시키도록 중재 과정을 수행하는 알비(ARBI)상태, 쓰기 백(write back) 사이클 진행시키는 서브(SERV)단계 및 마지막 블디(BRDY)#로부터의 상태에 의한 엘(L)1, 엘(L)2로 구성된다.
따라서, 본 발명에 의하면 프로세서의 성능 향상을 향상 시키는 수단으로 2개의 버스 사이클을 동시에 파이프라인 진행시킬 수 있는 버스 인터페이스 유닛을 얻게 되어 펜티움 호환 마이크로 프로세서의 버스 인터페이스 유닛으로 사용할 수가 있다.
이하, 첨부한 도면을 참조하여 본 발명을 상세히 설명하고자 한다.
본 발명은 펜티움과 같은, 2개의 병렬적인 파이 프라인 구조를 갖는 고성능 마이크로 프로세서의 버스 인터페이스 유닛으로 쓰이는 것을 목표로하여 개발 하였다. 펜티움 호환 프로세서에서 버스 사이클은 크게 7가지 종류가 있으며, 이것들은 다음과 같다.
외부 인터럽트에 대해서 인터럽트 벡터를 가져오기 위한 인터럽트 승인 사이클인 'Interrupt acknowledge cycle', 내부 코아 유닛이 특정 명령어를 수행하거나 특정 상태에 있다는 것을 알리기 위한 특수 사이클인 'Special Cycle'이 있다. 나머지 5개의 사이클은 일반적인 사이클로, I/O 장치에 대해서 읽기 및 쓰기를 위한 'I/O read cycle' 및 'I/O write cycle'이 있으며, 메모리에서 데이터를 읽거나 쓰기 위한 'Memory read cycle' 및 'Memory write cycle'이 있다. 또한 데이터와 구별하여 메모리로부터 명령어를 읽어 오기 위한 'Code read cycle'이 있다. 이것들 중 메모리에 관련된 사이클은 여러 조건에 의해 연속적으로 (burst operation)읽고 쓰는 것도 가능하다.
도 1 은 펜티움 호환 마이크로 프로세서의 버스 인터페이스 유닛의 역할을 보여주기 위한 간략화된 시스템 구성도이다. 내부연산 유닛(10)에서 x/y-pipe의 2개의 파이프라인을 통해 명령어를 수행하다가 메모리, I/O 장치, Disk 등의 주변 장치(50)로 사이클을 진행시키고자 하는 경우, 데이터 캐쉬(30)를 통해서 사이클을 요구한다. 또한 각 파이프라인에서 수행해야 할 명령어를 가져오기 위해 코드 캐쉬(20)가 사이클을 요구할 수도 있다. 그러므로 매번 여러 사이클의 요구가 코아 유닛(40)으로부터 버스로 넘어올 수가 있다.
이렇게 버스 사이클에 대한 요구를, 명령어를 가져오는 경우는 코드 캐쉬(20)로부터, 나머지 사이클 요구는 데이터 캐쉬(30)로 한정 시킴으로써 버스 사이클의 요구와 진행에 관계된 버스 유닛과 다른 유닛과의 프로토콜을 쉽게 할 수 있는 이점이 생긴다.
또한 버스 인터페이스 유닛(100)은 외부 시스템으로부터 오는 데이터를 받아 각 캐쉬로 넘겨 주며, 외부 유닛으로부터 오는 스눕 관련 요구를 받아서 데이터와 코드 캐쉬로 넘겨줘서 캐쉬 데이터의 동일성 유지를 보장한다. 내부로 들어오는 정보로는, 일종의 교착 상태에서 벗어나기 위해서 모든 버스를 플로트(float)시키라는 BOFF#신호, DMA 장치로부터 진행하던 버스 사이클을 종료시킨 후 모든 버스를 플로트(float)시켜달라는 HOLD신호 및 스눕(snoop)사이클 진행을 위해 어드레스(address)버스만을 플로트(float)시켜 달라는 AHOLD 신호가 있다. 그 외에 버스 사이클 파이프라인과 관련된 주요신호로, 버스 사이클의 가능하다는 것을 알리는 NA# 신호등이 있다.
도 2 는 본 발명에 의한 버스 인터페이스 유닛의 구성을 나타낸 개략도이다. 본 발명의 버스 인터페이스 유닛은 도면과 같이 크게 7 개의 부분으로 나누어 볼 수 있다.
펜티움과 같은 2개의 병렬적인 파이프라인 구조를 사용하는 마이크로 프로세서에서, 각 파이프라인으로부터 오는 버스 사이클의 요구를 동시에 처리할 수 있기 위해 여러 유닛으로부터 오는 여러 개의 사이클 요구를 중재하는 '버스 사이클 중재기(Bus Cycle Arbiter:102)', 중재기에서 결정된 신호에 따라 유닛으로부터 오는 사이클 정보를 선택하는 '사이클 정보 선택기(Cycle Mux:104)', 선택된 정보를 저장하는 2개까지 저장하는 '사이클 큐(Cycle Queue:106)', 큐 정보에 따라 버스 사이클을 발생시키는 '사이클 발생기(Cycle Generator:108)' 및 이러한 모든 유닛을 제어하는 '버스 제어기(Bus Controller:110)'를 두었다.
또한 병렬성에 걸맞게, 메모리 쓰기 사이클의 성능 향상을 위해서, 코아 유닛이 실제 쓸 장소에 다 쓸 때까지 기다리지 않고 다음 동작을 할수 있도록 해주는 '쓰기 버터(Write Buffer:112)'를 두었다. 또한 쓰기 지연(write back)캐쉬를 사용하는, 고성능 프로세서에서 내부 캐쉬 데이터의 동일성 유지를 위해, 내부 캐수에 대한 조사(snooping)를 담당하는 '스눕 제어기(Snoop Controller:114)'를 두었다.
상기 버스 제어기(Bus Controller:110)는 코아 유닛(40), 프로세서 외부의 주변 장치(50) 및 버스 유닛 내부(100)의 각 블락으로부터의 신호를 받아 들여, 버스 인터페이스 유닛의 전체적인 동작을 제어하는 일을 담당한다. 버스 유닛에 대한 제어를 위해서 사이클의 진행 여부에 따라서 6개의 상태(state)를 갖는 FSM을 이용하여 제어한다.
도 2 를 보면, 프로세서의 외부 핀이 각각 1개의 사이클만 진행시킬 수 있는 것으로 보인다. 하지만, 먼저 진행된 버스 사이클이 종료될 때까지 기다린 다음에, 다음 버스 사이클을 진행하게 되면, 결국은 버스 인터페이스 유닛이 전체 시스템의 병목(bottleneck)이 된다. 이러한 하드웨어적인 제한을 받는 환경에서 2개의 사이클이 동시에 진행시키기 위해서는 버스 사이클에 파이프라인 개념을 도입하고, 그것을 제어하는 블락이 필요한데, 이러한 작업을 버스 제어부(110)가 담당한다.
펜티움의 경우는 386\486과는 달리 2개의 버스 사이클을 파이프라인 시켜 진행시킬 수가 있다. 즉, 먼저 진행중인 사이클이 끝나지 않았을지라도 외부 칩셋으로부터 파이프라인 가능하다는 NA#신호를 받고 대기중인 사이클이 있으면, 새로운 사이클을 진행시킬 수가 있으며, 이는 도 3 과 같다.
도 3 은 펜티움의 버스 사이클 파이프 라이닝을 설명하기 위한 개념도이다.
참조 도면에서 'Ti'는 현재 버스상에 사이클이 진행되고 있지 않는 상태를 말하며, 이 경우는 언제든지 사이클 중재기로 사이클에 대한 요청이 들어오면, 새로운 버스 사이클을 시작할 수가 있다. 'T1'은 진행할 사이클의 어드레스(address) 및 사이클 제어 신호를 외부로 구동하는 단계이다. 'T2'는 실제로 데이터의 이동이 이루어지거나 이루어지길 기다리는 상태다.
여기에 파이프라인 개념을 도입하면, 도 3과 같이 추가로 3개의 상태(state)가 생기게 된다.
첫째로, 먼저 진행된 사이클이 'T2'상태에 있는 동안 새로운 사이클이 'T1'으로 가면서 생기는 'T12'단계, 둘째로, 먼저 진행된 사이클도 아직 종료되지 않아서 'T2'상태에 있고 새로운 사이클도 'T2'에 있으면, 2개의 T2가 병렬적으로 진행된다는 의미로 'T2P'가 된다. 마지막으로, 먼저 진행된 사이클과 새로 진행된 사이클의 데이터 버트를 통해서 각기 다른 방향으로 데이터를 이동시키고자 한다면, 즉 예를 들어 읽기(read)와 쓰기(write)사이클이었다면, 데이터 버스 구동을 최소 1 사이클 정도는 중지를 시켜주어야 하는데, 이런 경우를 위한 'Td'단계가 바로 그것이다.
상기 버스 사이클 중재기(cycle arbiter:102)는 여러 유닛으로부터 오는 버스 사이클에 대한 요구에 대해 중재를 담당하는 블락으로 여러 유닛으로부터 동시에 사이클에 대한 요구가 들어오는 경우는, 고정적인 우선 순위(fixed priority algorithm)의 윈칙에 따라서 사이클 승인(acknowlege)신호를 각 유닛에 보낸다. 중재의 우선순위는 다음과 같다.
첫째는, 쓰기 백 버퍼(Write Back Buffer:펜티움 호환 프로세서의 데이터 캐쉬에는 3개의 쓰기 백 버퍼가 있으며, 이것들 간의 우선 순위는 다음과 같다. 외부 스눕 쓰기 백 버퍼 내부 스눕 쓰기 백 버퍼 대체(replacement) 쓰기 백 버퍼 )
둘째, 사이클 큐(BOFF#에 의해 중지된 사이클 또는 비정렬(misaligned)사이클의 두 번째 사이클에 대한 요구)
셋째, 쓰기 버퍼(펜티움 호환 프로세서의 2개의 파이프라인, x, y-pipe에 각각 1개씩 있으며, 동시에 쓰여진 경우는 x-pipe의 버퍼에 우선순위를 주며, 그 경우가 아니면 쓰여진 순서대로)
넷째, 데이터 캐쉬(명령어 read가 아닌 모든 사이클은 데이터 캐쉬로부터)
다섯째로는, 코드 캐쉬(명령어 미리 읽어오기(prefetch) 요구)이다.
상기 사이클 정보 선택기(cycle mux:104)는 사이클 중재기로부터 사이클 진행에 대한 승인을 받은 블락 또는 유닛으로부터의 사이클에 대한 정보(주소, 오퍼런드의 크기, 사이클의 종류, locked cycle의 진행 여부 등등)를 사이클 큐에 집어 넣도록 선택하는 일을 담당한다.
상기 사이클 큐(cycle queue:106)는 사이클 정보 선택기를 통해서 결정된 사이클 정보를 갖고 있는 부분으로 최대 2개의 사이클까지 동시에 진행시키는 것이 가능하도록, 2개의 엔트리(entry)로 구성되어 있다. 이 사이클 큐는 '버스 제어기'와 사이클 중재기'와 더불어, 2개의 사이클을 병렬적으로 진행하는데 있어 핵심적인 역할을 한다.
또한, 이 큐는 외부 칩셋으로부터 BOFF#신호가 들어와서 사이클이 중지되는 경우에 사이클의 재시작에도 이용되며, 데이터 버스의 경계(boundary)에 걸린 비정렬(misaligned cycle)사이클의 경우에 2개의 정렬 사이클을 버스 유닛 내부에서 만들어 내는데도 사용된다.
도 4 는 본 발명에 의한 사이클 큐의 구성을 나타낸 개략도이다. 도 4 는 사이클 큐의 각 부분을 나타내며, 그것의 의미는 다음과 같다.
Older : 큐의 2개의 엔트리(entry)중 먼저 처리를 받아야 할 것을 나타내는 일종의 플래그(flag)
Halt : 칩셋이 BOFF#핀을 활성화(active)시킴으로, 백오프(backoff)상황에 의해 중단에 사이클이 있음을 나타낸다. 백 오프(backoff)조건이 없어지는 경우 이 비트가 셋트(set)상태라면 사이클 큐에 저장되어 있는 사이클을 우선적으로 진행시킨다.
Adder : 진행시킬 사이클의 주소, 실제 외부로 나가는 주소는 상위 29비트뿐이지만, 바이트 인에이블(byte enable)신호를 만들기 위해 32비트가 모두 저장된다.
OS : 진행될 사이클의 오퍼런드의 크기를 나타낸다.
F : 비정렬 사이클(misaligned cycle)의 첫 번째 사이클임을 나타낸다. 비정렬 사이클의 경우는 버스 유닛이 1개의 사이클 요구로부터 2개의 버스 사이클을 만들어 내며, 현재 그 것중 첫 번째 사이클을 진행하고 있다는 것을 나타낸다.
I : 버스 유닛이 경계에 걸리는 사이클임을 나타내는 부분이다.
bus cycle : 진행할 사이클의 종류를 나타내기 위한 부분으로, 총 6비트로 구성되어 있다.
PCD, PWT : 외부 캐쉬를 사용하는 경우 외부 캐쉬를 제어하는 구실을 한다.
V : 큐에 적절한(valid)한 데이터가 들어있는지의 여부를 나타내는 적정 비트(Valid bit)이다.
2개의 큐 엔트리(entry)중 먼저 쓰여진 것은, 즉 먼저 진행되어야 할 사이클은, Older를 이용해 나타낸다. 2개의 큐에 편의상 이름을 붙여 FQueue와 BqQeue라고 하고, 이 Older가 '1'이면 FQueue,'0'이면 BQueue에 사이클이 먼저 쓰여졌다는 것을 나타내기로 한다.
사이클 큐에 새로운 사이클을 저장하는 것은 다음과 같이 한다. 큐가 비어 있는 상황에서 새로운 사이클이 시작되는 경우에는, 무조건 FQueue의 V(valid bit)를 셋트한다.
1개의 큐가 채워진 상태에서, 2개의 사이클을 동시에 진행시키려면, Older가 가리키는 엔트리(entry)의 적정 비트(Valid bit)를 클리어시킨다. 그리고 나서 Older를 토글(toggle)시켜서, 막 사이클이 종료된 엔트리(entry)가 아닌 다른 엔트리(entry)가 이제 먼저 처리해야 할 사이클이 되었음을 나타낸다. 1개의 엔트리(entry)에만 사이클이 저장되어 있는 경우는 해당 엔트리(entry)의 적정 비트(Valid bit)를 클리어시키고 역시 Older를 토글시킨다. 여기서 Older를 토글시키는 동작은 아무런 의미가 없으나 실제로 회로로 구현할 때 쉬워지는 이점이 있다.
사이클을 진행하던 도중에 백오프(backoff)상황이 발생하는 경우는 진행 중이던 사이클이 있는 경우 그대로 정지하고, 중지 비트(Halt bit)를 셋트한다. 백오프(backoff)조건이 없어지는 경우는 사이클 큐에 남아 있던 사이클이 모두 진행된 후에 중지(Halt bit)를 클리어시킨다.
사이클 큐로부터 새로운 사이클을 진행시켜야 하는 경우는 2가지가 있다. 첫 번째 경우는, 위에서 살펴본 바와 같이 백오프(backoff)상황이 발생하는 경우에 진행중이던 사이클이 있는 경우로, 중지 비트(halt bit)를 셋트시켜 중단된 사이클이 있음을 표시한다. 그리고 나서 백오프(backoff)조건이 없어지면, '사이클 큐 제어부'는 이 중지 비트(halt bit)를 검사해서 셋트되어 있는 경우는 '사이클 중재기'로 신호를 보낸다. 사이클 중재기는 사이클 큐로부터의 요청을 우선적으로 처리해 준다.
두 번째 경우는, 데이터 버스의 경계에 걸려서 단일 사이클로 처리할 수 없는 경우다. 즉, 'F'와 'I'비트가 셋트되어 있는 상황에서는 현재 진행되고 있는 사이클이, 비정렬된 사이클(misaligned cycle)의 첫 번째 사이클이라는 의미이므로, 사이클 큐 제어부가 다음 사이클 진행을 위해 사이클 중재기로 신호를 보내며, 사이클 중재기는 역시 이 요구에 대해서 우선적으로 처리를 해준다. 이렇게 진행된 두 번째 사이클의 경우는 'F'비트는 클리어시켜서 비정렬된 사이클(misaligned cycle)의 두 번째 사이클의 진행되고 있다는 것을 나타낸다.
상기 사이클 발생기(cycle generator:108)는 큐에 저장되어 이쓴 정보를 바탕으로 하여, 버스 프로토콜에 맞도록 사이클에 관련된 신호를 만들어 내는 일을 담당한다. 관련된 신호로는 현재의 버스 사이클의 주소 A[31:3], 데이터 버스에서 유효한 바이트를 나타내는 BE[7:0]#, 버스 사이클의 종류를 나타내는 M/IO#, D/C# 및 W/R#, 사이클의 길이를 나타내는 CACHE#, 로크된(locked) 사이클과 관련된 LOCK# 및 SCYC, 외부 캐쉬의 제어에 관련된 PCD 및 PWT핀을 구동하는 일을 담당한다.
상기 스눕 제어기(snoop controller:114)는 내부 캐쉬를 사용하는 프로세서의 경우는 반드시 캐쉬 데이터의 동일성(consistency)을 보장하기위해서, 외부에서 주소를 받아들여 내부 캐쉬를 검사하는 스눕(snoop)이 지원되어야 한다.
펜티움 호환 프로세서의 경우, 스눕동작(snoop operation)은 AHOLD, HOLD, BOFF#핀을 이용하여 어드레스 버스(address bus)를 플로트(float)시킨 후에 EADS#신호와 함께 스눕 주소를 가한 후 결과를 살핀다.
만약에 변형된(Modifed)라인에 히트(hit)가 발생하는 경우는 쓰기 백 사이클(write back cycle)이 수반된다.
스눕 주소는 전체 어드레스 버스(address bus) 중 상위 27비트, 즉A[31:5]까지를 받아들이며, 이는 캐쉬 라인의 크기가 32바이트이기 때문에 하위 5비트는 사용하지 않는다. 이 주소를 데이터 캐쉬, 코드 캐쉬, 버스 유닛 내부의 라이트 버퍼(write buffer)로 보내서 스눕(snoop)동작을 요구하고, 또한 각 유닛으로부터의 스눕(snoop)결과를 받아들여 그것을 외부로 알리는 일을 제어한다.
스눕 제어기는 이러한 스눕에 관련된 여러 동작을 내부적으로 SnpFSM이라는 상태 머신(state machine)을 사용하여 제어를 한다. 도 5는 상태 머신 SnpFSM의 동작을 보여주는 것이다.
도 5 는 스눕 사이클 처리용 상태 머신의 개념도이다. 각 상태(state)의 내용은 다음과 같다.
IDLE : 아무런 스눕관련 동작이 없는 상태
START : 외부로부터 들어온 스눕요구를 내부의 각 유닛들에게 보내고 그 결과를 받아들이는 상태
CHECK : 랫치(latch)된 스눕결과에 따라 다음 동작을 결정하는 단계
WAIT : 데이터 캐쉬에서 변형된 라인(modifled line)에 대한 스눕 히트(snoop hit)가 발생했으나 지금 다른 버스 사이클을 진행하고 있거나, 백오프(backoff)또는 버스 호울드(bus hold)에 의해서 쓰기 백 사이클(write back cycle)을 진행할 수 없는 상태
ARBI : 쓰기 백 사이클(write back cycle)을 진행시킬 수 있는 상태가 되어 중재(arbitration)를 수행
SERV : 현재 쓰기 백 사이클을 수행하고 있는 단계
L1 : 마지막 BRDY#를 받은 다음 상태
L2 : 마지막 BRDY#를 받은 2클락 후의 상태
SnpFSM의 상태(state)변화는 다음과 같다. 1은 아무런 스눕관련 동작이 없는 경우이며, 2는 외부 칩셋으로부터 스눕 사이클을 시작하라는 요구를 받은 경우다. 3의 동작은 항상 일어난다. 즉, 스눕 신호를 받으면, 각 유닛으로 스눕을 시작하라는 요구를 보내고 결과를 받아서 검사하는 CHECK상태를 간다. 4는 데이터 캐쉬에서 변형된 라인(modifled line)에 대해 히트(hit)가 발생하고, 현재 히트(hit)가 발생한 라인에 대한 라이트 백 사이클(write back cycle)이 진행 중인 상태이다.
5는 변형된 라인(modified line)에 대해 히트(hit)가 발생하고, 지금 다른 버스 사이클이 진행되고 백오프(backoff)나 버스 호울드(bus hold)상태이므로 쓰기 백 사이클(write back cycle)을 바로 진행시킬 수 있는 상태이기 때문에 기다리라는 의미이다. 6은 변형된 라인(modified line)에 대한 히트(hit)가 아닌 경우(E 또는 M상태 라인에 스눕 미스가 발생한 경우), 스눕 어드레스에 대해 패러티(parity)검사를 한 결과, 패러티 에러(parity error)가 발생한 경우가 여기에 해당되며, 이 경우 쓰기 백(write back) 사이클은 수반되지 않게 된다. 7은 현재 진행 중인 버스 사이클이 없고, 변형된 라인(modifled line)에 대해 히트(hit)가 발생한 경우로, 중재 과정을 거쳐 쓰기 백(write back) 사이클을 시작한다.
8은 5와 같다. 9는 진행중이던 사이클이 종료가 되거나, BOFF# 또는 HLDA핀이 재확인(reassert)되는 경우로 중재 과정을 거쳐 쓰기 백(write back) 사이클을 시작한다. 10은 중재과정을 거쳐서 사이클을 시작하는 과정으로 항상 일어나며, 11은 쓰기 백(write back)사이클을 진행시키고 있는 경우이다. 12는 마지막 BRDY#신호가 들어온 경우이고, 13은 프로토콜 상 그것으로부터 1사이클을 기다리기 위해 필요하며, 14는 스눕 히트에 의한 쓰기 백 사이클이 끝났다는 것을 칩셋과 내부 장치에 알리기 위한 것이다.
상기 쓰기 버퍼(write buffer:112)는 X/Y-pipe 각각의 파이프라인에 64비트의 크기를 갖는 쓰기 버퍼를 1개씩을 두어, 양쪽 파이프 라인에서 연속적으로 쓰기 동작이 요구되는 상황에서 성능 향상을 꾀하였다. 내부캐쉬에 대해 쓰기 미스(write miss)가 발생한 경우나, 캐쉬 동일성 (cache coherency)을 위해 공유된(Shared)상태의 라인에 쓰기 히트(write hit)가 발생한 경우에 외부로 사이클을 진행시켜야 하는데, 이 경우 쓰기 버퍼를 이용한다.
이러한 쓰기 버퍼를 사용하면, 실제 코아 유닛의 입장에서 본 경우는 쓰기 사이클이 메모리에 쓸때까지 기다리지 않고 다음 동작을 할 수 있게 되므로 상당한 성능 향상을 기대할수 있다.
버스 유닛은 쓰기 버퍼에 데이터가 쓰여지면, 중재 과정을 거쳐서 외부로 메모리 쓰기 사이클을 진행시킨다. 이러한 쓰기 버퍼에 관련된 전체적인 제어는 WbFSM라는 상태 머신(state machine)을 이용해서 한다.
쓰기 버퍼에 관련된 전체적인 제어는 WbFSM이라는 상태 머신(state machine)이 담당하며, 이것은 도 6과 같다.
도 6 은 쓰기 버퍼(write buffer)용 상태 머신의 개념도이다.
쓰기 버퍼는 5개의 상태(state)로 구성이 되며, 각 상태(state)의 의미는 다음과 같다.
IDLE : 쓰기 버퍼가 비어 있는 상태로, 코아 유닛에서 쓰기 미스나 공유된라인(shared line)에 대한 쓰기 히트가 발생하면, 버퍼에 쓸 수 있는 상태
REQ : 쓰기 버퍼에 메모리 쓰기(memory write)가 저장되어 있는 상태로 버스 사이클을 얻기 위해서 사이클 중재기로 계속 사이클 요청 신호를 보내며, 사이클 스인 신호를 받아면, SERV로 간다.
SERV : 쓰기 버퍼에 대기 중인 쓰기(write)가 버스 사이클을 얻어서 외부로 진행되고 있는 상태
BOFF : 외부에서 BOFF#신호를 활성화(active)시켜, 현재 진행 중이던 쓰기 사이클이 중지된 상태로, 사이클 큐에서 BOFF#신호가 비활성화(inactive)되어 사이클이 다시 진행된다는 wakeup신호를 받으면, 다시 SERV로 간다.
UPDATE : 공유된 라인(shared line)에 대한 쓰기 히트 때문에 쓰기 버퍼에 저장된 경우는, 그 쓰기 사이클을 종료한 후에 샘플(sample)한 WB/WT#핀의 값에 따라 해당 캐쉬 라인을 E(exclusive)또는 S(shared)상태로 바꿔야 하는데, 이 결과를 데이터 캐쉬에 알리는 단계이다.
쓰기 버퍼 블락은 쓰기 사이클에 대한 일시적인 버퍼구실을 하기 때문에 주로 데이터 캐쉬와 신호를 주고 받으며, 내부적으로는 사이클 큐와 연결이 되며 도 7과 같다. 도 7 은 쓰기 버퍼의 구성을 나타낸 개략도이다.
최종적으로, 전체 블락간의 동작 설명을 위해 2개의 사이클이 동시에 진행되는 상황의 예를 보자. 현재 메모리에서 데이터를 써야 하는 상황이고, 다음 명령어의 연속적인 수행을 위해 명령어를 읽어와야 하는 상황이 동시에 일어났다고 가정하자. 단, 데이터 캐쉬와 코드 캐쉬에서 동시에 캐쉬미스가 발생하는 경우이다.
먼저 메모리 쓰기 사이클이기 때문에 쓰기 버퍼에 일단 쓰여지며, 쓰기 버퍼는 중재기에서 사이클을 요청한다. 그러면 2개의 사이클 요청 신호가 중재기로 들어온다. 중재기에서는 쓰기 버퍼로부터의 요청이 더 우선 순위가 높기 때문에, 메모리에 쓰기 사이클을 먼저 사이클 승인 신호를 준다. 사이클 선택기에서는 데이터 캐쉬쪽으로 사이클 승인이 떨어졌기 때문에 데이터 캐쉬의 사이클은 먼저 사이클 큐에 저장한다. 이 때, 버스 제어기는 저장된 사이클을 진행시키라는 신호를 사이클 발생기에 보낸다. 사이클 발생기는 큐에 저장된 정보에 따라서 먼저 메모리 쓰기 사이클을 진행을 시킨다.
한편, 메모리 쓰기 사이클이 끝나기 전에, 2개의 사이클을 진행시켜도 좋다는 NA#신호를 주변 장치로부터 받으면, 사이클 중재기는 드디어 명령어를 읽기 위한 사이클에 대해서 승인 신호를 준다. 그러면 마찬가지로 큐에 저장하고 그 사이클을 버스 제어기의 제어에 따라 시작한다.
여기서 진행하던 모든 사이클을 중지시키라는 BOFF#신호를 받으면, 버스 제어기는 즉시 사이클을 중지시키고 큐에 2개의 사이클이 중지되었으므로 중지(Halt)비트를 세트 시키고, 그 상태로 머물러 있는다. 백오프(back off)조건이 없어지면, 중지되었던 2개의 사이클을 차례로 시작한다.
본 발명은 버스 사이클을 2개까지 진행시킬 수 있는 고성능 마이크로 프로세서, 특히 인텔사의 펜티움 호환 프로세서의 버스 유닛으로 적합하다.
하지만 모든 마이크로 프로세서의 버스 유닛이 자기 나름대로의 버스 프로토콜에 맞게 통신을 하기 때문에, 주변 장치쪽에 관련된 부분만 즉 사이클 발생기 및 버스 제어기 쪽을 수정하면 다른 고성능 마이크로 프로세서의 버스 인터페이스 유닛으로도 사용이 가능하다.
결국, 본 발명은 펜티움 호환 마이크로 프로세서의 버스 인터페이스 유닛으로 사용할 수 있으므로 엄청나게 큰 마이크로 프로세서 시장을 공략하는데 있어 일조할 수가 있다.
본 발명이 상기 실시 예에 한정되지 않으며, 많은 변형이 본 발명의 기술적 사상 내에서 당 분야의 통상적 지식을 가진 자에 의하여 가능함은 명백하다.
본 발명에 의하면 프로세서의 성능 향상을 향상 시키는 수단으로 2개의 버스 사이클을 동시에 파이프라인 진행시킬 수 있는 버스 인터페이스 유닛을 얻게 되어 펜티움 호환 마이크로 프로세서의 버스 인터페이스 유닛으로 사용할 수가 있다.

Claims (16)

  1. 여러 유닛으로부터 오는 여러 개의 사이클 요구를 중재하는 버스 사이클 중재기; 상기 버스 사이클 중재기에서 결정된 신호에 따라 유닛으로부터 오는 사이클 정보를 선택하는 사이클 정보 선택기; 선택된 정보를 저장하는 2개까지 저장하는 사이클 큐; 상기 사이클 큐 정보에 따라 버스 사이클을 발생시키는 사이클 발생기; 및 이러한 모든 유닛을 제어하는 버스 제어기; 병렬성에 걸맞게 메모리 쓰기 사이클의 성능 향상을 위해서, 코아 유닛이 실제 쓸 장소에 다 쓸 때까지 기다리지 않고 다음 동작을 할수 있도록 해주는 쓰기 버퍼; 및 쓰기 지연 캐쉬를 사용하는, 고성능 프로세서에서 내부 캐쉬 데이터의 동일성 유지를 위해, 내부 캐쉬에 대한 조사를 담당하는 스눕 제어기를 포함하여 이루어진 마이크로 프로세서의 버스 인터페이스 유닛.
  2. 제1항에 있어서,
    상기 버스 인터페이스 유닛은 프로세서의 성능을 향상 시키는 수단으로 2개의 버스 사이클을 동시에 파이프라인 진행시킬 수 있는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  3. 제1항에 있어서,
    상기 마이크로 프로세서는 코아 유닛과 버스 유닛과의 사이클 요구와 승인에 관계된 프로토콜을 데이터 캐쉬와 코드 캐쉬만으로 한정을 시킴으로써, 인터페이스 부분을 쉽게 한 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  4. 제1항에 있어서,
    상기 사이클 중재기는 여러 장치로부터 오는 사이클 요구를 고정적인 우선 순위 원칙을 적용시켜 승인 신호를 주며, 그 우선 순위에 따라 중재기를 사용한 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  5. 제1항 또는 제4항에 있어서,
    상기 사이클 중재기의 우선 순위 원칙은 쓰기 백 버퍼 사이클 큐 쓰기 버퍼 데이터 캐쉬 코드 캐쉬의 순으로하는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  6. 제5항에 있어서,
    상기 쓰기 백 버퍼는 펜티움 호환 프로세서의 데이터 캐쉬에 3개의 쓰기 백 버퍼가 있으므로, 이것들 간의 우선 순위는 외부 스눕 쓰기 백 버퍼 내부 스눕 쓰기 백 버퍼 대체 쓰기 백 버퍼 순으로하는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  7. 제1항에 있어서,
    상기 사이클 큐는 2개의 사이클을 동시에 진행시키기 위한 저장 수단, 중단된 사이클을 재시작하는 수단 및 비정렬 사이클을 진행시키기 위한 수단으로 사용하는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  8. 제1항 또는 제7항에 있어서,
    상기 사이클 큐는 2개의 큐중 먼저 쓰여진 것을 나타내는 올더 필드, 진행이 중지된 사이클이 있다는 것을 알리는 할트 필드, 사이클을 진행시킬 주소인 어들 필드, 진행될 오퍼런드의 크기를 나타내는 오에스 필드, 비정렬 사이클의 첫 번째 사이클 임을 나타내는 에프 필드, 진행할 사이클의 종류를 나타내는 버스 사이클 필드, 외부 캐쉬를 제어하기 위한 피씨디/피더블유티 필드 및 큐에 타당한한 사이클이 저장되어 있다는 브이 필드를 포함하는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  9. 제1항에 있어서,
    상기 사이클 큐는 실제 사이클을 큐를 움직이는 대신에 올더 필드 라는 포인터 수단을 이용해서 지정하는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  10. 제1항에 있어서,
    상기 버스 제어기는 전체 버스 유닛을 제어하고, 사이클이 진행되는 상태에 따라 6개의 단계로 나누어 2개의 파이프라인을 진행시키는 수단으로 사용하는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  11. 제1항에 있어서,
    상기 쓰기 버퍼는 메모리 쓰기를 하는 경우 실제 메모리에 데이터가 쓰일 때까지 코아 유닛이 기다지 않고 다음 동작을 할 수 있도록, 쓰기 사이클에 대한 일시적인 버퍼 역할을 하는 수단으로 사용하는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  12. 제1항과 제11항에 있어서,
    상기 쓰기 버퍼는 버퍼를 제어하기 위한 수단으로 5개의 상태를 이용해서 제어하는 상태 머신을 갖는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  13. 제12항에 있어서,
    상기 쓰기 버퍼의 5개의 상태는 버퍼가 비어 있다는 것을 나타내는 아이들상태, 현재 버퍼에 어떤 메모리 쓰기가 저장되어 버스 사이클을 얻기 위해 중재기로 사이클 요청 신호를 보내는 알이큐상태, 버퍼에 저장된 사이클이 현재 버스 유닛으로 진행되는 서브상태, 외부에서 사이클 중지 신호가 들어와 진행이 중지된 보프상태 및 데이터 캐쉬의 라인 상태를 갱신 시키는 업데이트상태로 구성된 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  14. 제11항에 있어서,
    상기 쓰기 버퍼는 코아 유닛의 파이프 당 1개씩을 할당해서 각 파이프로부터의 쓰기를 동시에 저장하는 수단을 갖는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  15. 제1항에 있어서,
    상기 스눕 제어기는 스눕 동작을 버스 프로토콜에 맞도록 제어하기 위해서 7개의 상태를 갖는 상태 머신을 이용해 제어하는 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
  16. 제15항에 있어서,
    상기 스눕 제어기의 7 개의 상태는 스눕 관련 동작이 없는 아이들상태, 외부로부터 들어온 스눕 요구를 내부의 각 유닛들에게 보내고 그 결과를 받아들이는 스타트상태, 스눕 결과에 따라 다음 동작을 결정하는 체크상태, 데이터 캐쉬에서 변형된 라인에 대한 스눕 히트가 발생했으나, 현재 바로 쓰기 백 사이클을 진행시킬 수 없어 기다리는 웨이트상태, 사이클을 진행시키도록 중재 과정을 수행하는 알비 상태, 쓰기 백 사이클 진행시키는 서브 단계 및 마지막 블디#로부터의 상태에 의한 엘1, 엘2로 구성된 것을 특징으로 하는 마이크로 프로세서의 버스 인터페이스 유닛.
KR1019960052657A 1996-11-07 1996-11-07 마이크로 프로세서의 버스 인터페이스 유닛 KR100190377B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019960052657A KR100190377B1 (ko) 1996-11-07 1996-11-07 마이크로 프로세서의 버스 인터페이스 유닛
US08/965,764 US5881256A (en) 1996-11-07 1997-11-07 Bus interface unit capable of simultaneously proceeding with two bus cycles in a high-performance microprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960052657A KR100190377B1 (ko) 1996-11-07 1996-11-07 마이크로 프로세서의 버스 인터페이스 유닛

Publications (2)

Publication Number Publication Date
KR19980034568A KR19980034568A (ko) 1998-08-05
KR100190377B1 true KR100190377B1 (ko) 1999-06-01

Family

ID=19481103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960052657A KR100190377B1 (ko) 1996-11-07 1996-11-07 마이크로 프로세서의 버스 인터페이스 유닛

Country Status (2)

Country Link
US (1) US5881256A (ko)
KR (1) KR100190377B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199118B1 (en) * 1998-08-18 2001-03-06 Compaq Computer Corporation System and method for aligning an initial cache line of data read from an input/output device by a central processing unit
US6745298B2 (en) * 1999-06-16 2004-06-01 Intel Corporation Internal processor buffering for implicit writebacks
US6408417B1 (en) * 1999-08-17 2002-06-18 Sun Microsystems, Inc. Method and apparatus for correcting soft errors in digital data
US6499077B1 (en) * 1999-12-30 2002-12-24 Intel Corporation Bus interface unit for reflecting state information for a transfer request to a requesting device
US6839808B2 (en) * 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6941428B2 (en) * 2002-09-25 2005-09-06 International Business Machines Corporation Memory controller optimization

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398244A (en) * 1993-07-16 1995-03-14 Intel Corporation Method and apparatus for reduced latency in hold bus cycles
US5574937A (en) * 1995-01-30 1996-11-12 Intel Corporation Method and apparatus for improving instruction tracing operations in a computer system

Also Published As

Publication number Publication date
KR19980034568A (ko) 1998-08-05
US5881256A (en) 1999-03-09

Similar Documents

Publication Publication Date Title
US5375216A (en) Apparatus and method for optimizing performance of a cache memory in a data processing system
US6785776B2 (en) DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
TW409227B (en) Method and apparatus for selecting thread switch events in a multithreaded processor
JP4170218B2 (ja) キャッシュミスに応答してタスクを切り替えることによってキャッシュベース埋め込みプロセッサのスループットを改善する方法および装置
US5269005A (en) Method and apparatus for transferring data within a computer system
US20020165896A1 (en) Multiprocessor communication system and method
US20080034146A1 (en) Systems and Methods for Transactions Between Processor and Memory
KR100190379B1 (ko) 쓰기 사이클의 성능 향상을 위한 프로세서
US20060064518A1 (en) Method and system for managing cache injection in a multiprocessor system
JP2006012163A (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
JP2020523674A (ja) システム内のキャッシュ転送のオーバーヘッドの削減
JP2002140289A (ja) 調整可能ワード・サイズ転送とアドレス配列/増加を備えたマイクロコントローラdmaオペレーション
US7996592B2 (en) Cross bar multipath resource controller system and method
JP2575219B2 (ja) データ処理システム及びその命令実行を促進する方法
WO2001084304A2 (en) Active address content addressable memory
KR100190377B1 (ko) 마이크로 프로세서의 버스 인터페이스 유닛
US6738837B1 (en) Digital system with split transaction memory access
EP0378816B1 (en) Production line method and apparatus for instruction execution
US20030196072A1 (en) Digital signal processor architecture for high computation speed
US6782456B2 (en) Microprocessor system bus protocol providing a fully pipelined input/output DMA write mechanism
KR0172310B1 (ko) 교착 상태 방지를 위한 버스 유닛
US20020166004A1 (en) Method for implementing soft-DMA (software based direct memory access engine) for multiple processor systems
US8156283B2 (en) Processing function connected to processor memory hierarchy
US7650483B2 (en) Execution of instructions within a data processing apparatus having a plurality of processing units
JPH08249175A (ja) スーパースカラ・プロセッサ装置内の非アーキテクト命令を選択的にサポートする方法及び装置

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: 20041230

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee