KR20040054673A - 적응성 우선순위 제어기를 가지는 데이터 처리 시스템 - Google Patents

적응성 우선순위 제어기를 가지는 데이터 처리 시스템 Download PDF

Info

Publication number
KR20040054673A
KR20040054673A KR10-2004-7002260A KR20047002260A KR20040054673A KR 20040054673 A KR20040054673 A KR 20040054673A KR 20047002260 A KR20047002260 A KR 20047002260A KR 20040054673 A KR20040054673 A KR 20040054673A
Authority
KR
South Korea
Prior art keywords
request
write buffer
processing unit
buffer
priority
Prior art date
Application number
KR10-2004-7002260A
Other languages
English (en)
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 모토로라 인코포레이티드
Publication of KR20040054673A publication Critical patent/KR20040054673A/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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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

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)
  • Advance Control (AREA)

Abstract

본 발명은 일반적으로 데이터 프로세서들에 관한 것으로, 특히, 적응성 우선 순위 제어기를 구비한 데이터 프로세서들에 관한 것이다. 일 실시예는 버스 인터페이스 유닛(32)를 가지는 데이터 프로세서(12)내의 요청들을 우선순위화하는 방법에 관련한다. 이 방법은 제 1 버스 요청 자원(예로서, 30)으로부터의 제 1 요청과 제 2 버스 요청 자원(예로서, 28)으로부터의 제 2 요청을 수신하고, 제 1 또는 제 2 버스 요청 자원에 대응하는 임계값을 사용하여 제 1 및 제 2 요청들을 우선순위화 한다. 제 1 및 제 2 버스 요청 자원들은 캐시를 위한 푸시 버퍼(28) 및 기록 버퍼(30) 또는 명령 프리페치 버퍼(24)일 수 있다. 일 실시예에 따라서, 버스 인터페이스 유닛(32)는 우선순위 제어기(34)를 포함하고, 이는 제 1 및 제 2 요청들을 수신하고, 우선순위를 할당하고, 임계값 레지스터(66)에 임계값을 저장한다. 우선 순위 제어기(34)는 또한 하나 또는 그 이상의 임계값 레지스터들(66), 하위임계값 레지스터들(68) 및 제어 레지스터들(70)을 포함할 수 있다,

Description

적응성 우선순위 제어기를 가지는 데이터 처리 시스템{Data processing system having an adaptive priority controller}
별개의 명령 및 데이터 캐시들을 가지는 마이크로프로세서들은 일반적으로 단일 메인 메모리에 대한 요청들을 우선순위화하는 것을 필요로 한다. 중앙 처리 유닛(CPU)의 명령측상의 연산들은 명령 인출들, 흐름 인출들의 명령 교환 및 명령 프리페치들을 포함한다. 또한, 현대 데이터 프로세서들은 종종 기록 버퍼들, 변경된 캐시 데이터를 위한 푸시 버퍼들 및 명령 캐시 및 데이터 캐시(직접기록 또는 재복사)를 포함한다. 명령 캐시 및 데이터 캐시(기록/푸시 버퍼들을 포함)가 독립적으로 동작하기 때문에, 메인 메모리에 대한 동시 요청들이 발생할 수 있다. 메인 메모리 및 외부 주변기기들은 CPU 주파수의 일부로 구동될 수 있다. 메인 메모리에 대한 요청들의 효과적인 우선순위화는 CPU의 요청된 스톨 사이클들(stall cycles)의 수를 감소시키고, 따라서, 전체 시스템 성능을 증가시킬 수 있다. 따라서, 메인 메모리에 대한 다수의 요청들의 보다 효과적인 우선순위화가 바람직하다.
본 발명은 일반적으로 데이터 프로세서들에 관한 것으로, 특히, 적응성 우선 순위 제어기를 가지는 데이터 프로세서들에 관한 것이다.
본 발명이 예를 통해 예시되어 있으며, 이는 동일 참조 번호들이 동일 소자들을 지시할 수 있는 첨부 도면들에 예시된 실시예들에 한정되지 않는다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템을 예시하는 블록도.
도 2는 본 발명의 일 실시예에 따른 우선순위 제어기의 일부를 예시하는 블록도.
도 3 내지 도 10은 본 발명의 다양한 실시예에 따른 요청들을 우선순위화하기 위한 방법들을 예시하는 흐름도.
숙련자들은 도면들의 소자들은 단순성 및 명료성을 위해 예시되어 있으며, 스케일대로 그려질 필요는 없다는 것을 알고 있다. 예로서, 도면의 소자들 중 일부의 치수는 본 발명의 실시예들의 이해를 향상시키는 것을 돕기 위해 다른 소자들에 비해 과장될 수 있다.
여기서 사용될 때, 용어 "버스"는 데이터, 어드레스들, 제어 및 상태 같은 하나 또는 그 이상의 정보의 다양한 유형들을 전달하기 위해 사용될 수 있는 복수의 신호들 또는 도전체들을 나타내기 위해 사용된다. 용어 "어서트(assert)" 및 "니게이트(negate)"는 신호, 상태 비트 또는 그 유사 장치의 그 논리적 참 또는 논리적 거짓 상태로의 렌더링을 나타낼 때 각각 사용된다. 논리적 참 상태가 로직 레벨 1인 경우에, 논리적 거짓 상태는 로직 레벨 0이다. 논리적 참 상태가 로직 레벨 0인 경우, 논리적 거짓 상태는 로직 레벨 1이다.
값의 비트 위치 또는 버스의 도전체들을 나타내기 위해 꺽쇠괄호(bracket)들이 사용된다. 예로서, "버스(60)[0-7]" 또는 "버스(60)의 도전체들[0-7]"은 버스(60)의 8개의 저차(lower order)의 도전체들을 나타내고, "어드레스 비트[0-7]" 또는 "ADDRERSS[0-7]"은 어드레스값의 8개의 저차의 비트를 나타낸다. 숫자에 선행하는 기호 "$"는 그 수가 그 16진수 또는 베이스가 16인 형태로 표현된다는 것을 나타낸다. 숫자에 선행하는 기호 "%"는 그 수가 그 이진수 또는 베이스가 2인 형태로 표현된다는 것을 나타낸다.
도면의 설명
도 1은 데이터 처리 시스템의 일 실시예를 예시한다. 일 실시예에서, 데이터처리 시스템(10)은 프로세서(12), 메모리(14), 다른 버스 마스터들(16), 프로세서(18) 및 가능하게는, 시스템 버스(50)에 의해 서로 양방향으로 연결되어 있는 다른 버스 마스터들 또는 버스 슬레이브들을 포함한다. 일 실시예에서, 프로세서(12)는 CPU(20)를 포함하고, 이는 버스(38)에 의해 명령 캐시(22)에 양방향 연결되어 있다. 일 실시예에서, CPU(20)는 버스(36)에 의해 데이터 캐시(26), 푸시 버퍼(28) 및 기록 버퍼(30)에 양방향 연결되어 있다. CPU(20)는 신호들(46)에 의해 버스 인터페이스 유닛(32)(BIU 32)에 양방향 연결되어 있다. 명령 캐시(22)는 신호들(48)에 의해 BIU(32)에 양방향 연결되어 있다. 데이터 캐시(26)는 신호들(44)에의해 BIU(32)에 양방향 연결되어 있다. 푸시 버퍼(28)는 신호들(42)에 의해 BIU(32)에 양방향 연결되어 있다. 기록 버퍼(30)는 신호들(40)에 의해 BIU(32)에 양방향 연결되어 있다. 본 발명의 일 실시예에서, BIU(32)는 우선순위제어회로(34)를 포함한다. 시스템 버스(50)는 프로세서(12), 메모리(14), 다른 버스 마스터들(16), 프로세서(18) 및 시스템 버스(50)에 연결된 소정의 다른 버스 마스터 또는 슬레이브 사이의 통신을 위한 통신 버스로서 사용될 수 있다는 것을 인지하여야 한다.
도 2는 도 1의 우선순위 제어 회로(34)의 일부의 일 실시예를 예시한다. 본 발명의 일 실시예에서, 우선순위 제어 회로(34)는 현 우선순위 회로를 해석하기 위한 회로(60), 우선순위 효용도 모니터(62) 및 우선순위 규칙들을 특정하기 위한 회로(64)를 포함한다. 본 발명의 대안 실시예는 우선순위 효용도 모니터(62)를 포함하거나 포함하지 않을 수 있다는 것을 인지하여야 한다. 회로(60)는 신호들(40, 42, 44, 46 및 48)에 양방향 연결된다. 회로(60)는 비교 회로(61)를 포함한다. 회로(60)는 신호들(72)에 의해 회로(64)에 양방향 연결된다. 본 발명의 일 실시예에서, 우선순위 규칙들을 특정하기 위한 회로(64)는 임계값 레지스터들(66), 하위-임 계값 레지스터들(68) 및 제어 레지스터들(70)을 포함한다. 본 발명의 대안 실시예들에서, 회로(64)는 부가적인 레지스터들 또는 다른 회로를 포함할 수 있다. 본 발명의 일 실시예에서, 회로(64)는 선택적 우선순위 효용도 모니터(62)에 양방향 연결된다. 도 2에 예시된 본 발명의 실시예에서, 회로(60)는 신호들(74)에 의해 우선 순위 효용도 모니터(62)에 양방향 연결된다.
도 3 및 도 4는 함께, 우선순위 제어(34)(도 1 참조)가 기록 버퍼(30) 및 푸시 버퍼(28)내의 유효 엔트리들의 수에 기초한 적응성 우선순위 제어 방법을 이행하는 한가지 방식을 예시한다. 본 발명의 대안 실시예들은 도 3 및 도 4에 예시된흐름을 현저히 변경할 수 있다. 도 3 및 도 4에 사용된 방법은 단지 한가지 가능한 구현이 되는 것을 의도할 뿐이다. 도 3을 참조하면, 흐름은 시작 타원 100에서 시작한다. 그후, 흐름은 판정 다이아몬드 105로 진행하고, 여기서, 명령 프리페치 요청이 펜딩중인지의 질문이 질의된다. 명령 프리페치가 펜딩중이지 않은 경우에, 흐름은 명령 프리페치 요청이 펜딩중일 때까지 그 판정 다이아몬드에서 계속 대기한다. 명령 프리페치 요청이 펜딩되고 나면, 흐름은 판정 다이아몬드 106으로 이어지고, 여기서, 기록 버퍼(30)내에 소정의 유효 엔트리들이 존재하는지의 질문이 질의된다. 기록 버퍼(30)내에 유효 엔트리들이 존재하는 경우에, 그후, 흐름은 판정 다이아몬드 107로 이어지고, 여기서, 기록 버퍼(30)내의 유효 엔트리들의 수가 그 임계값을 초과하는지의 질문이 질의된다. 판정 다이아몬드 107에 대한 답변이 긍정(예, yes)인 경우에, 흐름은 판정 다이아몬드 108로 이어지고, 여기서, 명령 프리페치 버퍼(24)내의 유효 엔트리들의 수가 프리페치 버퍼(24)의 임계값 미만인지의 질문이 질의된다. 판정 다이아몬드 108에 대한 답변이 부정(아니오, no)인 경우에, 그후, 흐름은 단계 109로 이어지고, 여기서, 기록 버퍼(30)로부터의 메모리 액세스가 수행된다. 단계 109로부터 흐름은 그후 판정 다이아몬드 105로 복귀한다. 명령 프리페치 버퍼(24)내의 유효 엔트리들의 수가 그 임계값 미만인 경우에, 그후, 흐름은 판정 다이아몬드 110으로 이어지고, 여기서, 사용자가 프로그램한 정적 제어 레지스터들(70)이 이 지점에서 어떻게 우선순위를 판정하도록 되어있는지의 질문이 질의된다. 사용자가 기록 버퍼(30)를 위해 우선순위를 프로그램한 경우에, 그후, 흐름은 판정 다이아몬드 110으로부터 단계 109로 이어진다. 그러나, 사용자가 명령프리페치 버퍼(24)가 우선순위를 갖도록 프로그램한 경우에, 그후, 원 B(103)에 의해 흐름은 판정 다이아몬드 110으로부터 단계 111(도 4 참조)로 이어진다. 단계 111에서, 펜딩중인 명령 프리페치 요청이 상승된다. 그후, 흐름은 단계 112로 이어지며, 여기서, 명령 프리페치 버퍼(24)에 대한 메모리 액세스가 수행된다. 명령 프리페치 요청의 우선순위를 상승시킴으로써, 이는 최고 우선순위 요청이 되며, 따라서, 단계 112에서 수행된다. 그후, 흐름은 단계 112로부터 타원 101로 이어지고, 여기서 흐름이 종료한다.
판정 다이아몬드 106으로 돌아가서, 기록 버퍼(30)내에 어떠한 유효 엔트리들도 존재하지 않는 경우에, 흐름은 원 C(104)에 의해 판정 다이아몬드 113(도 4참조)으로 이어진다. 유사하게, 판정 다이아몬드 107로부터의 부정 경로도 원 C(104)에 의해 판정 다이아몬드 113으로 이어진다. 판정 다이아몬드 113은 푸시 버퍼(28)내에 소정의 유효 엔트리들이 존재하는지의 질문을 질의한다. 푸시 버퍼(28)내에 유효 엔트리들이 존재하는 경우에, 흐름은 판정 다이아몬드 114로 이어지고, 여기서, 푸시 버퍼(28)내의 유효 엔트리들이 그 임계값을 초과하는지의 질문이 질의된다. 판정 다이아몬드 114에 대한 답변이 긍정인 경우에, 그후, 흐름은 판정 다이아몬드 115로 이어지고, 여기서, 명령 프리페치 버퍼(24)내의 유효 엔트리들의 수가 그 임계값 미만인지의 질문이 질의된다. 판정 다이아몬드 115에 대한 답변이 긍정인 경우에, 흐름은 판정 다이아몬드 116으로 이어지고, 여기서, 사용자가 우선순위를 어떻게 프로그램하였는지를 결정하기 위해 정적 제어 레지스터들(70)내의 값들이 체크된다. 사용자가 우선순위를 갖도록 푸시 버퍼(28)를 프로그램한 경우에, 그후 흐름은 판정 다이아몬드 116으로부터 단계 117로 이어지고, 여기서 푸시 버퍼(28)로부터의 메모리 액세스가 수행된다. 단계 117로부터 그후 흐름은 원A(102)에 의해 판정 다이아몬드 105로 이어진다. 흐름의 이 지점에서, 명령 프리페치 요청이 여전히 펜딩중인지를 체크하기 위해 판정 다이아몬드 105로 복귀하는 것이 적합하다. 명령 프리페치 요청이 첫 번째 판정 다이아몬드 105 통과시 펜딩중이었지만 더 이상 펜딩중이지 않을 수 있는 경우들이 존재한다. 판정 다이아몬드 116으로 다시 돌아가, 한편, 우선순위를 갖도록 정적 명령 프리페치 버퍼(24)를 선택하는 사용자 프로그램가능한 정보를 제어 레지스터들(70)이 보유하는 경우에, 그후, 흐름은 판정 다이아몬드 116으로부터 이미 상술된 단계 111로 이어진다.
이제, 판정 다이아몬드들 113 및 114를 참조하면, 이들 판정 다이아몬드들중 어느 하나로부터 부정 경로가 취해지는 경우에, 흐름은 판정 다이아몬드 118로 이어진다. 흐름의 이 지점은 푸시 버퍼(28)내에 어떠한 유효 엔트리들도 존재하지 않거나, 유효 엔트리들이 푸시 버퍼(28)의 임계값을 초과하지 않는다는 것을 나타낸다는 것을 인지하여야 한다. 판정 다이아몬드 118은 펜딩중인 소정의 데이터 요청이 존재하는지를 질의한다. 어떠한 데이터 요청도 펜딩중이지 않은 경우에, 흐름은 판정 다이아몬드 118로부터 상술한 단계 111로 이어진다. 그러나, 데이터 요청이 펜딩중인 경우에, 흐름은 판정 다이아몬드 118로부터 판정 다이아몬드 119로 진행하고, 여기서, 명령 프리페치 버퍼(24)내의 유효 엔트리들의 수가 그 임계값 미만인지의 질문이 질의된다. 판정 다이아몬드 119에 대한 답변이 긍정인 경우에, 흐름은 판정 다이아몬드 120으로 이어지고, 여기서, 사용자에 의해 제어레지스터들(70)내에 어떤 우선순위가 프로그램되어 있는지의 질문이 질의된다. 사용자가 명령 프리페치 버퍼(24)가 우선순위를 갖도록 선택하였던 경우에, 흐름은 판정 다이아몬드 120으로부터 상술한 단계 111로 이어진다. 그러나, 사용자가 데이터 요청들이 우선순위를 갖도록 제어 레지스터들(70)을 프로그램하지 않은 경우에, 그후 흐름은 판정 다이아몬드 120으로부터 단계 121로 이어지고, 여기서, 펜딩중인 데이터 요청을 위한 메모리 액세스가 수행된다. 단계 121로부터, 그후 흐름은 원A(102)에 의해 판정 다이아몬드 105로 이어진다. 판정 다이아몬드 119를 참조하면, 명령 프리페치 버퍼(24)내의 유효 엔트리들의 수가 그 임계값 미만인 경우에, 흐름은 단계 121로 이어지고, 여기서, 펜딩중인 데이터 요청에 대한 메모리 액세스가 수행된다. 판정 다이아몬드 118을 참조하면, 어떠한 데이터 요청들도 펜딩중이지 않은 경우에, 그후, 흐름은 단계 111로 이어진다. 판정 다이아몬드 115를 참조하면, 명령 프리페치 버퍼(24)내의 유효 엔트리들의 수가 그 임계값 미만인 경우에, 그후, 흐름은 단계0 117로 이어지고, 여기서 푸시 버퍼(28)로부터의 메모리 액세스가 수행된다. 단계 117로부터 흐름은 그후 원 A(102)에 의해 판정 다이아몬드 105로 이어진다.
도 5 및 도 6은 우선순위 제어 회로(34)(도 2 참조)가 기록 버퍼(30)내의 충돌들을 경감시키기 위해 우선순위 전환을 위한 방법을 이행할 수 있는 한가지 방식을 예시한다. 도 5를 참조하면, 흐름은 시작 타원(200)에서 시작한다. 그후, 흐름은 판정 다이아몬드 201로 진행하고, 여기서, 소정의 판독 요청들이 펜딩중인지의 질문이 질의된다. 판독 요청이 펜딩중인 경우에, 흐름은 판정 다이아몬드 201로부터 단계 202로 이어지고, 여기서, 기록 버퍼(30)내의 유효 엔트리들의 어드레스 비트가 펜딩중인 판독 요청을 위한 어드레스와 비교된다. 다시 판정 다이아몬드 201을 참조하면, 어떠한 판독 요청들도 펜딩중이지 않은 경우에, 흐름은 판정 다이아몬드 203으로 이어지고, 여기서, 기록 버퍼(30)가 그 임계값을 초과하였는지의 질문이 질의된다. 기록 버퍼(30)가 그 임계값을 초과하지 않은 경우에, 흐름은 판정 다이아몬드 203으로부터 판정 다이아몬드 204로 이어지고, 여기서, 푸시 버퍼(28)가 그 임계값이 초과되었는지의 질문이 질의된다. 푸시버퍼(28)가 임계값이 초과되지 않은 경우에, 흐름은 판정 다이아몬드 204로부터 판정 다이아몬드 201로 이어지고, 여기서 펜딩중인 소정의 판독 요청들이 존재하는지가 다시 질의된다. 이 경우에, 푸시 버퍼나 기록 버퍼 중 어느 쪽도 그 각 임계값들을 초과하지 않은 경우에, 그들 버퍼들을 위해 어떠한 메모리 액세스들도 아직 수행될 필요가 없으며, 판독 요청이 펜딩중인 상태가 되었는지를 확인하기 위한 체크가 다시 수행된다. 다시 판정 다이아몬드 203을 참조하면, 기록 버퍼(30)가 그 임계값을 초과한 경우에, 그후, 흐름은 판정 다이아몬드 205로 이어지고, 여기서, 푸시버퍼(28)가 그 임계값을 초과하였는지의 질문이 질의된다. 푸시 버퍼(28)가 그 임계값을 초과한 경우에, 그후, 흐름은 판정 다이아몬드 205로부터 판정 다이아몬드 206으로 이어지고, 여기서, 제어 레지스터들(70)에 의해 우선순위가 어떻게 표시되어 있는지의 질문이 질의된다. 이 경우에, 양 버퍼들은 표시할 수 있도록 설정된 그 임계값들 보다 많은 엔트리들을 가진다(즉, 사용자 선택 임계값들이 초과). 사용자가 제어 레지스터들(70)을 기록 버퍼(30)를 선택하도록 우선순위를 프로그램한 경우에, 그후, 흐름은 판정 다이아몬드 206으로부터 단계 207로 이어지고, 여기서, 기록 버퍼(30)로부터의 메모리 액세스가 수행된다. 다시 판정 다이아몬드 205를 참조하면, 푸시 버퍼(28)의 임계값이 초과되지 않은 경우에, 그후, 흐름은 또한 단계 207로 이어진다. 다시 판정 다이아몬드 206을 참조하면, 제어 레지스터들(70)이 푸시버퍼(38)를 선택하도록 우선순위를 갖게 사용자에 의해 프로그램된 경우에, 그후, 흐름은 단계 208로 이어지며, 여기서, 푸시버퍼(28)로부터의 메모리 액세스가 수행된다. 다시 판정 다이아몬드 204를 참조하면, 푸시 버퍼(28)내의 엔트리들의 수가 그 임계값을 초과하는 경우에, 그후, 흐름은 단계 208로 이어진다. 단계들 207 및 208에서 수행된 각 메모리 액세스들이 수행되고 나면, 흐름은 판정 다이아몬드 201로 이어진다.
다시 단계 202를 참조하면, 그후, 흐름은 원 B(210)에 의해 판정 다이아몬드 209(도 6참조)로 이어진다. 판정 다이아몬드 209에서, 충돌이 검출되었는지의 질문이 질의된다. 본 발명의 일 실시예에서, 기록 버퍼(30)내의 엔트리가 펜딩중인 판독 요청과 연계된 어드레스에 대응하는 데이터를 포함할 때 충돌이 발생한 것으로 고려된다는 것을 주의하여야 한다. 판정 다이아몬드 209를 참조하면, 충돌이 검출되는 경우에, 흐름은 단계 211로 이어지고, 여기서 기록 버퍼 요청의 우선순위가 상승된다. 단계 211로부터 그후 흐름은 단계 212로 이어지고, 여기서, 충돌 엔트리를 제거하기 위해, 충돌 엔트리를 포함하는 이전 기록 버퍼(30)내의 엔트리들이 메인 메모리(예로서, 도 1의 메모리(14))로 소거(flush)된다. 단계 212로부터, 그후 흐름은 판정 다이아몬드 213으로 이어진다. 판정 다이아몬드 209를 참조하면, 충돌이 검출되지 않은 경우에, 흐름은 또한 판정 다이아몬드 213으로 이어진다. 판정 다이아몬드 213은 기록 버퍼(30) 임계값이 초과되었는지의 질문을 질의한다. 기록버퍼(30) 임계값이 초과된 경우에, 흐름은 판정 다이아몬드 213으로부터 판정 다이아몬드 214로 이어지고, 여기서, 푸시 버퍼(28) 임계값이 초과되었는지의 질문이 질의된다. 푸시 버퍼(28) 임계값이 초과되지 않은 경우에, 흐름은 단계 215로 이어지고, 여기서, 판독 요청을 위한 메모리 액세스가 수행된다. 버퍼 임계값 중 어느 쪽도 초과되지 않았기 때문에, 펜딩중인 판독 요청은 우선순위를 가져야한다는 것을 주의하여야 한다. 그러나, 푸시 버퍼(28) 임계값이 초과된 경우에, 흐름은 판정다이아몬드 216으로 이어지고, 여기서, 제어 레지스터들(70)이 우선순위를 결정하기 위해 사용된다. 사용자가 푸시 버퍼를 펜딩중인 판독 보다 우월한 우선순위를 갖도록 프로그램한 경우에, 그후, 흐름은 판정 다이아몬드 216으로부터 단계 217로 이어지며, 여기서, 푸시 버퍼(28)로부터의 메모리 액세스가 수행된다. 그러나, 사용자가 판독 요청 우선순위를 제공하도록 제어 레지스터들(70)을 프로그램한 경우에, 그후, 흐름은 판정 다이아몬드 216으로부터 단계 215로 이어지고, 여기서, 판독 요청을 위한 메모리 액세스가 수행된다. 단계 215 및 217 양자 모두는 원A(218)에 의해 판정 다이아몬드 201로 이어진다.
다시 판정 다이아몬드 213을 참조하면, 기록 버퍼(30) 임계값이 초과된 경우에, 흐름은 판정 다이아몬드 219로 이어지고, 여기서, 푸시 버퍼(28) 임계값이 초과되었는지의 질문이 질의된다. 푸시버퍼(29) 임계값이 초과되지 않은 경우에, 흐름은 판정 다이아몬드 220으로 이어지고, 여기서, 제어 레지스터들(70)이 다시 우선순위를 결정하기 위해 사용된다. 사용자가 기록 버퍼 요청보다 우선순위를 가지는 것으로서 판독 요청을 선택하도록 제어 레지스터들(70)을 프로그램한 경우에, 그후, 흐름은 판정 다이아몬드 220으로부터 단계 215로 이어지고, 여기서, 판독 요청을 위한 메모리 액세스가 수행된다. 그러나, 사용자가 펜딩중인 판독 요청 보다 기록 버퍼(30)에 우선순위를 제공하도록 제어 레지스터들(70)(도 2 참조)을 프로그 램한 경우에, 그후, 흐름은 단계 221로 이어지고, 여기서, 기록 버퍼(30)로부터의 메모리 액세스가 수행된다. 판정 다이아몬드 219를 참조하면, 푸시 버퍼(28)가 임계값을 초과하는 경우, 흐름은 판정 다이아몬드 222로 이어지고, 여기서, 제어 레지스터들(70)이 우선순위를 결정하기위해 사용된다. 사용자가 푸시 버퍼(28)에 우선순위를 제공하도록 레지스터들(70)을 프로그램한 경우에, 그후, 흐름은 원C(223)에 의해 단계 217로 이어진다. 그러나, 사용자가 기록 버퍼(30)에 우선순위를 제공하도록 제어 레지스터들(70)을 프로그램한 경우에, 그후, 흐름은 단계 215로 이어진다. 양 단계 221 및 217을 참조하면, 메모리 액세스가 수행된 이후에, 흐름은 원(218)에 의해 판정 다이아몬드 201로 이어진다.
도 7 및 도 8은 우선순위 제어 회로(34)(도 1 참조)가 명령 흐름의 변경에 기초하여 우선순위 상승을 이행하는 한가지 방식을 예시한다. 흐름은 타원 300에서 시작한다 그후, 흐름은 판정 다이아몬드 301로 이어지고, 여기서, 펜딩중인 흐름 명령 인출 요청의 변경이 있는지의 질문이 질의된다. 판정 다이아몬드 301에서 참조되는 명령 인출 요청은 흐름의 변경을 유발하였던 이전 명령의 결과라는 것을 주의하여야 한다. 흐름 명령 인출 요청의 변경이 펜딩중인 경우에, 흐름은 판정 다이아몬드 301로부터 단계 302로 이어지고, 여기서, 제어 레지스터들(70)이 흐름 우선권의 변경을 결정하기 위해 사용된다. 제어 레지스터들(70)로부터의 정보는 흐름 액세스들, 프리페치 버퍼 액세스들, 기록 버퍼 액세스들 및 푸시 버퍼 액세스들의 변경의 상대 우선순위들을 결정하기 위해 흐름 전반에 걸쳐 후속 판정 다이아몬드들에서 사용된다. 판정 다이아몬드 301을 참조하면, 펜딩중인 흐름 명령 인출 요청의 어떠한 변경도 존재하지 않는 경우에, 그후, 흐름은 이런 요청에 대한 체크를 지속한다. 단계 302로부터 그후 흐름은 판정 다이아몬드 303으로 진행하고, 여기서, 명령 프리페치 버퍼(24)내의 엔트리들의 수가 명령 프리페치 버퍼(24)의 임계 값을 초과하였는지의 질문이 질의된다. 명령 프리페치 버퍼(24)내의 엔트리들의 수가 그 임계값을 초과하지 않는 경우에, 흐름은 판정 다이아몬드 304로 이어지고, 여기서, 기록 버퍼(30) 요청이 펜딩중인지의 질문이 질의된다. 기록 버퍼(30) 요청이 펜딩중인 경우에, 흐름은 판정 다이아몬드 304로부터 판정 다이아몬드 305로 이어지며, 여기서, 단계 302에서 수행된 체크에 기초하여 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 가지는지의 질문이 질의된다. 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 갖지 않는 경우에, 흐름은 판정 다이아몬드 305로부터 단계 306으로 이어지고, 여기서, 제어 레지스터들(70)내의 사용자에 의해 선택된 우선순위로 인해 어떠한 우선순위 조작도 수행되지 않는다. 단계 306으로부터 흐름은 타원 307로 이어지고, 여기서 흐름이 종료한다. 다시 판정 다이아몬드 303을 참조하면, 명령 프리페치 버퍼(24)내의 엔트리들의 수가 그 임계값을 초과하지 않는 경우에, 흐름은 판정 다이아몬드 308로 이어지고, 여기서, 단계 302에서 수행된 체크에 기초하여, 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 가지는지의 질문이 질의된다. 제어 레지스터들(70)이 펜딩중인 흐름 명령 인출 요청이 보다 높은 우선순위를 가지는 것을 나타내지 않는 경우에, 그후, 흐름은 판정 다이아몬드 308로부터 단계 309로 이어지고, 어떠한 우선순위 조작도 수행되지 않는다 그후, 흐름은 단계 309로부터 단계 307로 이어진다. 판정 다이아몬드 308을 참조하면, 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 가지는 경우에, 그후, 흐름은 판정 다이아몬드 308로부터 단계 310으로 이어지고, 여기서, 펜딩중인 흐름 명령 인출 요청의 변경 우선순위가 펜딩중인 명령 프리페치 요청 우선순위 보다 상승된다. 단계 310으로부터 그후 흐름은 종료(307)에서 종결된다.
판정 다이아몬드 305를 참조하면, 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 가지는 경우, 흐름은 원 B(312)에 의해 단계 311로 이어진다. 단계 311에서, 펜딩중인 흐름 명령 인출 요청의 변경 우선순위가 기록 버퍼(30)로부터의 펜딩중인 요청 보다 상승된다. 단계 311로부터 흐름은 판정 다이아몬드 313으로 이어지고, 여기서, 펜딩중인 푸시 버퍼(28) 요청이 있는지의 질문이 질의된다. 푸시 버퍼(28)가 펜딩중인 요청을 갖는 경우에, 그후, 흐름은 판정 다이아몬드 313으로부터 판정 다이아몬드 314로 이어지고, 여기서, 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 갖는지의 질문이 질의된다. 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 갖지 않는 경우에, 그후, 흐름은 판정 다이아몬드 314로부터 단계 315로 이어지며, 여기서, 어떠한 우선순위조작도 수행되지 않는다. 단계 315로부터 흐름은 그후 종료(307)에서 종결한다. 도 7의 판정 다이아몬드 304를 참조하면, 어떠한 기록 버퍼(30) 요청도 펜딩중이지 않은 경우에, 그후, 흐름은 원 A(350)에 의해 도 8의 판정 다이아몬드 313으로 이어진다. 판정 다이아몬드 313을 참조하면, 어E한 푸시 버퍼(28) 요청도 펜딩중이지 않은 경우에, 그후, 흐름은 판정 다이아몬드 316으로 이어지고, 여기서, 펜딩중인 데이터 요청이 있는지의 질문이 질의된다. 펜딩중인 데이터 요청이 존재하는 경우에, 그후, 흐름은 판정 다이아몬드 316으로부터 판정 다이아몬드 317로 이어지고, 여기서, 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 가지는지의 질문이 질의된다. 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 가지는 경우에, 그후, 흐름은 판정 다이아몬드 317로부터 단계 318로 이어지고, 여기서, 어떠한 우선순위 조작도 수행되지 않는다. 단계 318로부터 흐름은 그후 종료(307)에서 종결한다. 판정 다이아몬드 317을 참조하면, 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 가지는 경우에, 그후, 흐름은 단계 319로 이어지고, 여기서, 펜딩중인 흐름 명령 인출 요청의 변경 우선순위가 펜딩중인 프리페치 요청 보다 상승된다. 판정 다이아몬드 316을 다시 참조하면, 어떠한 데이터 요청도 펜딩중이지 않은 경우에, 흐름은 단계 320으로 이어진다. 판정 다이아몬드 314를 참조하면, 펜딩중인 흐름 명령 인출 요청의 변경이 보다 높은 우선순위를 가지는 경우에, 그후, 흐름은 단계 321로 이어지고, 여기서, 펜딩중인 흐름 명령 인출 요청의 변경 우선순위가 펜딩중인 푸시 버퍼(28)로부터의 요청 보다 상승된다. 단계 321로부터, 그후 흐름은 판정 다이아몬드 316으로 진행하고, 단계 320으로부터 흐름은 종료(307)에서 종결한다.
도 9 및 도 10은 본 발명과 함께 사용할 수 있은 하위임계값들의 일 방식을 흐름도 형태로 예시한다. 하위임계값들은 각 버퍼가 그 프로그램된 충만도 또는 공백도의 레벨에 도달하지 않았을 때의 상태를 의미한다. 도 9를 참조하면, 흐름은 타원 400에서 시작한다. 그후, 흐름은 판정 다이아몬드 401로 이어지고, 여기서, 기록 버퍼(30)가 비어있는지의 질문이 질의된다. 기록 버퍼(30)가 비어있지 않은 경우에, 흐름은 판정 다이아몬드 401로부터 판정 다이아몬드 402로 진행하고, 여기서, 기록 버퍼(30)를 위한 임계값이 초과되었는지의 질문이 질의된다. 기록 버퍼(30)를 위한 임계값이 초과되지 않은 경우에, 흐름은 판정 다이아몬드 402로부터 판정 다이아몬드 403으로 이어지고, 여기서, 푸시 버퍼(28)가 비어있는지의 질문이 질의된다. 푸시 버퍼(28)가 비어 있지 않은 경우에, 흐름은 판정 다이아몬드 403으로부터 판정 다이아몬드 404로 이어지고, 여기서, 푸시 버퍼(28)의 임계값이 초과되었는지의 질문이 질의된다. 푸시 버퍼(28)의 임계값이 초과된 경우에, 흐름은 단계 405로 이어지고, 여기서, 푸시 버퍼(28)로부터의 메모리 액세스가 수행된다. 단계 405로부터, 흐름은 원 G(475)에 의해 판정 다이아몬드 401로 이어진다.
판정 다이아몬드 402를 참조하면, 기록 버퍼를 위한 임계값이 초과된 경우, 흐름은 단계 406으로 이어지고, 여기서, 기록 버퍼(30)로부터의 메모리 액세스가 수행된다. 단계 406으로부터, 흐름은 판정 다이아몬드 401로 이어진다. 판정 다이아몬드 403을 참조하면, 푸시 버퍼(28)가 비어있는 경우, 흐름은 판정 다이아몬드 403으로부터 판정 다이아몬드 407로 이어지며, 여기서, 명령 프리페치 버퍼(24)의임계값이 초과되었는지의 질문이 질의된다. 명령 프리페치 버퍼(24)의 임계값이 초과된 경우에, 흐름은 판정 다이아몬드 408로 이어지고, 여기서, 명령 프리페치 버퍼(24)와 기록 버퍼(30)가 그 하위임계값 레벨에 얼마나 근접한지에 기초하여 명령 프리페치 버퍼(24)와 기록 버퍼(30) 중 어느 것이 우선순위를 가져야하는지의 질문이 질의된다. 하위임계값들의 사용을 통해 기록 버퍼(30)가 우선순위를 가지는 것으로 결정되는 경우에, 그후, 흐름은 원 C(410)에 의해 단계 409(도 10 참조)로 이어진다. 그러나, 하위임계값들의 사용을 통해 명령 프리페치 버퍼(24)가 우선순위를 갖는 것으로 결정된 경우에, 흐름은 원 B(412)에 의해, 판정 다이아몬드 408로부터 단계 411(도 10 참조)로 이어진다. 판정 다이아몬드(407)를 참조하면, 명령 프리페치 버퍼(24)의 임계값이 초과되지 않은 경우에, 흐름은 단계 413으로 이어지고, 여기서, 명령 프리페치 버퍼(24)를 위한 메모리 액세스가 수행된다. 단계 413으로부터 그후 흐름은 원 G(475)에 의해 판정 다이아몬드 401로 이어진다. 판정 다이아몬드 404를 참조하면, 푸시 버퍼(28)를 위한 임계값이 초과되지 않은 경우에, 흐름은 원 D(415)에 의해 판정 다이아몬드(414)(도 10 참조)로 이어진다. 판정 다이아몬드 401을 참조하면, 버퍼(30)가 비어있는 경우에, 흐름은 판정 다이아몬드 416으로 이어지고, 여기서, 푸시 버퍼(28)가 비어있는지의 질문이 질의된다. 푸시 버퍼(28)가 비어있지 않은 경우에, 흐름은 판정 다이아몬드 416으로부터 판정 다이아몬드 417로 이어지며, 여기서, 푸시 버퍼(28)의 임계값이 초과하였는지의 질문이 질의된다. 푸시 버퍼(28)의 임계값이 초과되지 않은 경우, 흐름은 판정 다이아몬드 417로부터 판정 다이아몬드 418로 이어지고, 여기서, 명령 프리페치 버퍼(24)의 임계값이 초과되었는지의 질문이 질의된다. 명령 프리페치 버퍼(24)의 임계값이 초과된 경우, 흐름은 판정 다이아몬드 418로부터 판정 다이아몬드 419로 이어지고, 여기서, 하위임계값들이 사용되어 푸시 버퍼(28) 및 명령 프리페치 버퍼(24) 사이의 우선순위를 결정한다. 판정 다이아몬드 419를 참조하면, 하위임계값들의 사용을 통해, 그 충만도로 인해 푸시 버퍼가 우선순위를 가져야만 하는 것으로 결정되는 경우에, 흐름은 원 E(421)에 의해 단계 420(도 10 참조)으로 이어진다. 그러나, 하위 임계값들의 사용이 명령 프리페치 버퍼(24)가 가득차지 않았고, 따라서, 우선순위를 가져야 하는 것을 나타내는 경우에, 흐름은 원 B(412)에 의해 단계 411(도 10 참조)로 이어진다. 판정 다이아몬드 418을 참조하면, 명령 프리페치 버퍼(24)의 임계값이 초과되지 않은 경우에, 흐름은 원 B(412)에 의해 단계 411(도 10 참조)로 이어진다. 판정 다이아몬드 417을 참조하면, 푸시버퍼(28)의 임계값이 초과된 경우에, 흐름은 원 E(421)에 의해 단계 420(도 10 참조)으로 이어진다. 판정 다이아몬드 416을 참조하면, 푸시 버퍼(28)가 비어있는 경우에, 흐름은 원 F(423)에 의해, 판정 다이아몬드 416으로부터 판정다이아몬드 422(도 10 참조)로 이어진다.
도 10을 참조하면, 원 D(415)는 판정 다이아몬드 414로 진행하고, 여기서, 명령 프리페치 버퍼(24)의 임계값이 초과되었는지의 질문이 질의된다. 명령 프리페치 버퍼(24)의 임계값이 초과되지 않은 경우에, 흐름은 판정 다이아몬드 414로부터 단계 411로 이어지며, 여기서, 명령 프리페치 우선순위가 상승된다. 판정 다이아몬드 414를 참조하면, 명령 프리페치 버퍼(24)의 임계값이 초과된 경우에, 흐름은 판정 다이아몬드 414로부터 판정 다이아몬드 424로 이어지며, 여기서, 하위임계값들이 사용되어 기록 버퍼(30), 푸시 버퍼(28) 및 명령 프리페치 버퍼(24) 사이의 우선순위를 결정한다. 판정 다이아몬드 424를 참조하면, 그 하위임계값에 비교된 기록 버퍼(30)의 충만도가 사용되어 기록 버퍼(30)가 우선순위를 가져야 한다는 것을 결정하는 경우에, 흐름은 단계 409로 이어지며, 여기서, 기록 버퍼(30)의 우선순위가 상승된다. 그 하위임계값에 비교된 푸시 버퍼(28)의 충만도가 사용되어 푸시 버퍼(28)가 우선순위를 가져야만 한다는 것을 결정한 경우에, 그후, 흐름은 판정 다이아몬드 424로부터 단계 420으로 이어지며, 여기서, 푸시 버퍼(28)의 우선순위가 상승된다. 유사하게, 그 하위임계값에 비교된 명령 프리페치 버퍼(24)의 충만도가 사용되어 명령 프리페치 버퍼(24)가 우선순위를 가져야 하는 것을 결정하는 경우에, 그후, 흐름은 판정 다이아몬드 424로부터 단계 411로 이어지며, 여기서, 명령 프리페치 버퍼(24)의 우선순위가 상승된다. 비교 회로(61) 및 우선순위 제어(34)(도 2 참조)는 다양한 자원들(예로서, 22, 24, 26, 28 및 30)로부터의 정보(예로서, 충만도, 공백도) 및 사용자 프로그램가능한 저장 회로로부터의 사전결정된, 또는, 이미 프로그램된 우선순위 기준들(예로서, 임계값 레벨들, 하위임계값 레벨들, 레지스터들(66, 68 및 70)로부터 수신된 우선순위 결속-분리 정보)의 필요한 비교들을 수행하기 위해 사용될 수 있다는 것을 주의하여야 한다.
원 F(423)로부터, 흐름은 판정 다이아몬드 422로 이어지고, 여기서, 명령 프리페치 버퍼(24)가 가득차있는지의 질문이 질의된다. 명령 프리페치 버퍼(24)가 가득차있지 않은 경우에, 흐름은 판정 다이아몬드 422로부터 단계 411로 이어지며, 여기서, 명령 프리페치 버퍼(24)의 우선순위가 상승된다. 명령 프리페치 버퍼(24)가 가득찬 경우에, 흐름은 원 A(426)에 의해, 판정 다이아몬드 422로부터 판정 다이아몬드 425(도 9 참조)로 이어진다. 유사하게, 단계 409, 단계 420 및 단계 411로부터 흐름은 원 A(426)에 의해 판정 다이아몬드(425)(도 9 참조)로 이어진다.
도 9를 다시 참조하면, 판정 다이아몬드 425는 흐름 명령 인출 요청 또는 데이터 요청의 변경이 있는지의 질문을 질의한다. 존재하지 않는 경우에, 흐름은 판정 다이아몬드 425로부터 판정 다이아몬드 401로 이어진다. 그러나, 흐름 명령 인출 요청 또는 데이터 요청의 변경이 존재하는 경우에, 흐름은 판정 다이아몬드 425로부터 데이터 요청을 위한 시작 타원(도 5 참조) 또는 흐름 명령 인출 요청 변경을 위한 시작 타원(300)(도 7 참조)으로 이어진다.
도 10에서, 버퍼의 우선순위가 단계 409, 411 또는 420에서 상승되고 나면, 각 버퍼 액세스가 수행될 수 있다.
동작의 설명
오늘날 데이터 프로세서들에서, 공유된 메모리 자원들에 대한 다수의 요청들의 소스들이 존재할 수 있다. 예로서, 도 1을 참조하면, 다수의 자원들(예로서, 명령 캐시(22), 명령 프리페치 버퍼(24), 데이터 캐시(26), 푸시 버퍼(28) 및 기록 버퍼(30))이 메모리(14)에 대한 액세스를 동시에 요청하는 것이 가능하다. 명령 캐시(22) 및 데이터 캐시(26)에 의한 요청들은 재충전 요청들일 수 있다는 것을 인지 하여야 한다. 또한, 다른 자원들(예로서, 다른 버스 마스터들(16))이 또한 동시에 메모리(14)에 대한 액세스를 요청하는 것도 가능하다. 예로서, 다른 버스 마스터들(16)은 직접 메모리 액세스(DMA) 디바이스를 포함할 수 있다. 본 발명의대안 실시예들에서, 소정 유형의 회로가 메모리(14) 같은 공유된 메모리 자원을 액세스하기를 시도할 수 있다. 또한, 메모리(14) 같은 공유 메모리 자원을 액세스하기 위해 경쟁하는 다양한 자원들은 CPU(20) 보다 현저히 낮은 주파수들에서 동작할 수 있고, 따라서, 공유된 자원들에 대한 액세스를 지연시킴으로써, CPU(20)에 스톨(stall)들을 유발할 수 있다는 것을 인지하는 것이 중요하다. 도 1을 참조하면, 비록 메모리(14)가 프로세서(12)에 외부적인 것으로서 예시되어 있지만, 본 발명의 대안 실시예들에서, 도 1에 예시된 회로의 소정 부분들은 동일 집적 회로 다 이상에 구현되거나, 둘 이상이 별개의 집적 회로 다이로 분할될 수 있다.
도 1 및 조 2를 참조하면, 본 발명의 일 실시예에서, 우선순위 제어회로(34)는 시스템 버스(50)의 사용 및 액세스를 필요로 하는 요청들에 우선순위를 할당하기 이전에, CPU(20)로부터의 신호들을 감시하고, 자원 사용량에 대하여 동적으로 체크한다. 우선순위 제어 회로(34)의 목적은 경쟁 자원들(22, 24, 26, 28, 30) 각각이 CPU(20)에 얼마나 빨리 스톨을 유발하는가를 결정하는 것이다. 본 발명의 일 실시예에서, 우선순위 제어 회로(34)는 다음에 CPU(20)의 스톨을 가장 유발하기 쉬운 버스(50)를 위해 경쟁하는 자원에 우선순위를 제공하도록 프로그램되는 것이다. 예로서, 우선순위 제어(34)는 가득찬 기록 버퍼(30)가 CPU(20) 스톨을 유발할 수 있기 때문에, 기록 버퍼(30)가 얼마나 가득차있는지를 확인할 필요가 있다. 유사하게, 가득찬 푸시 버퍼(28)도 CPU(20)의 스톨을 유발할 수 있으며, 따라서, 우선순위 제어 회로(34)는 푸시 버퍼(28)가 얼마나 가득찼는지도 감시하여야 한다. 또한, 우선순위 제어 회로(34)는 명령 프리페치 버퍼(24)가 너무 비워져서 CPU(20)의 스톨을 유발하지 않게 되는 것을 보증하기 위해 명령 프리페치 버퍼(24)가 얼마나 가득차있는지도 감시하여야 한다.
본 발명의 일 실시예에서, 우선순위 제어 회로(34)는 명령 흐름의 변경이 발생할 때를 결정하기 위해, 명령 캐시(22) 또는 CPU(20)를 감시한다. 우선순위 제어회로(34)가 명령 흐름의 변경을 검출하려하는 이유는 명령 흐름의 변경이 명령 프리페치 버퍼(24)의 내용이 더 이상 필요없어지게 하며, 새로운 명령 흐름을 위해 새로운 명령들이 프리페치되는 것을 필요로하게 하기 때문이다. 우선순위 제어 회로(34)는 데이터 캐시 누락(miss)이 발생될 때를 검출하고, 따라서, 데이터 캐시가 시스템 버스(50)를 사용하여 재충전되어야하는 것을 검출하기 위해 데이터 캐시를 감시한다. 데이터 캐시 누락이 발생하는 경우에, CPU(20)는 데이터가 시스템 버스(50)를 거쳐 복구될 때까지 스톨될 수 있다. 따라서, 우선순위 제어 회로(34)가 시스템 버스(50)의 사용을 위해 경쟁하는 다양한 자원들(22, 24, 26, 28, 30) 사이의 우선순위를 동적으로 그리고, 유연하게 조절하는 것이 적합하다.
본 발명은 데이터 처리 시스템(10)의 동적이고 적응적인 우선순위 조작을 가능하게 한다. 도 2를 참조하면, 일 실시예에서, 본 발명은 기록 버퍼(30) 및 푸시버퍼(28)내의 유효 엔트리들의 수에 기초한 동적 및 적응성 우선순위 조작을 허용한다. 푸시 버퍼(28)는 또한 재기록 또는 재복사 버퍼라 지칭될 수도 있다. 기록 버퍼(30)는 퍼스트-인-퍼스트-아웃(FIFO) 큐 또는 성능을 최대화하기 위해 펜딩중인 직접기록이라 표시된 기록들 또는 기록 누락들을 유예시킬 수 있는 버퍼로서 구현될 수 있다. 기록 버퍼(30)가 가능화되었을 때, 데이터 캐시(26)내에서 누락한또는 직접기록으로 표시된 저장 작업들이 기록 버퍼(30)내에서 발생하며, CPU(20)에 의한 액세스가 중단된다. 이들 버퍼링된 기록들은 시스템 버스(50)로의 추후 전달을 위해 유지된다. 기록 버퍼(30)내에 유효 엔트리들이 존재하는 동안 펜딩 명령 캐시(22) 충전이 요청되는 경우에, 우선순위 제어 회로(34)는 기록 버퍼(30)내의 유효 엔트리들의 수에 기초하여 우선순위를 할당한다. 기록 버퍼(30)를 사전결정된 임계값(예로서, 기록 버퍼(30) 크기의 절반)까지 비운 이후에, 우선순위가 전환될 수 있고, 펜딩 명령 캐시(22) 충전 요청들이 서비스될 수 있다. 명령 캐시(22) 충전 요청들의 완료시, 또는, 기록 버퍼(30)내의 유효 엔트리들의 수가 임계값 보다 커진 경우에, 우선순위는 다시 기록 버퍼(30)로부터의 기록들을 서비스하도록 전환될 수 있다. 본 발명의 대안 실시예들은 회로(64)(도 2)의 사용자 프로그램가능한 부분을 사용하는 소정의 방식으로 자원들(22, 24, 26, 28, 30)로부터의 요청들을 우선순위화할 수 있다. 설명된 우선순위화는 다수 중 단 하나의 가능한 우선순위화 이다.
기록 버퍼(30) 및 푸시 버퍼(28)내의 유효 엔트리들의 수에 기초한 적응성 우선순위 제어 설계안의 한가지 가능한 구현에 대한 도 3 및 도 4와 도 9 및 도 10을 참조하라. 그러나, 또한, 본 발명의 대안 실시예들은 소정의 방식으로 우선순위화될 수 있다.
우선순위 제어 회로(34)는 또한 기록 버퍼(30)내의 충돌들을 경감시키기 위해 우선순위 전환을 이행할 수도 있다. 이런 우선순위 전환 방법의 한가지 가능한 구현이 도 5 및 도 6에 예시되어 있다. 데이터 캐시(26)의 판독 누락에 대하여, 기록 버퍼(30)내의 유효 엔트리들의 어드레스 비트가 충돌을 검출하기 위해 판독 누락 어드레스와 비교된다(예로서, 비교 회로(61)에 의해). 충돌이 검출되는 경우에, 그후, 충돌 엔트리를 포함하는 이전 기록 버퍼(30)내의 모든 엔트리들이 메인 메모리(예로서, 메모리(14)) 밖으로 소거(flush)된다. 우선순위 제어 회로(34)는 그후우선순위를 데이터 캐시(26)의 판독 누락을 서빙하는 것으로 전환되고, 기록 버퍼(30)로부터의 잔여 엔트리들은 데이터 캐시(26)의 판독 누락의 서빙 이후에 메인 메모리에 기록될 수 있다.
기록 버퍼(30)의 임계값을 증가시킴으로써, 임계값이 도달되기 이전에 보다 긴 시간 기간 동안 버퍼내에 보다 많은 기록들이 유지될 수 있다. 따라서, 본 발명의 동적 및 프로그램가능한 임계값 특징은 CPU(20)에 충격을 주지 않고, 보다 긴 시간 주기들 동안 기록 버퍼(30)내에 엔트리들이 존재할 수 있게 한다. 이 방식으로, 외부 버스 트래픽(예로서, 시스템 버스(50))은 기록 합병(즉, 기록 버퍼(30)내의 기록 히트들)에 의해 추가로 최소화될 수 있다.
본 발명의 다른 실시예들에서, 우선순위 제어 회로(34)는 명령들의 크기에 기반한, 그리고, 명령 프리페치 버퍼(24)내의 유효 엔트리들의 수에 기반한 동적 우선순위 조작을 이행할 수 있다. 일 실시예에서, 명령 캐시(22) 판독 누락 요청은 순차적 명령 프리페치, 순차적 명령 인출 또는 흐름 상태의 변경으로서 분류될 수 있다. 명령 프리페치 버퍼(24)를 위해 임계값이 프로그램될 수 있다. 순차적 명령 프리페치 요청들은 명령들의 크기(예로서, 16 비트, 32 비트, 64 비트) 및 임계값에 기초하여 서빙될 수 있다.
본 발명의 일 실시예에서, 우선순위 제어 회로(34)는 CPU(20)의 흐름 상태들의 변경에 기초하여 우선순위 상승을 이행할 수 있다. 흐름 상태들의 변경은 추론적 또는 비추론적 가지 목표 인출, 무제외(an-exception) 인출, 또는 점프들로 인해 발생할 수 있다. CPU(20)로부터의 흐름 신호의 변경은 명령 캐시(22)의 흐름의 변경으로 인한 판독 누락의 우선순위를 상승시키도록 우선순위 제어 회로(34)에 의해 사용될 수 있다. 기록 버퍼(30)의 임계값은 흐름의 변경이 명령 캐시(22)내의 누락을 유발하여, 따라서, 명령 캐시(22)가 메인 메모리(14)에 대한 요청을 형성하게 하는 경우에 동적으로 증가될 수 있다. 임계값을 증가시킴으로써, 증가된 임계값이 기록 버퍼(30)내의 유효 엔트리들의 현재 수 보다 큰 경우에, 기록 버퍼(30)의 상대 우선순위가 낮아질 수 있다. 명령 캐시(22)로부터의 흐름 요청의 변경을 서빙한 이후에, 기록 버퍼(30)를 위한 임계값은 감소되고, 명령 캐시(22)로부터의 다른 순차적 요청을 서빙하기 이전에, 그 임계값에 도달할때까지, 기록 버퍼(30)로부터의 기록들이 서빙될 수 있다. 우선순위 제어 회로(34)는 흐름 요청들의 변경이 펜딩중인 순차적 프리페치 누락들 보다 높은 우선순위를 취하도록 프로그램될 수 있다. 이는 CPU(20)의 주파수가 메인 메모리(예로서, 메모리(14))의 주파수 보다 높은 경우에 유용할 수있으며, 프리페치 요청들은 흐름의 변경이 발생할 때 여전히 미해결상태이다. 도 7 및 도 8은 우선순위 제어 회로(34)가 흐름 상태의 변경에 기초한 우선순위 상승 설계안을 이행할 수 있는 한가지 가능한 방식을 예시한다는 것을 주의하여야 한다. 본 발명의 대안 실시예는 소정의 방식으로 이런 설계안을 이행할 수 있다.
우선순위 제어 회로(34)는 우선순위 설계안을 동적으로 변경하기 위해 다양한 방식들을 이행할 수 있다. 예로서, 제어 레지스터들(70)(도 2 참조)이 사용되어 광범위하게 다양한 우선순위 설계안들을 프로그램하도록 사용될 수 있으며, 그 중 일부 또는 전부는 소프트웨어 제어 하에서 사용자에 의해 동적으로 변경될 수 있다. 본 발명의 대안 실시예들에서, 우선순위 제어 회로(34)에 의해 이행되는 우선 순위 설계안은 프로세서(12)가 동작하는 동안 사용자에 의해 마스크(mask) 프로그램, 동적 프로그램될 수 있으며, 일회 프로그램가능한 레지스터들 또는 적어도 1회 프로세서(12)의 사용자에 의한 우선순위 설계안의 선택을 허용하는 소정의 다른 유형의 저장 매체 또는 회로로 구현될 수 있다.
도 2를 참조하면, 임계값 레지스터들(66)은 시스템 버스(50)에 대한 액세스를 추구하는 프로세서(12)내의 각 자원을 위해 하나 또는 그 이상의 임계값들을 저장할 수 있다. 하위임계값 레지스터들(68)은 프로세서(12)내의 다양한 자원들(22, 24, 26, 28, 30)이 얼마나 가까운 시간에 임계값 레지스터들(66)에 저장된 그 각 임계값들에 도달하는지의 지표들로서 우선순위 제어 회로(34)에 의해 사용될 수 있다. 따라서, 우선순위 제어 회로(34)는 다양한 자원들이 그 임계값들에 아직 도달하지 않았을 때, 우선순위에 관한 알려진 판정들을 이루기 위해 하위임계값 레지스터들(68)을 사용할 수 있다. 도 2를 참조하면, 비교 회로(61)는 명령 프리페치 버퍼(24), 푸시 버퍼(28) 및 기록 버퍼(30)로부터의 유입 상태값들과 임계값 레지스터들(66)에 저장된 임계값을 비교하기 위해 회로(60)에 의해 사용될 수 있다. 본 발명의 일 실시예에서, 임계값 레지스터들(66)은 각 버퍼 자원들(24, 28, 30)의 충만도 레벨을 특정하는 임계값을 저장한다. 이들 버퍼들(24, 28, 30)로부터 비교 회로(61)에 제공된 상태 정보는 각 버퍼가 현재 얼마나 채워져 있는지를 나타낸다.
명령 프리페치 버퍼(24)를 위한 요청들은 버퍼를 채우기 위해 사용되고, 이는 유효 엔트리들의 수가 사전결정된 임계값 보다 커지고 나면 그 임계값을 초과한다는 것을 주의하여야 한다. 대조적으로, 푸시 버퍼(28) 및 기록 버퍼(30)로부터의 요청들은 이들 버퍼들을 비우기 위해 생성된다. 그 각 유효 엔트리들의 수가 그 각 임계값들을 초과하고 나면, 생성된 요청들은 보다 높은 우선순위가 필요하다는 것을 의미한다.
본 발명의 일 실시예에서, 우선순위 제어 회로는 등시성 하위임계값 요청들을 위한 프로그램가능한 명령/데이터 우선순위를 이행하도록 적응될 수 있다. 시스템 버스(50) 사용에 대한 동시 요청들의 경우에, 명령 프리페치 버퍼(24)가 거의 채워져있고(즉, 낮은 우선순위를 가지고), 기록 버퍼(30)가 소수의 엔트리들을 가질 때(즉, 그 임계값 보다 낮은) 우선순위 제어 회로(34)의 작용은 버퍼들 및 각 임계값들내의 유효 엔트리들의 수의 편차들에 기초하여 프로그램될 수 있다. 달리 말해서, 버퍼(24)가 그 임계값(충만 상태를 의미)을 초과하고, 버퍼들(28 및 30)이 그 각 임계값들을 초과하지 않는(그들이 충만 상태에 도달하지 않은 것을 의미) 경우에, 그후, 우선순위 제어 회로(34)는 버퍼들(24, 28, 30) 사이의 각 우선순위를 판정하기 위해, 하위임계값 레지스터들(68)내에 저장된 하위임계값들을 사용할 수 있다. 예로서, 명령 프리페치 버퍼(24)가 느린 메모리로부터 명령들을 인출하고, 데이터 요청들을 위한 데이터가 빠른 메모리에 위치되는 경우에, 우선순위 제어 회로(34)는 하위임계값 상태들이 존재하는 기록 버퍼(30) 또는 푸시 버퍼(28)로부터의 데이터 요청들 보다 명령 프리페치 버퍼(24)로부터의 명령 요청들에 우선순위를 주도록 프로그램될 수 있다. 대안적 데이터 처리 시스템들에서, 기록 버퍼 엔트리와의 미래의 판독 충돌을 회피하기 위해, 하위임계값 상태들이 존재할 때 기록 버퍼(30)에 우선순위를 제공하는 것이 적합할 수 있다.
도 2를 참조하면, 본 발명의 일부 실시예들은 프로세서(12)의 성능을 감시하고, 우선순위 제어 회로(34)내의 우선순위 프로그래밍을 적응적으로 변경하는 우선 순위 효용도 모니터(62)를 사용할 수 있다. 따라서, 우선순위 효용도 메모리(62)는 프로세서(12)의 성능에 기초하여 우선순위 제어 회로(34)의 우선순위 설계안을 조절할 수 있다. 도 2에 예시된 실시예에서, 우선순위 효용도 모니터(62)는 회로(60)내의 신호들을 감시함으로써, 시스템의 성능을 감시한다. 우선순위 효용도 모니터(62)는 임계값 레지스터들(66) 및/또는 하위임계값 레지스터들(68) 및/또는 제어 레지스터들(70)내의 값들을 변경함으로써, 우선순위제어 회로(34)의 우선순위를 변경한다. 우선순위 규칙들(64)을 특정하기 위한 회로는 사용자 프로그램가능 또는 불가능할 수 있지만, 프로세서(12)내에 사용되는 우선순위 설계안의 특정을 보조 또는 특정하도록 사용되는 다른 회로를 포함할 수 있다.
비록 프로세서(12)를 위한 다양한 설계안들이 여기에 설명되었지만, 본 발명의 대안 실시예들은 소정의 우선순위 설계안을 사용할 수 있다. 따라서, 우선순위 제어 회로(34)는 소정의 공용 자원(예로서, 시스템 버스(50)를 위해 경쟁하는 프로세서(12)내의 소정 수의 자원들(예로서, 22, 24, 26, 28, 30) 사이의 소정의 우선순위 설계안을 이행하기 위해 사용될 수 있다. 일 실시예에서, 우선순위 제어회로(34)는 CPU(20)가 시스템 버스(50) 같은 공용 자원의 액세스하는 충돌들로 인해 스톨되는 시간의 양을 최소화하는 우선순위 설계안을 이행한다. 본 발명의 대안 실시예들은 일부 다른 선택된 기준들을 최대화 또는 최소화시키기 위해 우선순위 제어 회로(34)에 의해 사용된 우선순위 설계안을 조절할 수 있다. 예로서, CPU(20)의 성능은 CPU(20)가 스톨되는 시간이 아닌 소정의 다른 방식으로 측정될 수 있다. 예로서, 우선순위 제어 회로(34)에 의해 사용될 수 있는 한가지 기준은 시스템 버스(50)상의 트래픽의 최소화의 목적이다. 본 발명의 대안 실시예들은 원하는 프로세서(12) 또는 데이터 처리 시스템(10)을 위한 소정의 목적을 선택할 수 있다. 이 선택적 목적은 그후 원하는 소정의 기준(예로서, CPU(20) 스톨들, 또는 시스템 버스(50) 활용도)에 의해 측정될 수 있다. 도 2를 참조하면, 비록 본 발명이 임계값들에 관련하여 설명되었지만, 본 발명의 대안 실시예들은 선택된 자원들의 원하는 충만도 또는 공백도를 계량 및 특정하기 위해 다른 메카니즘들을 사용할 수 있다. 예로서, 일부 자원들(예로서, 데이터 캐시(26) 및 명령 캐시(22))은 임계값들을 사용하지 않는다. 대신, 값들이 저장 회로(예로서, 제어 레지스터들(70))내에 저장되고, 이것이 그후 데이터 캐시(26) 및 명령 캐시(22) 사이에 사용될 우선순위 설계안을 결정하기 위해 우선순위 제어 회로(34)에 의해 사용될 수 있다. 본 발명의 대안 실시예들에서, 사용자가 시스템 버스(50) 또는 프로세서(12)를 액세스하는 다른 집적 회로 단자들(미도시)에 의해 우선순위 제어 회로(34)에 프로그램 정보를 제공할 수 있다.
비록, 본 발명이 특정 수행 유형들 또는 가능성들의 극단에 관해 설명되었지만, 숙련자들은 수행 유형들 및 가능성들의 극단들은 역전될 수 있다는 것을 이해할 것이다.
상기 설명에서, 본 발명은 특정 실시예들을 참조로 설명되었다. 그러나, 본 기술 분야의 통상적인 지식을 가진 자는 후술된 청구항에 기술된 바와 같은 본 발명의 범주로부터 벗어나지 않고 다양한 변형들 및 변경들을 이룰 수 있다는 것을 인지할 것이다. 따라서, 명세서 및 도면들은 제한의 의미가 아닌 예시로서 간주되어야 하며, 모든 이런 변형들은 본 발명의 범주내에 포함된다.
특정 실시예들에 관련하여, 이득들, 다른 장점들 및 문제점들에 대한 해결법들을 상술하였다. 그러나, 이득들, 장점들 및 문제점들에 대한 해법들과, 소정의 이득, 장점 또는 해법을 유발하거나 보다 현저하게 할 수 있는 소자(들)가 소정의 또는 모든 청구항의 임계적, 필수 또는 주 특징 또는 소자로서 구성되지 않을 수 있다. 여기서, 용어 "포함한다", "포함하는" 또는 소정의 다른 그 변형은 비배제적 포함을 포괄하는 것을 의도하며, 그래서, 소자들의 목록을 포함하는 프로세스, 방법, 물품 또는 장치는 단지 이들 소자들만을 포함하는 것이 아니며, 이런 프로세스, 방법, 물품 및 장치에 고유하거나, 명시적으로 나열되지 않은 다른 소자들을 포함할 수 있다.

Claims (11)

  1. 통신 버스에 연결되도록 적응되는, 상기 통신 버스의 사용을 위한 요청들을 서비스하는 버스 인터페이스 유닛와, 상기 통신 버스의 사용을 위한 요청들을 형성하는 복수의 자원들을 가지는 데이터 프로세서내의 요청들의 우선순위화 방법에 있어서,
    제 1 자원으로부터의 제 1 요청과, 제 2 자원으로부터의 제 2 요청을 수신하는 단계, 및
    상기 제 1 자원 및 상기 제 2 자원 중 하나에 대응하는 임계값을 사용하여 상기 제 1 요청에 우선순위를 할당하는 단계를 포함하는 우선순위화 방법.
  2. 데이터 프로세서에 있어서,
    중앙 처리 유닛,
    상기 중앙 처리 유닛와 연결되고, 데이터 송신 또는 수신을 위해 통신 버스의 사용을 요청하도록 적응되는 제 1 요청 자원,
    상기 중앙 처리 유닛와 연결되고, 데이터 송신 또는 수신을 위해 통신 버스의 사용을 요청하도록 적응되는 제 2 요청 자원, 및
    상기 중앙 처리 유닛, 상기 제 1 요청 자원 및 상기 제 2 요청 자원에 연결되고, 상기 통신 버스에 연결되도록 적응되는 버스 인터페이스 유닛을 포함하고,
    상기 버스 인터페이스 유닛은 상기 제 1 요청 자원으로부터의 제 1 요청과,상기 제 2 요청 자원으로부터의 제 2 요청을 수신하고, 상기 제 1 요청 자원 및 상기 제 2 요청 자원 중 하나에 대응하는 임계값에 기초하여 상기 제 1 및 제 2 요청 각각에 우선순위를 할당하도록 연결된 우선순위 제어기를 포함하는 데이터 프로세서.
  3. 프로세서에 있어서,
    처리 유닛,
    상기 처리 유닛에 연결된 캐시,
    상기 처리 유닛에 연결된 기록 버퍼, 및
    상기 처리 유닛, 상기 캐시 및 상기 기록 버퍼에 연결된 우선순위 제어기를 포함하고,
    상기 우선순위 제어기는
    상기 기록 버퍼에 대응하는 제 1 임계값을 저장하는 제 1 프로그램가능한 임계값 레지스터를 포함하는 우선순위 규칙 특정 회로, 및
    상기 캐시 및 상기 기록 버퍼로부터 메모리 액세스 요청들을 수신하고, 적어도 상기 제 1 임계값에 기초하여 상기 메모리 액세스 요청들을 우선순위화하는 상기 우선순위 규칙 특정 회로에 연결된 현 우선순위 해석 회로를 포함하는 프로세서.
  4. 처리 유닛, 상기 처리 유닛에 연결된 캐시, 상기 처리 유닛에 연결된 기록버퍼 및 상기 처리 유닛, 상기 캐시 및 상기 기록 버퍼에 연결된 버스 인터페이스 유닛을 구비하고, 상기 버스 인터페이스 유닛은 통신 버스에 연결되어 상기 통신 버스의 사용을 위한 상기 캐시 및 상기 기록 버퍼로부터의 요청들을 서비스하도록 적응되는, 데이터 프로세서내의 요청들을 우선순위화하는 방법에 있어서,
    상기 캐시로부터의 제 1 통신 버스 액세스 요청 및 상기 기록 버퍼로부터의 제 2 통신 버스 액세스 요청을 수신하는 단계, 및
    상기 기록 버퍼에 대응하는 제 1 임계값을 사용하여, 상기 제 1 및 제 2 통신 버스 액세스 요청들 중 어느 것이 우선순위를 취득하는지를 결정하는 단계를 포함하는 우선순위화 방법.
  5. 데이터 프로세서에 있어서,
    처리 유닛,
    상기 처리 유닛에 연결된 캐시,
    상기 처리 유닛에 연결된 기록 버퍼,
    상기 처리 유닛, 상기 캐시 및 상기 기록 버퍼에 연결되고, 통신 버스에 연결되어 상기 캐시 및 상기 기록 버퍼로부터의 통신 버스 사용을 위한 요청들을 서비스하도록 적응되는 버스 인터페이스 유닛,
    상기 캐시로부터의 제 1 통신 버스 액세스 요청 및 상기 기록 버퍼로부터의 제 2 통신 버스 액세스 요청을 수신하기 위해 상기 캐시 및 상기 기록 버퍼에 연결된 수신 수단, 및
    상기 기록 버퍼에 대응하는 제 1 임계값을 사용하여 상기 제 1 및 제 2 통신 버스 액세스 요청들 중 어느 것이 우선순위를 취득하는지를 결정하기 위해 상기 수신 수단에 연결된 우선순위 할당 수단을 포함하는 데이터 프로세서.
  6. 처리 유닛, 상기 처리 유닛에 연결된 기록 버퍼 및 상기 처리 유닛, 캐시 및 상기 기록 버퍼에 연결된 버스 인터페이스를 구비하고, 상기 버스 인터페이스가 통신 버스에 연결되어 상기 통신 버스의 사용을 위한 상기 기록 버퍼 및 상기 처리 유닛로부터의 요청들을 서비스하는 데이터 프로세서에서 사용하는 방법에 있어서,
    명령 프리페치 버퍼에 대응하는 명령 프리페치 요청을 수신하는 단계,
    제 1 비교 결과를 얻기 위해, 상기 기록 버퍼내의 유효 엔트리들의 수를 기록 버퍼 임계값과 비교하는 단계,
    제 2 비교 결과를 얻기 위해, 상기 명령 프리페치 버퍼내의 유효 엔트리들의 수를 명령 프리페치 버퍼 임계값과 비교하는 단계, 및
    상기 제 1 및 제 2 비교 결과들에 기초하여 상기 명령 예비패치 요청에 우선 순위를 할당하는 단계를 포함하는 방법.
  7. 데이터 프로세서에 있어서,
    처리 유닛,
    상기 처리 유닛에 연결된 기록 버퍼, 및
    상기 처리 유닛 및 상기 기록 버퍼에 연결되며, 통신 버스에 연결되어 상기통신 버스 사용을 위한 상기 기록 버퍼 및 상기 처리 유닛로부터의 요청들을 서비스하는 버스 인터페이스 유닛을 포함하고,
    상기 버스 인터페이스 유닛은
    명령 프리페치 버퍼에 대응하는 명령 프리페치 요청을 수신하기 위한 수신 수단,
    상기 수신 수단에 연결되고, 제 1 비교 결과를 얻기 위해 상기 기록 버퍼내의 유효 엔트리들의 수를 기록 버퍼 임계값과 비교하기 위한 제 1 비교 수단,
    상기 수신 수단에 연결되고, 제 2 비교 결과를 얻기 위해 상기 명령 프리페치 버퍼내의 유효 엔트리들의 수를 명령 예비패치 버퍼 임계값과 비교하기 위한 제 2 비교 수단, 및
    상기 제 1 및 제 2 비교 수단에 연결되고, 상기 제 1 및 제 2 비교 결과들에 기초하여, 상기 명령 프리페치 요청에 우선순위를 할당하기 위한 우선순위화 수단을 포함하는 데이터 프로세서.
  8. 처리 유닛, 상기 처리 유닛에 연결되고, 복수의 엔트리들을 갖는 기록 버퍼, 및 상기 처리 유닛 및 상기 기록 버퍼에 연결된 버스 인터페이스 유닛을 구비하고, 상기 버스 인터페이스 유닛이 통신 버스에 연결되어 상기 통신 버스의 사용을 위한 상기 기록 버퍼 및 상기 처리 유닛로부터의 요청들을 서비스하는, 데이터 프로세서에서 사용하는 방법에 있어서,
    판독 요청을 수신하는 단계,
    상기 판독 요청 수신시, 상기 기록 버퍼의 충돌 엔트리에서 기록 버퍼 충돌을 검출하는 단계, 및
    상기 기록 버퍼 충돌 검출에 응답하여, 상기 충돌 엔트리를 포함하는 상기 기록 버퍼내의 상기 복수의 엔트리들의 일부를 소거(flush)하는 단계를 포함하는 방법.
  9. 데이터 프로세서에 있어서,
    처리 유닛,
    상기 처리 유닛에 연결되며, 복수의 엔트리들을 가지는 기록 버퍼,
    상기 처리 유닛 및 상기 기록 버퍼에 연결되고, 통신 버스에 연결되어, 상기 통신 버스 사용을 위한 상기 기록 버퍼 및 상기 처리 유닛의 요청들을 서비스하는 버스 인터페이스 유닛,
    판독 요청을 수신하기 위해 상기 버스 인터페이스 유닛에 연결된 수신 수단,
    상기 수신 유닛에 연결되고, 상기 판독 요청 수신시, 상기 기록 버퍼내의 충돌 엔트리에서 기록 버퍼 충돌을 검출하기 위한 검출 수단, 및
    상기 기록 버퍼 충돌 검출에 응답하여, 상기 충돌 엔트리를 포함하는 상기 기록 버퍼내의 상기 복수의 엔트리들 중 일부를 소거하기 위해 상기 검출 수단에 연결된 소거 수단을 포함하는 데이터 프로세서.
  10. 프리페치 버퍼를 구비하는 처리 유닛, 상기 처리 유닛에 연결된 버스 인터페이스 유닛을 구비하고, 상기 버스 인터페이스 유닛은 통신 버스에 연결되어 상기 통신 버스의 사용을 위한 상기 프리페치 버퍼 및 상기 처리 유닛로부터의 요청들을 서비스하는 데이터 프로세서에서 사용하는 방법에 있어서,
    흐름 명령 인출 요청의 변경을 수신하는 단계,
    상기 프리페치 버퍼내의 엔트리들의 수를 프리페치 버퍼 임계값과 비교하는 단계, 및
    상기 엔트리들의 수의 비교에 응답하여, 상기 통신 버스의 사용을 위한 상기 프리페치 버퍼로부터의 요청에 대하여 흐름 명령 인출 요청의 변경의 우선순위에 선택적으로 영향을 미치는 단계를 포함하는 방법.
  11. 통신 버스에 연결되어 상기 통신 버스의 사용을 위한 요청들을 서비스하는 버스 인터페이스 유닛, 제 1 요청 자원 및 제 2 요청 자원을 구비하며, 상기 제 1 및 제 2 요청 리소스들이 상기 통신 버스의 사용을 위한 요청들을 형성하는 데이터 프로세서의 요청들을 우선순위화하는 방법에 있어서,
    제 1 자원으로부터의 제 1 요청을 선택적으로 수신하고, 제 2 자원으로부터의 제 2요청을 선택적으로 수신하는 단계,
    제 1 요청 및 제 2 요청이 수신된 경우에, 상기 제 1 및 제 2 요청에 우선순위들을 할당하기 위해, 상기 제 1 자원과 상기 제 2 자원 중 하나에 대응하는 임계값을 사용하는 단계, 및
    상기 제 1 요청 및 상기 제 2 요청이 수신되지 않는 경우에,
    상기 제 1 요청 자원내의 엔트리들의 수를 제 1 요청 자원 임계값과 비교하고, 상기 제 2 요청 자원내의 엔트리들의 수를 제 2 요청 자원 임계값과 비교하는 단계, 및
    상기 제 1 요청 자원내의 엔트리들의 수가 상기 제 1 요청 자원 임계값 미만에 들고, 상기 제 2 요청 자원내의 상기 엔트리들의 수가 상기 제 2 요청 자원 임계값 미만에 드는 경우에, 상기 제 1 요청 자원 및 상기 제 2 요청 자원 중 하나에 대응하는 하위임계값을 사용하여 상기 제 1 및 제 2 요청에 우선순위들을 할당하는 단계를 포함하는 우선순위화 방법.
KR10-2004-7002260A 2001-08-10 2002-07-24 적응성 우선순위 제어기를 가지는 데이터 처리 시스템 KR20040054673A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/927,123 US6832280B2 (en) 2001-08-10 2001-08-10 Data processing system having an adaptive priority controller
US09/927,123 2001-08-10
PCT/US2002/024161 WO2003014945A2 (en) 2001-08-10 2002-07-24 Data processing system having an adaptive priority controller

Publications (1)

Publication Number Publication Date
KR20040054673A true KR20040054673A (ko) 2004-06-25

Family

ID=25454218

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7002260A KR20040054673A (ko) 2001-08-10 2002-07-24 적응성 우선순위 제어기를 가지는 데이터 처리 시스템

Country Status (7)

Country Link
US (1) US6832280B2 (ko)
EP (1) EP1419447A2 (ko)
KR (1) KR20040054673A (ko)
CN (1) CN1554050B (ko)
AU (1) AU2002355533A1 (ko)
TW (1) TW565769B (ko)
WO (1) WO2003014945A2 (ko)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7114086B2 (en) * 2002-01-04 2006-09-26 Ati Technologies, Inc. System for reduced power consumption by monitoring instruction buffer and method thereof
JP3825328B2 (ja) * 2002-01-23 2006-09-27 Necエレクトロニクス株式会社 プロセッサ合成装置、システムlsi合成装置、プロセッサ合成方法、システムlsi合成方法、及び記録媒体
US6832296B2 (en) * 2002-04-09 2004-12-14 Ip-First, Llc Microprocessor with repeat prefetch instruction
KR100480605B1 (ko) * 2002-07-25 2005-04-06 삼성전자주식회사 네트워크 제어기의 송신부 버퍼 및 수신부 버퍼를제어하는 방법 및 네트워크 제어기
US7062582B1 (en) * 2003-03-14 2006-06-13 Marvell International Ltd. Method and apparatus for bus arbitration dynamic priority based on waiting period
CN100489813C (zh) * 2003-04-21 2009-05-20 智慧第一公司 可选择性撤回预取的方法
US6871246B2 (en) * 2003-05-07 2005-03-22 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US20060004965A1 (en) * 2004-06-30 2006-01-05 Tu Steven J Direct processor cache access within a system having a coherent multi-processor protocol
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7469332B2 (en) * 2005-03-02 2008-12-23 International Business Machines Corporation Systems and methods for adaptively mapping an instruction cache
JP4847036B2 (ja) * 2005-03-30 2011-12-28 キヤノン株式会社 バスアクセスを調停する制御装置およびデータ処理装置の制御方法
US7752488B2 (en) * 2006-01-06 2010-07-06 International Business Machines Corporation Method to adjust error thresholds in a data storage and retrieval system
US9304773B2 (en) 2006-03-21 2016-04-05 Freescale Semiconductor, Inc. Data processor having dynamic control of instruction prefetch buffer depth and method therefor
US20080034146A1 (en) * 2006-08-04 2008-02-07 Via Technologies, Inc. Systems and Methods for Transactions Between Processor and Memory
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US7627714B2 (en) * 2006-08-22 2009-12-01 International Business Machines Corporation Apparatus, system, and method for preventing write starvation in a partitioned cache of a storage controller
US8095816B1 (en) 2007-04-05 2012-01-10 Marvell International Ltd. Processor management using a buffer
US8443187B1 (en) 2007-04-12 2013-05-14 Marvell International Ltd. Authentication of computing devices in server based on mapping between port identifier and MAC address that allows actions-per-group instead of just actions-per-single device
US8612972B2 (en) 2007-06-27 2013-12-17 Microsoft Corporation Running add-on components in virtual environments
US8862590B2 (en) * 2007-06-29 2014-10-14 Microsoft Corporation Flexible namespace prioritization
US8321706B2 (en) 2007-07-23 2012-11-27 Marvell World Trade Ltd. USB self-idling techniques
US20090123814A1 (en) * 2007-10-09 2009-05-14 Mason Cabot Power source and method of managing a power source
US8171309B1 (en) 2007-11-16 2012-05-01 Marvell International Ltd. Secure memory controlled access
US8260990B2 (en) 2007-11-19 2012-09-04 Qualcomm Incorporated Selective preclusion of a bus access request
US8255631B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
US20090261785A1 (en) * 2008-03-27 2009-10-22 Mason Cabot Method for managing a modular power source
US20100136405A1 (en) * 2008-04-02 2010-06-03 Karl Johnson Battery pack with optimized mechanical, electrical, and thermal management
US20090263708A1 (en) * 2008-04-02 2009-10-22 Josh Bender System and method of integrated thermal management for a multi-cell battery pack
US8510560B1 (en) 2008-08-20 2013-08-13 Marvell International Ltd. Efficient key establishment for wireless networks
KR101595043B1 (ko) 2008-09-18 2016-02-17 마벨 월드 트레이드 리미티드 적어도 부분적으로 부팅 동안에 어플리케이션들을 메모리에 프리로딩하는 방법
US8316976B2 (en) * 2008-11-20 2012-11-27 Mission Motor Company Frame for a ride-on vehicle having a plurality of battery packs
US7613850B1 (en) 2008-12-23 2009-11-03 International Business Machines Corporation System and method utilizing programmable ordering relation for direct memory access
JP5565778B2 (ja) * 2009-01-05 2014-08-06 マーベル ワールド トレード リミテッド 不揮発性メモリデバイスを利用するハイバネートまたはサスペンド方法およびシステム
US8549630B2 (en) * 2010-03-05 2013-10-01 The Regents Of The University Of California Trojan-resistant bus architecture and methods
CN101833490B (zh) * 2010-03-31 2012-05-30 卡斯柯信号有限公司 基于软硬件相异性的二取二安全平台的信息处理方法
US8312954B2 (en) 2010-04-22 2012-11-20 Mission Motor Company Frame for a two wheeled electric vehicle
US8904115B2 (en) 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
JP5733680B2 (ja) * 2011-01-20 2015-06-10 日本電気株式会社 コマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラム
US9141394B2 (en) 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
US8490107B2 (en) 2011-08-08 2013-07-16 Arm Limited Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels
CN102955753B (zh) * 2011-08-30 2016-08-03 安凯(广州)微电子技术有限公司 一种迟滞型数据流控制电路
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
US8930601B2 (en) * 2012-02-27 2015-01-06 Arm Limited Transaction routing device and method for routing transactions in an integrated circuit
US9195511B2 (en) * 2012-03-05 2015-11-24 Accenture Global Services Limited Differentiated service-based graceful degradation layer
US9715512B2 (en) * 2012-04-27 2017-07-25 Verisign, Inc. Bulk management of registry objects
US9239794B1 (en) * 2012-06-11 2016-01-19 Google Inc. Managing a prefetch buffer with probabilistic access predictions
US9575768B1 (en) 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
WO2015015305A1 (en) 2013-07-31 2015-02-05 Marvell Word Trade Ltd. Parallelizing boot operations
US9477679B2 (en) * 2013-09-20 2016-10-25 Google Inc. Programmatically choosing preferred storage parameters for files in large-scale distributed storage systems
US10039112B2 (en) 2014-10-10 2018-07-31 Huawei Technologies Co., Ltd Methods and systems for provisioning a virtual network in software defined networks
US9792147B2 (en) * 2015-07-02 2017-10-17 International Business Machines Corporation Transactional storage accesses supporting differing priority levels
US20170075571A1 (en) * 2015-09-11 2017-03-16 Media Tek Inc. Memory device and control method thereof
US10862818B2 (en) * 2015-09-23 2020-12-08 Huawei Technologies Co., Ltd. Systems and methods for distributing network resources to network service providers
EP3427435A1 (en) 2016-03-08 2019-01-16 Marvell World Trade Ltd. Methods and apparatus for secure device authentication
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US11567885B2 (en) 2016-05-12 2023-01-31 Lg Electronics Inc. System and method for optimizing DRAM bus switching using LLC
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
JP2017228172A (ja) * 2016-06-23 2017-12-28 富士通株式会社 情報処理システム
US11003602B2 (en) * 2017-01-24 2021-05-11 Micron Technology, Inc. Memory protocol with command priority
US11243694B2 (en) 2020-01-29 2022-02-08 Samsung Electronics Co., Ltd. Grouping key value object IOs to improve IO performance for key-value storage devices
US11972361B2 (en) 2020-01-29 2024-04-30 Samsung Electronics Co., Ltd. Performance optimization of object grouping schema in a network key-value storage device using adaptive regression
US11204802B2 (en) 2020-04-27 2021-12-21 International Business Machines Corporation Adjusting a dispatch ratio for multiple queues
CN115526760A (zh) * 2021-06-25 2022-12-27 英特尔公司 用于动态地改变高速缓存中的数据优先级的方法和装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4729093A (en) 1984-09-26 1988-03-01 Motorola, Inc. Microcomputer which prioritizes instruction prefetch requests and data operand requests
US5553268A (en) 1991-06-14 1996-09-03 Integrated Device Technology, Inc. Memory operations priority scheme for microprocessors
DE69223304T2 (de) * 1991-09-27 1998-06-18 Sun Microsystems Inc Arbitrierungsverriegelungverfahren und -vorrichtung für einen entfernten Bus
GB2277816B (en) 1993-05-04 1997-09-03 Motorola Inc Data communication system
US5577230A (en) 1994-08-10 1996-11-19 At&T Corp. Apparatus and method for computer processing using an enhanced Harvard architecture utilizing dual memory buses and the arbitration for data/instruction fetch
US5696938A (en) * 1994-08-31 1997-12-09 Vlsi Technology, Inc. Computer system permitting mulitple write buffer read-arounds and method therefor
JPH08221311A (ja) 1994-12-22 1996-08-30 Sun Microsyst Inc スーパースカラプロセッサにおけるロードバッファ及びストアバッファの優先順位の動的切換え
US5572686A (en) * 1995-06-05 1996-11-05 Apple Computer, Inc. Bus arbitration scheme with priority switching and timer
US5745772A (en) * 1996-08-02 1998-04-28 Micron Electronics, Inc. Advanced programmable interrupt controller
US6032232A (en) 1997-05-29 2000-02-29 3Com Corporation Multiported memory access system with arbitration and a source burst limiter for blocking a memory access request
US6108738A (en) * 1997-06-10 2000-08-22 Vlsi Technology, Inc. Multi-master PCI bus system within a single integrated circuit
US6058461A (en) 1997-12-02 2000-05-02 Advanced Micro Devices, Inc. Computer system including priorities for memory operations and allowing a higher priority memory operation to interrupt a lower priority memory operation
US6185637B1 (en) * 1998-04-15 2001-02-06 Advanced Micro Devices, Inc. System for implementing an adaptive burst length for burst mode transactions of a memory by monitoring response times for different memory regions
US6145033A (en) 1998-07-17 2000-11-07 Seiko Epson Corporation Management of display FIFO requests for DRAM access wherein low priority requests are initiated when FIFO level is below/equal to high threshold value
US6233645B1 (en) 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
US6671752B1 (en) * 2000-08-28 2003-12-30 International Business Machines Corporation Method and apparatus for bus optimization in a PLB system

Also Published As

Publication number Publication date
WO2003014945A2 (en) 2003-02-20
CN1554050A (zh) 2004-12-08
US20030033461A1 (en) 2003-02-13
EP1419447A2 (en) 2004-05-19
US6832280B2 (en) 2004-12-14
WO2003014945A3 (en) 2003-09-12
AU2002355533A1 (en) 2003-02-24
TW565769B (en) 2003-12-11
CN1554050B (zh) 2010-06-16

Similar Documents

Publication Publication Date Title
KR20040054673A (ko) 적응성 우선순위 제어기를 가지는 데이터 처리 시스템
KR101021046B1 (ko) 동적 프리페치 버퍼 구성 및 대체를 위한 방법 및 장치
EP0843262B1 (en) Memory request reordering in a data processing system
US8683139B2 (en) Cache and method for cache bypass functionality
US6643747B2 (en) Processing requests to efficiently access a limited bandwidth storage area
US8407432B2 (en) Cache coherency sequencing implementation and adaptive LLC access priority control for CMP
JP5305542B2 (ja) 投機的なプリチャージの検出
JP4712110B2 (ja) データ処理システムに於けるメモリ制御
US7051172B2 (en) Memory arbiter with intelligent page gathering logic
US20110072218A1 (en) Prefetch promotion mechanism to reduce cache pollution
KR100668001B1 (ko) 메모리 액세스를 제어하기 위한 방법 및 장치
US7761669B2 (en) Memory controller granular read queue dynamic optimization of command selection
KR101093317B1 (ko) 데이터 처리 시스템 내의 프리패치 제어
US20100281222A1 (en) Cache system and controlling method thereof
US20030093636A1 (en) Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests
US10509743B2 (en) Transferring data between memory system and buffer of a master device
US7313658B2 (en) Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests
US20090019238A1 (en) Memory Controller Read Queue Dynamic Optimization of Command Selection
US8656106B2 (en) Managing unforced injections of cache lines into a cache utilizing predetermined address ranges
US20030126380A1 (en) Memory arbiter with grace and ceiling periods and intelligent page gathering logic
JPH10198604A (ja) キャッシュリプレース方式

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid