KR100943104B1 - 기능 블럭들 사이에서 중재를 위한 다양한 방법들 및장치들 - Google Patents

기능 블럭들 사이에서 중재를 위한 다양한 방법들 및장치들 Download PDF

Info

Publication number
KR100943104B1
KR100943104B1 KR1020057019847A KR20057019847A KR100943104B1 KR 100943104 B1 KR100943104 B1 KR 100943104B1 KR 1020057019847 A KR1020057019847 A KR 1020057019847A KR 20057019847 A KR20057019847 A KR 20057019847A KR 100943104 B1 KR100943104 B1 KR 100943104B1
Authority
KR
South Korea
Prior art keywords
transactions
arbitration
transaction
functional blocks
policy
Prior art date
Application number
KR1020057019847A
Other languages
English (en)
Other versions
KR20060008908A (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 소닉스, 인코퍼레이티드
Publication of KR20060008908A publication Critical patent/KR20060008908A/ko
Application granted granted Critical
Publication of KR100943104B1 publication Critical patent/KR100943104B1/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/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Abstract

본 발명은 중재 로직을 포함하는 중재 제어기에서 개시되는 다양한 방법들 및 장치들에 관한 것이다. 중재 제어기는 다수의 기능 블럭들로부터 하나 이상의 트랜잭션들을 수신하는 다수의 입력들을 갖는다. 중재 제어기는 중재 정책을 수행함으로써 다수의 기능 블럭들 사이에서 공유된 자원으로 액세스하기 위한 요청들을 중재한다. 중재 정책은 다수의 기능 블럭들로부터의 트랜잭션들을 상기 공유된 자원에 의해 서비스되기 위한 트랜잭션들의 글로벌 그룹들로 그룹화한다. 제 1 글로벌 그룹내의 모든 트랜잭션들은 다음 트랜잭션들의 글로벌 그룹들내의 트랜잭션들을 서비스하기 전에 공유된 자원에 의해 서비스된다. 중재 로직은 중재 정책을 용이하게 한다. 중재 로직은 공유된 자원에 대하여 계층적으로 중재하는 캐스케이드형 중재 유니트들을 포함한다. 중재 제어기 내의 입력들에 트랜잭션들을 제공하는 기능 블럭들의 토폴로지는 중재 유니트들의 집합에 의해 달성되는 중재 정책에 관계없이 변화할 수 있다.

Description

기능 블럭들 사이에서 중재를 위한 다양한 방법들 및 장치들{VARIOUS METHODS AND APPARATUSES FOR ARBITRATION AMONG BLOCKS OF FUNCTIONALITY}
저작권에 대한 통지
본 특허 문서의 개시 부분은 저작권 보호에 속하는 내용들을 포함하고 있다. 임의의 텍스트 및 도면들이 특허상표청의 특허 파일 또는 기록들에 있을 수 있기 때문에, 저작권자는 이들을 팩시밀리 복제하는 것에 반대하지는 않으나, 그렇지 않은 경우에는 모든 저작권들을 보유한다.
본 발명은 기능 블럭들 사이에서 중재를 위한 다양한 방법들 및 장치들에 관한 것이다.
종래 기술들에서, 중재 메커니즘은 흔히 집중화되며, 물리적으로 분배되거나 또는 다른 클록 사이클들로 분배될 수 없다. 파이프라인 포인트들이 다수의 중재 포인트들로 분리되는 경우, 중재 정책은 흔히 중재 포인트들의 물리적 분배에 따라 좌우된다. 이것은 중재 정책을 구현하는 로직을 변경함이 없이, 칩의 물리적 레이아웃의 후기 스테이지들 동안에 발생할 수 있는, 물리적 분배를 변경하기 어렵게 만든다.
서비스 품질 특성들 및/또는 멀티 쓰레딩(multi-threading)을 부가하는 것은 중재 메커니즘을 복잡하게 하고 더욱 느려지게 만들 수 있다.
중재 제어기가 중재 로직과 함께 동작하는 다양한 방법들 및 장치들이 설명된다. 중재 제어기는 다수의 기능 블럭들로부터 하나 이상의 트랜잭션들(transaction)을 수신하는 다수의 입력들을 포함한다. 중재 제어기는 중재 정책을 구현함으로써 다수의 기능 블럭들 사이에서 공유된 자원으로의 액세스를 위한 요청들을 중재한다. 중재 정책은 다수의 기능 블럭들로부터의 트랜잭션들을 상기 공유된 자원에 의해 서비스하기 위한 트랜잭션들의 글로벌 그룹들로 분류한다. 제 1 글로벌 그룹에 있는 모든 트랜잭션들은 다음 트랜잭션들의 글로벌 그룹에 있는 트랜잭션들을 서비스하기 전에 상기 공유된 자원에 의해 서비스된다. 중재 로직은 중재 정책을 용이하게 한다. 중재 로직은 공유된 자원을 계층적으로 중재하는 캐스케이드형(cascaded) 중재 유니트들을 포함한다. 중재 제어기 내의 입력들에 트랜잭션들을 제공하는 기능 블럭들의 토폴로지(topology)는 중재 유니트들의 집합에 의해 달성되는 중재 정책에 관계없이 변화할 수 있다.
도 1은 본 발명의 방법 및 장치가 구현될 수 있는 네트워크 환경의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 2는 본 발명의 방법 및 장치가 구현될 수 있는 컴퓨터 시스템의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 3은 다수의 기능 블럭들 사이에서 중재 정책을 구현하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 4는 공유된 링크를 가지는 다수의 기능 블럭들 사이에서 중재 정책을 구현하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 5는 다수의 기능 블럭들로부터 하나 이상의 트랜잭션들을 수신하는 다수의 입력들을 구비하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 6은 기능 블럭들로부터 상이한 크기를 가지는 그룹들의 트랜잭션들을 수신하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 7은 서로 다른 브랜치(branch)들로부터 도달하는 트랜잭션들의 예시적인 시퀀스와, 중재 정책이 트랜잭션들의 시퀀스에 적용되는 경우에 트랜잭션들의 결과 글로벌 그룹화를 나타낸다.
도 8은 서로 다른 브랜치들로부터 도달하는 트랜잭션들의 예시적인 시퀀스와, 중재 록킹(locking) 인자를 가지는 중재 정책이 트랜잭션들의 시퀀스에 적용되는 경우에 트랜잭션들의 결과 글로벌 그룹화를 나타낸다.
도 9a 및 도 9b는 중재 제어기로 트랜잭션들을 제공하는 기능 블럭들의 두 개의 서로 다른 토폴로지들에 대한 블럭 다이어그램을 나타내며, 상기 토폴로지들 모두는 공유된 자원들에 의해 서비스되는 트랜잭션들의 그룹들을 형성하는 경우에 출력을 통해 실질적으로 동일한 통계적 결과를 수신한다.
도 10은 동일한 기능 블럭으로부터 세 개의 서로 다른 쓰레드 큐들(queues)을 수신하는 중재 제어기의 실시예와 함께 멀티 쓰레딩된 링크의 블럭 다이어그램을 나타낸다.
도 11은 다양한 브랜치들로부터 보다는 다양한 쓰레드들로부터의 트랜잭션들의 예시적인 시퀀스와, 중재 정책이 트랜잭션들의 시퀀스에 적용되는 경우에 트랜잭션들의 결과 글로벌 그룹화를 나타낸다.
도 12는 브랜치 0을 통한 제 1 기능 블럭과 브랜치 1을 통한 제 2 기능 블럭으로부터 멀티 쓰레딩된 트랜잭션들을, 자신의 입력을 통해 수신하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 13은 다양한 기능 블럭들 내에 있는 쓰레드들로부터의 다양한 트랜잭션들의 예시적인 시퀀스와, 중재 정책이 트랜잭션들의 시퀀스에 적용되는 경우에 트랜잭션들의 결과 글로벌 그룹화를 나타낸다.
도 14는 서비스 품질 우선순위 레벨을 표시하는 중재 정책의 실시예에 있는 테이블을 나타낸다.
도 15는 중재 로직을 가진 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 16은 쓰레드 중재 로직의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 17은 브랜치 중재 로직의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 18a는 기본 중재 로직의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 18b는 제 1 브랜치를 상태 레지스터에 저장된 다른 브랜치들과 비교하는 서비스의 로우 및 컬럼 쌍 히스토리에 대한 실시예의 테이블을 나타낸다.
도 19는 멀티-쓰레드, 록, 우선 순위 및 서비스-품질 특성들을 가지는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
본 발명이 다양한 변형들 및 대안적인 형태들을 가지는 반면에, 특정 실시예들은 도면들에 있는 예들을 통해 도시되었으며 여기서 보다 상세하게 설명될 것이다. 본 발명은 개시된 특정 형태들로 제한되지 않으며, 본 발명의 의도는 본 발명의 범위 내에서 모든 변형들, 등가물들 및 대안들을 포함한다는 것을 이해해야 할 것이다.
다음의 설명에서, 본 발명에 대하여 충분하게 이해할 수 있도록, 다수의 특정한 세부 사항들은 특정한 데이터 신호들, 명명된 컴포넌트들, 접속들, 중재 로직을 구성하는 로직 회로들의 개수 및 타입, 브랜치들의 개수 및/또는 각각의 브랜치에 있는 상이한 개수의 쓰레드들 등에 대한 예시들을 통해 설명된다. 그러나, 본 발명이 상기 특정한 세부 사항들 없이도 실시될 수 있다는 것은 당업자에게 명백하다. 다른 예들에서, 본 발명을 불필요하게 불명료하게 만드는 것을 피하기 위해, 공지된 컴포넌트들 및 방법들은 블럭 다이어그램에서 세부적으로 설명하지 않았다. 따라서, 설명된 특정한 세부 사항들은 단지 예시적이다. 특정한 세부 사항들은 본 발명의 범위 내에서 변형되거나 고려될 수 있다.
일반적으로, 중재 메커니즘이 공유된 상호접속 링크 또는 공유된 타겟과 같은 공유된 자원으로의 액세스를 위해 여러 개의 후보들 중에서 중재하는 다양한 방법들 및 장치들이 설명된다. 중재 메커니즘은 중재 포인트들의 물리적 배분이 중재 정책 자체에 대하여 독립적으로 변화하도록 허용하기 위한 구조를 가질 수 있다. 또한, 중재 메커니즘은 서비스-품질 특성들과 멀티 쓰레딩된 링크들에 대한 지원을 포함할 수 있다. 중재 메커니즘의 중재 로직은, 중재 지연을 최소화하기 위해, 매우 빠른 로직은 제공하면서 상기 모든 특성들을 포함하도록 최적화될 수 있다.
도 1은 본 발명의 방법 및 장치가 구현될 수 있는 네트워크 환경의 실시예에 대한 블럭 다이어그램을 나타낸다. 네트워크 환경(100)은 S개의 서버들(104-1 내지 104-S)과 C개의 클라이언트들(108-1 내지 108-C)에 연결되는 네트워크(102)를 포함한다. 보다 세부적인 사항들은 아래에서 설명된다.
도 2는 컴퓨터 시스템의 실시예에 대한 블럭 다이어그램을 나타낸다. 블럭 다이어그램 형태의 컴퓨터 시스템(200)은 도 1에 도시된 임의의 클라이언트들 및/또는 서버들의 예시일 수 있다. 또한, 컴퓨터 시스템에 도시된 몇몇 기능 블럭들(202-232)은 칩 상에 구현된 시스템과 같이 단일 기판 상에 구현될 수 있다. 보다 세부적인 사항들은 아래에서 설명된다.
도 3은 다수의 기능 블럭들 사이에서 중재 정책을 구현하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다. 다수의 중재 유니트들(306)은 공유된 자원(302-304, 308-312)에 대한 액세스 요청들을 중재하기 위해 다수의 기능 블럭들(302-304, 308-312)과 연결될 수 있다. 상기 기능 블럭들(302-304, 308-312)은 회로, 버스들, 통신 링크들, 마이크로프로세서 등과 같이, 자급식(self-contained) 설계 기능을 가지는 지적 재산 코어들(IP)을 포함할 수 있다. 또한, IP는 다양한 방식으로 구현될 수 있으며, 시스템 온 칩(system on a chip)과 같이 단일의 집적 회로 상에 구현될 수 있다. 보다 세부적인 사항들은 아래에서 설명된다.
도 4는 공유된 링크를 가지는 다수의 기능 블럭들 사이에서 중재 정책을 구현하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다. 보다 세부적인 사항들은 아래에서 설명된다.
도 5는 다수의 기능 블럭들로부터 하나 이상의 트랜잭션들을 수신하는 다수의 입력들을 가지는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다. 다수의 기능 블럭들은 제 1 브랜치(502), 제 2 브랜치(504) 및 제 3 브랜치(508)와 같은 다양한 브랜치들을 통해 자신들의 트랜잭션들을 제공할 수 있다. 상기 기능 블럭들로부터의 트랜잭션들(510-514)은 제 1 트랜잭션(510), 제 2 트랜잭션(512) 및 제 3 트랜잭션(514)과 같은 상기 트랜잭션들 각각에 첨부된 에폭(epoch) 비트(516)를 포함할 수 있다. 중재 제어기(518)는 다양한 상태 레지스터들(520)을 포함하는 중재 로직을 포함할 수 있다. 상태 레지스터(520)는 브랜치에 대한 에폭 기준(per branch epoch basis)을 통해, 에폭 크레디트(epoch credit)가 특정 브랜치에 기인하는지 여부를 표시할 수 있다. 중재 제어기(518) 상류의(upstream) 필드 구성가능 컴포넌트(522)는 기능 블럭들로부터의 트랜잭션들(510-514)에 대한 표시를 첨부할 수 있다. 중재 제어기(518) 상류의 필드 구성가능 컴포넌트(522)는 에폭 비트의 설정 또는 재설정에 의해 상기 표시를 첨부할 수 있다.
중재 제어기(518)는 IP 코어들과 같은, 다수의 기능 블럭들로부터 요청들, 응답들 등과 같은, 하나 이상의 트랜잭션들(510-514)을 수신하는 다수의 입력들을 포함한다. 중재 제어기(518)는 중재 정책을 구현함으로써 다수의 기능 블럭들 사이에서 공유된 타겟 기능 블럭 또는 공유된 링크와 같은, 공유된 자원에 대한 액세스 요청들을 중재한다. 중재 정책은 다수의 기능 블럭들로부터의 트랜잭션들(510-514)을 상기 공유된 자원들에 의해 서비스하기 위한 트랜잭션들의 글로벌 그룹들로 분류한다. 중재 정책은 제 1 글로벌 그룹에 있는 모든 트랜잭션들이 다음 트랜잭션들의 글로벌 그룹에 있는 트랜잭션들이 서비스되기 전에 상기 공유된 자원에 의해 서비스되도록 유지된다.
중재 제어기(518)는 중재 정책을 용이하게 하기 위해 중재 로직을 포함할 수 있다. 중재 로직은 공유된 자원을 계층적으로 중재하는 캐스케이드형 중재 유니트들을 포함할 수 있다. 적어도 하나 이상의 중재 유니트들은 기능 블럭들의 서브세트로부터의 트랜잭션들을 중재한다. 게다가, 중재 제어기(518) 내의 입력들에 트랜잭션들을 제공하는, 기능 블럭들의 위치 및/또는 링크들의 토폴로지와 같은, 기능 블럭들의 토폴로지는 중재 유니트들의 집합에 의해 달성된 중재 정책을 독립적으로 변화시킬 수 있다.
따라서, 중재 로직은 중재 로직에 의해 중재될 트랜잭션들을 공급하는 기능 블록들의 물리적 토폴로지가 변경되더라도, 중재 로직에 포함된 임의의 중재 회로를 변경시키지 않고, 실질적으로 유사한 트랜잭션 중재 결과들의 글로벌 그룹화를 유지하는 중재 정책을 구현한다. 중재 제어기(518) 내의 입력들로 트랜잭션들(510-514)을 제공하는 중재 포인트들의 물리적 배분은, 중재 로직에 포함된 중재 정책의 애플리케이션 이후, 주어진 트랜잭션이 공유된 자원들에 의해 서비스될 트랜잭션들의 글로벌 그룹에 포함되는지 여부에 대하여 상관없이 변화할 수 있다.
이러한 예에서, 중재 제어기(518)는 세 개의 서로 다른 인입(incoming) 브랜치들(502, 504, 508)로부터 하나의 출력(524)으로의 액세스를 중재한다. 트랜잭션들의 로컬 그룹화는 각각의 사이클에서 각각의 브랜치(502, 504, 508)로부터 제공될 수 있다. 단일 브랜치(502, 504, 508)로부터 제공된 적어도 하나의 트랜잭션(510-514)이 있는 경우, 상기 트랜잭션은 중재 제어기의 출력(524)으로 전송된다. 트랜잭션들(510-514)을 가진 다수의 브랜치들(502, 504, 508)이 있는 경우, 중재 제어기(518) 내부에 있는 중재 유니트는 어떤 브랜치의 트랜잭션을 출력(524)으로 전달할 것인지를 선택한다.
중재 정책은 트랜잭션 그룹들에서 진행된다. 에폭과 같은, 트랜잭션의 로컬 그룹은 중재 제어기(518)의 상류에 있는 필드 구성가능 컴포넌트들(522)에 의해 식별되는 트랜잭션 그룹일 수 있다. 기본 원리는 중재 제어기(518)가, 임의의 브랜치로부터의 트랜잭션들의 다음 로컬 그룹으로부터의 임의의 트랜잭션들을 허용하기 전에, 각각의 브랜치로부터의 트랜잭션들의 하나의 로컬 그룹으로부터의 모든 트랜잭션들을 허용함으로써 트랜잭션들의 글로벌 그룹화를 형성하는 것이다. 이러한 방식으로, 공유된 자원에 대한 액세스의 공정성이 유지된다.
중재 제어기(518) 상류의 필드 구성가능 컴포넌트(522)는 트랜잭션들의 로컬 그룹화의 시작 및 종료 포인트들을 제어하기 위해 기능 블럭들로부터의 트랜잭션들에 대한 표시를 첨부할 수 있다. 상기 첨부된 표시는 특정 브랜치로부터의 개별적인 트랜잭션들이 주어진 트랜잭션들의 로컬 그룹에 얼마나 많이 포함될지를 제어한다. 결국, 이것은 또한 특정 브랜치로부터의 개별적인 트랜잭션들이 중재 제어기의 출력(524)을 통한 트랜잭션들의 글로벌 그룹화에 얼마나 많이 포함될지를 결정할 수 있다. 중재 제어기(518) 상류의 필드 구성가능 컴포넌트(522)는 대응하는 트랜잭션이 트랜잭션들의 새로운 로컬 그룹을 개시하는지 여부를 특정하는 비트를 통해 각각의 트랜잭션을 표시한다. 상기 비트는 에폭-시작(start-of-epoch) 비트(516)일 수 있다. 각각의 기능 블럭의 각각의 트랜잭션 그룹의, 개별적인 트랜잭션들의 개수와 같은, 크기는 상이할 수 있으나, 중재 정책은 에폭 비트가 마킹된 트랜잭션의 로컬 그룹을 단일 트랜잭션으로 취급한다. 따라서, 트랜잭션들의 로컬 그룹의 크기 및 형성된 트랜잭션들의 글로벌 그룹 결과는 중재 로직에 대한 어떠한 변화 없이도 상류로부터 제어될 수 있다.
중재 정책을 적용함으로써 중재 제어기(518)는 특한 기능 블럭으로부터 트랜잭션들의 동일한 로컬 그룹 내에 있는 트랜잭션들이 처리되도록 허용하는 반면에, 특정 기능 블럭으로부터의 트랜잭션들의 다음 로컬 그룹을 개시하는 트랜잭션들을 차단한다.
적어도 하나의 브랜치들(502, 504, 508)이 트랜잭션을 제시하고, 중재 제어기(518)로 트랜잭션들(510-514)을 제공하는 모든 브랜치들이 1) 새로운 에폭을 개시하는 에폭 비트를 이용하여 트랜잭션을 제시하거나 2) 트랜잭션을 제시하지 않으면, 중재 제어기(518)는 트랜잭션들의 글로벌 그룹 형성을 완료한다. 중재 제어기(518)는 트랜잭션들의 글로벌 그룹을 형성한후에 에폭을 롤오버(roll over)시킨다. 중재 제어기(518)는 각각의 브랜치에 대한 에폭 롤오버 상태를 추적하기 위해, 브랜치에 대한 에폭 크레디트 비트(epoch credit bit per branch)와 같은, 레지스터(520)를 사용한다. 일단 중재 제어기(518) 에폭이 롤오버되면, 트랜잭션들의 새로운 로컬 그룹을 개시하는 에폭 비트를 가진 트랜잭션들은 모든 브랜치들로부터 허용된다. 레지스터(520)는 또한 다수의 롤-오버들을 추적하기 위한 크레디트 카운터일 수 있으며, 상기 크레디트 카운터는 에폭이 롤오버되는 경우에 증가하고 에폭 비트 세트를 이용한 요청이 중재를 획득하는 경우에 감소된다.
트랜잭션이 중재 로직을 통해 처리되면, 중재 제어기(518)는 출력(524)에 있는 트랜잭션들의 결과(resultant) 글로벌 그룹에 있는 모든 트랜잭션들로부터 에폭 비트(516)를 제거한다. 중재 제어기(518)는 출력(524)으로 전송된 제 1 트랜잭션에 새로운 에폭 비트를 첨부한다.
또한, 모든 에폭 크레디트 비트들(520)은 에폭이 롤오버될 때 중재를 획득하지 않는 브랜치들(502, 504, 508)에 대하여 설정된다. 에폭 크레디트 비트(520)가 설정되면, 에폭 크레디트 비트(520)는 브랜치 상에서 인입 에폭-시작 비트(516)를 취소시키고, 상기 브랜치를 통한 트랜잭션이 트랜잭션들의 현재 글로벌 그룹에 참여하도록 허용한다. 따라서 에폭 크레디트 레지스터(520)는 중재 제어기가 에폭이 롤오버될 때 준비된 트랜잭션이 없었거나, 또는 상기 시점에서 중재를 획득하지 않았던 브랜치들에 대하여 롤오버되었던 것을 기억한다. 따라서, 에폭 크레디트 레지스터(520)는 브랜치들이(502, 504, 508) 글로벌 그룹 내에 트랜잭션을 가지고 있지 않았는지 추적하지만, 중재 제어기(518)가 롤오버되고 트랜잭션들의 글로벌 그룹의 배치를 완료하면 중재 정책마다 글로벌 그룹 내에 트랜잭션을 포함할 수 있다. 브랜치에 대한 에폭 크레디트 비트(520)는 인입 에폭-시작 비트(516)를 취소시킬 때 재설정된다.
에폭-기반 메커니즘은 출력에 대한 모든 다툼을 해결하는데 충분하지 못할 수 있으며, 이는 트랜잭션들의 동일한 글로벌 그룹의 일부인 다수의 트랜잭션들이 서로 다른 브랜치들을 통해 제출되는 것이 가능하기 때문이다. 이러한 트랜잭션들(510-514) 모두는 트랜잭션들의 글로벌 그룹의 출력(524)으로 전달하기에 적당하며, 이들의 순서가 결정되어야 한다. 이러한 이유로, 중재 제어기(518)는 브랜치들의 서비스 순서에 대하여 추적한다. 다수의 브랜치들이 트랜잭션들의 동일한 글로벌 그룹의 일부가 되도록 준비된 트랜잭션들을 포함하면, 그 후에 중재 제어기(518)는 최근 최소 서비스 브랜치가 처음에 통과하도록 허용한다. 연령에 기반한, 중재 정책의 제 2 부분은 트랜잭션들에 대한 관계(tie)를 깨뜨리며 그렇지 않을 경우 이는 중재에 대해 동일해진다.
도 6은 기능 블럭들로부터 상이한 크기를 가지는 그룹들의 트랜잭션들을 수신하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다. 각각의 기능 블럭은, 예를 들어, 네 개의 트랜잭션들을 제공한다. 중재 제어기 상류의 필드 구성가능 컴포넌트는 제 1 브랜치(602)와 관련된 기능 블럭에서 발생되는 각각의 다른 개별적인 트랜잭션(612) 상에만 에폭 비트(616)를 제공하거나 또는 첨부한다. 그러므로, 중재 제어기(618)는 제 2 브랜치(604) 또는 제 3 브랜치(608)에서 발생되는 트랜잭션들(610, 614)과 비교할 때 제 1 브랜치(602)로부터 중재 제어기(618)에 의해 형성된 트랜잭션들의 글로벌 그룹으로 두 배 많은 트랜잭션들(612)이 발생되게 한다.
이러한 예에서, 여러 개의 트랜잭션들(612, 614, 610)은 중재 제어기(618)로 입력을 제공하는 각각의 브랜치(602, 604, 608)에 대하여 대기하게 된다. 각각의 트랜잭션(610, 612, 614)은 자신만의 에폭-시작 비트(618)를 이용하여 표시될 수 있다. 제 2 및 제 3 브랜치들(604, 608)에 있는 각각의 트랜잭션(610, 614)은 에폭-시작 비트(616) 세트를 포함한다. 그러나, 단지 매 두번째 트랜잭션(610)은 제 1 브랜치(602)의 에폭-시작 비트(616) 세트를 포함한다. 그 효과는 제 1 브랜치(602)로부터의 각각의 트랜잭션들의 로컬 그룹(626, 628)이 두 개의 개별적인 트랜잭션들(612)로 구성되어 있다는 것이다. 상기 효과는 모든 브랜치들(602, 604, 608)이 트랜잭션들(610, 612, 614)을 전송하고 있는 동안은 각각의 트랜잭션들의 글로벌 그룹이 제 1 브랜치(602)로부터의 두 개의 트랜잭션들(612)과 제 2 및 제 3 브랜치(604, 608)로부터의 각각 하나의 트랜잭션(610, 614)으로 구성된다는 것이다.
에폭-시작 비트(616)의 삽입은 필드 구성가능 상류 전송 유니트에 의해 제어되며, 상기 유니트는 따라서 상대적인 트랜잭션들의 로컬 그룹의 크기를 결정한다. 이러한 방식에서, 가중된 공정한 중재가 달성될 수 있으며, 서로 다른 브랜치들로부터의 트랜잭션들은 트랜잭션들의 로컬 그룹 가중치들의 비율로 전달된다. 주어진 브랜치가 각각의 트랜잭션 그룹에서 자신의 부담 부분을 채우기 위해 충분히 빠르게 트랜잭션하지 않는 경우에, 남아있는 브랜치들은 자신들의 상대적인 트랜잭션들의 로컬 그룹 크기로 트랜잭션 그룹을 공유한다. 중재의 상대적인 가중치는 상류로부터 제어될 수 있으며, 중재 제어기에 의해 알려진 임의의 정보를 필요로 하지 않는다. 사실, 가중치는 중재 제어기에 통지해야할 필요없이 동적으로 변경될 수 있으며, 이는 중재 제어기에 있는 중재 로직이 단순히 에폭-시작 비트들의 존재에 의해 제어될 수 있기 때문이다.
도 7은 서로 다른 브랜치들로부터 도달하는 트랜잭션들의 예시적인 시퀀스와, 중재 정책이 트랜잭션들의 시퀀스에 적용되는 경우에 트랜잭션들의 결과 글로벌 그룹화를 나타낸다. 최근-최소-서비스(least-recently-serviced) 메커니즘을 이용하는 중재 정책은 각각의 트랜잭션들의 글로벌 그룹 내에서 트랜잭션들을 배열하기 이용될 수 있다. 각각의 트랜잭션은 숫자가 매겨진 문자(A1, B2 등)로 표시되며 각 트랜잭션이 에폭 마커를 가지고 있는지 여부를 나타내기 위해 점(dot)으로 표시된다.
트랜잭션들(A0, A1, A2)은 제 1 브랜치(702)로부터 발생된다. 트랜잭션들(B0, B1)은 제 2 브랜치(704)로부터 발생되고, 트랜잭션들(C0, C1)은 제 3 브랜치(708)로부터 발생된다. 중재 제어기는 제 1 타이밍 사이클(734) 동안에 자신의 입력들로서 트랜잭션들(A0 및 B0)을 감지한다. 트랜잭션(A0)은 제 1 글로벌 그룹(736)에 포함되고 B0을 통해 공유된 자원에 의해 서비스될 제 1 글로벌 그룹(736)의 제 1 트랜잭션이 되도록 선택된다. 중재 제어기는 트랜잭션(A0) 상에 새로운 에폭 비트(739)를 첨부하며, 이는 트랜잭션(A0)이 공유된 자원에 의해 서비스될 트랜잭션들의 글로벌 그룹의 제 1 트랜잭션이기 때문이다.
다음 사이클(738)에서, 중재 정책이 적용된 후에, 중재 제어기는 상기 제 1 글로벌 그룹(736)의 일부가 될 자신의 입력들을 통한 모든 트랜잭션들을 고려한다. 이러한 경우에, 트랜잭션들(A1, B0, C0)이 후보자들이다. 최근-최소-서비스 순서는 B0, C0 및 최종적으로 A1의 순서로 결정된다.
따라서, 제 2 타이밍 사이클(738)에서, 트랜잭션(B0)은 제 1 글로벌 그룹(736)에 배치된다. 출력 트랜잭션(B0)은 에폭 마커를 가지고 있지 않으며, 이는 상기 트랜잭션(B0)이 트랜잭션들의 동일한 글로벌 그룹(736)의 일부이기 때문이다. 다음으로, 트랜잭션(A1 및 C0)이 중재 제어기의 입력으로 감지된다. A 그룹 또는 브랜치 0으로부터의 트랜잭션들은 이미 제 1 글로벌 그룹(736)에 포함되어 있다. 따라서, 중재 정책은 중재 제어기의 출력을 통해 공유된 자원으로부터 서비스될 트랜잭션들의 순서에 따라 다음에 트랜잭션(CO)을 배치하기 위해 최근 최소 서비스 인자를 적용한다.
트랜잭션(A1)은 새로운 시리즈의 트랜잭션들의 시작을 표시하기 위해 트랜잭션에 첨부되는 에폭 비트 마커를 포함하지 않는다. 이것은 트랜잭션(A1)과 트랜잭션(A0) 모두가 동일한 트랜잭션들의 로컬 그룹으로부터 발생되었다는 것을 의미한다. 따라서, 트랜잭션(A1)은 이러한 트랜잭션들에 대한 중재 정책의 애플리케이션 후에 공유된 자원에 의해 서비스될 트랜잭션들의 제 1 글로벌 그룹(736)에도 포함된다. 따라서, 트랜잭션들(A0, B0, C0 및 A1)은 서비스될 트랜잭션들의 제 1 글로벌 그룹(736)에 포함된다.
이 시점에서는, 트랜잭션들의 제 1 글로벌 그룹(736)의 일부가 되기에 적당한 제어기의 입력들을 통한 이용가능한 요청들이 없다. 중재 정책들에 따라, 중재 제어기 에폭은 롤오버된다.
트랜잭션들(B1, C1 및 A2) 모두는 그들 각각이 트랜잭션들의 새로운 로컬 그룹들에 속한다는 것을 표시하기 위해 중재 제어기 상류의 필드 구성가능 컴포넌트로부터 상기 트랜잭션들에 첨부된 에폭 마커들을 포함한다. 중재 정책은 각 브랜치로부터의 새로운 로컬 그룹이 중재 제어기의 입력들을 통해 감지되면 상기 조건에서 새로운 글로벌 그룹이 형성되도록 지시한다. 최근-최소-서비스 인자를 포함하는 중재 정책의 애플리케이션에 의해, 트랜잭션(B1)은 트랜잭션들의 제 2 그룹(742)에서 서비스되는 첫번째 트랜잭션이 될 것이다. 서비스된 트랜잭션의 라인을 조사하여, 제 2 브랜치(704)로부터의 트랜잭션들은 최근-최소-서비스되었고 따라서 B1은 트랜잭션들의 다음 그룹(742)에서 서비스되는 첫번째 트랜잭션이 될 것이다. 이러한 시점에서, 브랜치 0 및 2를 위한 에폭 크레디트 비트들이 설정되고, 에폭 크레디트 비트들은 트랜잭션들(C1, A2)이 서비스 순서대로 B1의 뒤에 오도록 한다.
각각의 이러한 에폭 크레디트 비트들은 에폭 마커 세트를 가진 트랜잭션들이 중재 제어기를 통해서 허용되면 재설정된다.
도 8은 서로 다른 브랜치들로부터 도달하는 트랜잭션들의 예시적인 시퀀스와, 중재 록킹 인자를 가진 중재 정책이 트랜잭션들의 시퀀스에 적용되는 트랜잭션들의 결과 글로벌 그룹화를 나타낸다. 몇몇 경우들에서, 하나의 브랜치로부터 도달하는 한 세트의 트랜잭션들이 다른 브랜치들로부터의 트랜잭션들과 인터리빙되지 않고 함께 위치될 것이 요구된다. 예시적인 원인은 원자성(atomicity) 요구사항들 또는 상호 배제 동기화를 수행하기 위한 것이다. 중재 록킹(locking)은 트랜잭션과 함께 전달되는 추가적인 정보 비트를 이용하여 달성될 수 있다. 이러한 경우에, 주석은 중재의 (록킹에 대하여 L로 도시된) 록킹(844) 또는 (언록킹에 대하여 U로 도시된) 언록킹(846)을 표시한다. 록킹은 글로벌 그룹화 경계들을 교차해서는 안된다.
도 8은 트랜잭션들(A0, A1 및 A2)을 포함하는 제 1 브랜치(802)로부터의 동일한 트랜잭션들, 제 2 브랜치(804)로부터의 트랜잭션들(B0 및 B1) 및 제 3 브랜치(808)로부터의 트랜잭션들(C0 및 C1)을 나타내며, 동일한 트랜잭션들의 제 1 글로벌 그룹(836)이 형성되나, 공유된 자원이 이러한 트랜잭션들을 서비스하기 위해 어떻게 상기 트랜잭션들을 순차적으로 처리하고 수신하는지에 대한 시퀀스 순서가 변경된다. 중재 제어기 상류의 필드 구성가능 컴포넌트는 공유된 자원이 표시된 트랜잭션들을 순차적으로 서비스하도록 보장하기 위해 트랜잭션들(A0 및 A1)에 록킹 표시(844, 846)를 첨부한다. 따라서, 서비스될 트랜잭션들의 제 1 그룹 내의 순서는 A0에서 시작하여 그 다음에 A1, 그 다음에 순차적으로 B0, 그리고 마지막으로 C0이다.
지시된 바와 같이, 도 8에 도시된 예시적인 트랜잭션 도달 순서는 도 7에서 사용된 것과 동일하나, 이번에는 A0와 A1이 함께 록킹된다. 중재 유니트가 트랜잭션(A0)를 처리하면, 중재 로직은 그 브랜치에서 록킹되며, 따라서 트랜잭션(A1)는 중재를 획득할 다음 트랜잭션으로 보장된다. 결과적으로 트랜잭션들의 제 1 글로벌 그룹(836)에 있는 출력 시퀀스는 도 7에 도시된 A0, B0 대신에 처음 두 개의 트랜잭션들로서 A0과 A1을 가진다. 따라서, 필드 구성가능 컴포넌트는 원자성을 위한 중재 록킹을 지원한다.
또한, 중재 로직이 트랜잭션들의 제 2 글로벌 그룹(842)의 배치 동안에 어떤 브랜치가 최근 최소 서비스되었는지 결정할 때, 제 1 브랜치(802)로부터의 트랜잭션(A2)은 트랜잭션들의 다음 글로벌 그룹(842)에 배치된 첫번째 트랜잭션이다.
도 9a 및 도 9b는 중재 제어기로 트랜잭션들을 제공하는 기능 블럭들의 두 개의 서로 다른 토폴로지들에 대한 블럭 다이어그램을 나타내며, 상기 토폴로지들 모두는 공유된 자원들에 의해 서비스되는 트랜잭션들의 그룹들을 형성하는 경우에 출력을 통해 실질적으로 동일한 통계적 결과를 수신한다. 도 9a는 계층적으로 캐스케이드형 제 1, 제 2 및 제 3 중재 유니트들(950a-954a)을 나타낸다. 도 9b는 또한 캐스케이드형 방식으로 계층적으로 배치된 제 1, 제 2 및 제 3 중재 유니트들(950b-954b)을 나타낸다. 각각의 중재 유니트는 공유된 자원에 대하여 계층적으로 중재하고 기능 블럭들로부터 트랜잭션들의 서브세트를 수신할 것이다. 그러나, 도 9a 및 도 9b가 도시하는 바와 같이, 입력들에 대한 트랜잭션들을 중재 제어기로 제공하는 기능 블럭들(902a-908a, 902b-908b)의 토폴로지는 중재 유니트들(905b-954b, 950a-954a)의 집합에 의해 달성된 중재 정책에 대하여 독립적으로 변화할 수 있다. 도 9a에 도시된 바와 같이, 중재 유니트들(950a-954a)은 집합적으로 기능 블럭들(902a-908a)로부터의 다수의 인입 브랜치들 사이에서 중재를 수행하는 중재 제어 트리를 형성하기 위해 직렬 접속될 수 있다. 도 9b에 도시된 바와 같이, 중재 유니트들(950b-954b)은 집합적으로 기능 블럭들(902b-908b)로부터의 다수의 인입 브랜치들 사이에서 중재를 수행하는 중재 제어 트리를 형성하기 위해 캐스캐이드화 될 수 있다. 도시된 두 개의 트리들 각각은 네 개의 입력 브랜치들을 가지고 있다. 그러나, 도 9a에서 중재 제어기 트리는 균형적인 반면에, 도 9에서 중재 제어기 트리는 매우 불균형적이다.
두 개의 서로 다른 트리들(9a 및 9b)에 의해 형성된 트랜잭션들의 글로벌 그룹들은 그들의 구성에 있어서 동일할 것이다. 단지, 그룹 내의 트랜잭션들의 순서가 변할 수 있다. 따라서, 달성된 중재 결과는 중재 유니트들(950b-954b, 950a-954a) 또는 기능 블럭(902a-908a, 902b-908b)의 물리적 토폴로지가 무엇이든지 실질적으로 동일하다. 예를 들어, 도 9a에 도시된 바와 같이, 에폭 비트가 기능 블럭들(902a-908a)의 블럭들에서 매 n번째 트랜잭션에 첨부된다면, 그 후에 제 3 중재 유니트(954a)의 출력에서 각각의 글로벌 그룹은 각각의 브랜치로부터 n개의 트랜잭션들을 포함한다. 유사하게, 도 9b에 도시된 바와 같이, 에폭 비트가 기능 블럭들(902b-908b)의 블럭들에서 모든 트랜잭션에 첨부되면, 그 후에 제 3 중재 유니트(954b)의 출력에서 각각의 글로벌 그룹은 각각의 브랜치로부터 하나의 트랜잭션을 포함한다. 주어진 트랜잭션은 입력에 대한 상기 트랜잭션을 중재 제어기로 제공하는 기능 블럭들의 물리적 토폴로지에 독립적으로 트랜잭션들의 제 1 글로벌 그룹에 포함될 대략적으로 동일한 통계적 백분율 가능성을 가진다.
브랜치마다 하나의 새로운 에폭이 마킹된 트랜잭션을 제한하는 중재 정책은 매번 중재 유니트들의 집합에 의해 형성된 결과 글로벌 에폭이 각각의 브랜치로부터 많아야 트랜잭션들의 하나의 로컬 그룹을 포함하도록 보장한다. 각각의 브랜치로부터 취해진 개별적인 트랜잭션들의 개수에 대한 가중치는 따라서 캐스케이드형 중재 유니트들(950b-954b, 950a-954a)의 물리적 배치와 무관하다.
도 9b와 관련하여, 몇몇 실시예들에서, 제 1 및 제 2 기능 블럭(902b, 904b)로부터의 트랜잭션들은 하나의 클록 사이클 내에 제 1, 제 2 및 제 3 중재 유니트들(950b-954b)을 통해 처리된다. 제 3 기능 블럭(906b)으로부터의 트랜잭션들은 상기 하나의 클록 사이클 내에 제 2 및 제 3 중재 유니트들(952b, 954b)을 통해 처리된다. 또한, 제 4 기능 블럭(908b)으로부터의 트랜잭션들은 상기 하나의 클록 사이클 내에 제 3 중재 유니트(954b)를 통해 처리된다. 따라서, 중재 제어기로부터 들어오는 공유된 자원에 의해 서비스될 트랜잭션들의 제 1 글로벌 그룹은 각각의 기능 블럭으로부터의 하나의 트랜잭션들의 로컬 그룹을 포함할 것이다. 이러한 트랜잭션들의 글로벌 그룹 내에서 트랜잭션들의 순차적인 순서는 도 9의 순서와 다를 수 있으나, 동일한 트랜잭션들이 제 3 중재 유니트(954b)의 출력을 통해 형성된 트랜잭션들의 글로벌 그룹 내에 포함될 것이다.
몇몇 실시예들에서, 제 1, 제 2 및 제 3 기능 블럭들(902b, 904b, 906b)은 하나의 클록 사이클 내에 제 1, 제 2 및 제 3 중재 유니트들(950b-954b)을 통해 처리되지 않을 수 있다. 예를 들어, 중재 제어기 네트워크를 파이프라이닝하기 위해 중재 유니트들(950b-954b) 사이에 레지스터 포인트들이 있을 수 있다. 그러나, 레지스터 포인트들의 존재는 실질적으로 전체적인 중재 특성들에 영향을 주지 않을 것이다. 예를 들어, 트랜잭션들의 제 1 형성된 글로벌 그룹은 이러한 시간 지연으로 인해 각각의 기능 블럭으로부터의 완전한 트랜잭션들의 로컬 그룹을 포함하지 않을 수 있다. 제 3 중재 유니트(954b)는 중재 정책을 구현할 수 있으며, 중재 제어기로 트랜잭션들을 제공하는 모든 브랜치들이 이러한 시간 주기에서 트랜잭션을 전달하지 않을 것이고, 그 후에 중재 제어기가 트랜잭션들의 초기 글로벌 그룹의 배치를 완료하도록 결정할 수 있다. 그러나, 에폭 크레디트 비트는 기능 블럭으로부터의 트랜잭션들의 로컬 그룹이 트랜잭션들의 제 1 형성된 글로벌 그룹에 포함될 수 있었다는 것을 나타내도록 설정될 것이다. 중재 제어기는 그 후에 트랜잭션들의 제 2 글로벌 그룹의 배치를 통해 이것에 대하여 중재할 수 있다. 온-칩(on-chip) 네트워크들의 토폴로지는 종종 서로 통신하는 서로 다른 기능 블럭들의 물리적 레이아웃과 관련되어야 하기 때문에, 이것은 중요한 문제이다. 중재 제어기들의 물리적 배분, 접속성 및 파이프라이닝과 관계없이 통계적으로 네트워크의 중재 특성들을 일정하게 유지하는 것이 바람직하다.
따라서, 시스템의 개시 단계에서, 도 9b의 트랜잭션들의 초기 글로벌 그룹에 있는 서로 다른 기능 블럭들로부터의 트랜잭션들의 구성은 도 9a의 트랜잭션들의 초기 글로벌 그룹과 상이할 수 있다. 그러나, 도 9b의 트랜잭션들의 다음 글로벌 그룹에 있는 트랜잭션들의 구성은 도 9a의 트랜잭션들의 다음 글로벌 그룹과 매칭되어야 한다. 중재를 수행하는 중재 유니트들의 토폴로지와 파이프라이닝이 변경되더라도, 중재 정책을 적용하는 중재 로직은 변경되지 않는다.
도 4는 멀티 쓰레딩된 링크들을 사용하는 온-칩 네트워크를 나타낸다. 지금까지, 논의된 브랜치들 및 출력 링크들 각각은 단일-쓰레딩된 링크 관계에서 이루어졌으며, 이들이 도 3에 도시된 바와 같이 특정한 물리적 링크를 통해 단일 논리적 접속을 가질 수 있다는 것을 의미한다. 다양한 기능 블럭들(402, 404, 408, 410, 414)은 하나의 공유된 물리적 링크(405)를 통해 하나 이상의 논리 접속을 가지도록 하기 위해 멀티 쓰레딩된 링크를 사용할 수 있다. 예를 들어, 프로세서(404)는 동일한 공유된 링크(405)를 통해 RAM(408)으로 연결되는 제 1 논리 쓰레드 접속, 그래픽 엔진(414)으로 연결되는 제 2 논리 쓰레드 접속 및 로직(410)으로 연결되는 제 3 논리 쓰레드 접속을 가질 수 있다. 중재 제어기(406)는 각각의 논리 접속이 독립적인 흐름-제어를 가지도록 보장한다.
도 10은 동일한 기능 블럭으로부터 세 개의 서로 다른 쓰레드 큐들(queues)을 수신하는 중재 제어기의 실시예와 함께 멀티 쓰레딩된 링크의 블럭 다이어그램을 나타낸다. 중재 제어기(1018)는 예를 들어, 공유된 링크가 존재하면, 많은 쓰레드 큐들(1060-1064)을 수신할 수 있다. 따라서, 다수의 논리 접속들은 중재 제어기(1018)와 공유된 링크를 통해 타겟 기능 블럭들에 대한 하나의 물리적 접속으로 이루어진다. 중재 제어기(1018)는 트랜잭션(1012)과 쓰레드 ID(1066)를 출력할 수 있다. 중재 제어기(1018)는 수신기와 같은 중재 제어기(1018)의 하류의 컴포넌트로부터, 특정한 공유된 타겟에 의해 서비스되는 중재 로직 트랜잭션들을 필터링하기 위한 통신을 수신할 수 있다. 상기 공유된 타겟이 사용중(busy)이기 때문에 상기 트랜잭션들은 중재 프로세스로부터 필터링 될 것이다. 따라서, 쓰레드 비지 신호(1070)는 서비스될 수 없는 쓰레드를 중재 프로세스로부터 제거하는 흐름 제어를 위해 중재 제어기(1068)의 하류의 컴포넌트에 의해 중재 제어기(1018)로 전송된다.
흐름 제어는 쓰레드 비지 신호(1070)와 같은 쓰레드에 대한 비트 벡터 신호를 통해 적용된다. 링크를 통한 쓰레드 X에 대응하는 쓰레드 비지 비트를 설정하는 것은 쓰레드 X를 위해 허용될 수 있는 추가적인 트랜잭션들이 없다는 것을 의미한다. 쓰레드 비지 정보는 링크를 사용하도록 준비된 논리 접속들 사이에서 물리 링크에 대한 액세스를 중재하기 위해 전송 유니트에 의해 이용된다. 필드 구성가능 하류(downstream) 컴포넌트(1068)는 쓰레드들에 대한 흐름 제어 메커니즘으로서 쓰레드 비지 신호들을 제공할 수 있다.
중재 제어기(1018)는 브랜치 중재 로직 및 쓰레드 중재 로직을 포함하는 중재 로직을 포함할 수 있다. 중재 로직은 중재 프로세스로부터 서비스될 수 없는 쓰레드를 필터링한다. 중재 정책은 쓰레드 중재 로직을 통해 멀티 쓰레딩된 링크 인자에 기반하여 기능 블럭들로부터의 트랜잭션들에 가중치를 부가한다. 중재 로직은 각각의 브랜치로부터의 획득(winning) 쓰레드를 결정하기 위해 중재 정책을 적용한다. 글로벌 그룹화에서 다음에 포함될 획득 쓰레드가 결정되면, 상기 트랜잭션은 쓰레드 ID 신호(1066)를 통해 자신이 속하는 쓰레드를 표시하고 공유된 링크를 통해 전달된다.
도 11은 다양한 브랜치들로부터 보다는 다양한 쓰레드들로부터의 트랜잭션들의 예시적인 시퀀스와, 중재 정책이 트랜잭션들의 시퀀스에 적용되는 경우에 트랜잭션들의 결과 글로벌 그룹화를 나타낸다. 트랜잭션들(A0, A1 및 A2)은 기능 블럭으로부터 쓰레드-0(1102)으로 인입되며, 쓰레드-1(1104)은 동일한 기능 블럭으로부터 발생되고 트랜잭션들(B0 및 B1)을 전송할 수 있으며, 트랜잭션들(C0 및 C1)은 동일한 기능 블럭으로부터 쓰레드-2(1106)로 발생된다. 도 11은 도 10에 도시된 바와 같이 전송자의 쓰레드 중재를 위한 예시적인 트랜잭션들의 시퀀스를 나타낸다. 각각의 쓰레드를 통한 트랜잭션들의 도달 시퀀스는 도 7에 도시된 예에서 브랜치들을 통한 트랜잭션들의 도달 시퀀스와 동일하다. 쓰레드-0(1102) 내지 쓰레드-1(1106)은 모두 동일한 기능 블럭으로부터 발생될 필요가 없다는 것을 유의하도록 한다.
중재 정책이 트랜잭션들에 적용된 후에, 제 1 시간 주기(1134)에서, 트랜잭션들(A0, B0)은 공유된 링크에 의해 서비스될 트랜잭션들의 제 1 글로벌 그룹(1136)으로 배치된다. 중재 정책의 다음 시간 주기(1138)는 글로벌 그룹(1136)에 트랜잭션(A1 또는 C0)을 배치할 것인지 여부를 결정하며, 쓰레드-2(1106)로부터의 트랜잭션들은 최근 최소 서비스되었었기 때문에, 트랜잭션(C0)은 트랜잭션(A1)에 앞서서 그룹에 배치된다. 트랜잭션들(A0, B0, C0 및 A1)은 공유된 링크를 통해 서비스될 트랜잭션들의 제 1 글로벌 그룹(1136)을 형성한다. 단지 트랜잭션들(A0, A1)은 실제적으로 제 1 타겟 자원에 의해 서비스될 것이며, 트랜잭션(B0)은 제 2 타겟 자원에 의해 서비스될 것이며, 트랜잭션(C0)은 제 3 타겟 자원에 의해 서비스될 것이라는 것을 유의하도록 한다. 그러나, 모든 세 개의 타겟 자원들은 동일한 공유 링크를 사용한다. 또한, 몇몇 실시예들에서, 서로 다른 개수의 쓰레드들이 하나의 멀티 쓰레딩된 타겟 자원에 서비스될 수 있다.
상기 도면의 아래쪽에 도시된 트랜잭션들의 그룹화는 글로벌 중재 그룹화(1136) 뿐만 아니라 글로벌 중재 그룹 내에 형성된 쓰레드 당 그룹화(1137)를 반영한다.
트랜잭션들(B1, C1 및 A2)은 중재 제어기의 출력을 통해 형성된 트랜잭션들의 제 2 그룹(1142)에 있다. 이러한 트랜잭션들 각각은 자신에 첨부된 에폭 비트 마커를 포함한다. 중재 로직은 모든 세 개의 쓰레드들이 펜딩된(pending) 새로운 트랜잭션 세트를 가지며 따라서 공유 링크를 통해 서비스될 트랜잭션들의 제 2 글로벌 그룹을 형성하는 것을 인지한다.
쓰레드 중재를 위한 중재 메커니즘은 도 5에 도시된 바와 같이 브랜치 중재를 위해 사용되는 메커니즘과 매우 유사할 수 있다. 쓰레드 중재 로직과 브랜치 중재 로직의 차이점은 브랜치 중재가 새로운 에폭들을 형성하고, 따라서 중재 제어기 에폭이 롤오버되면 에폭 마커가 출력 트랜잭션에 배치되는 반면에, 쓰레드 중재는 실질적으로 항상 각각의 쓰레드로부터의 에폭 마커들을 유지한다는 것이다.
쓰레드 중재의 결과는 서로 다른 쓰레드들을 통한 트랜잭션들이 업스트림 전송 유니트들에 의해 제공된 트랜잭션들의 로컬 그룹의 크기들의 비로 인터리빙된다는 것이다. 도 11의 예시에서, 쓰레드-0(1102)은 두 개의 로컬 트랜잭션 그룹 크기(A0 및 A1)를 가지는 반면에, 쓰레드 1 및 2는 하나의 로컬 트랜잭션 그룹 크기를 가진다. 모든 쓰레드들이 전송할 준비가 된 트랜잭션들을 가지고 있고 하류로부터의 임의의 흐름 제어가 존재하지 않는 경우에, 쓰레드-0(1102)으로부터의 두 개의 트랜잭션들은 쓰레드 1 및 2(1104, 1106)로부터의 각각 하나의 트랜잭션을 위해 전달될 것이다.
도 12는 제 1 브랜치를 통한 제 1 기능 블럭과 제 2 브랜치를 통한 제 2 기능 블럭으로부터 멀티 쓰레딩된 트랜잭션들을, 자신의 입력을 통해 수신하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다. 중재 제어기(1218)의 중재 로직은 쓰레드 중재 로직뿐만 아니라 브랜치 중재 로직을 포함할 수 있다.
트랜잭션들을 중재 제어기(1218)로 제공하는 두 개의 브랜치들(1202, 1204) 각각은, 예를 들어, 세 개의 쓰레드들을 포함할 수 있다. 브랜치들(1202, 1204)은 준비된 요청과 대응하는 에폭 마커들을 포함하는 쓰레드들의 비트-벡터를 중재 제어기(1218)로 전달한다. 중재 제어기(1218) 내에 있는 하나 이상의 중재 유니트들은 상기 정보를 취하며, 브랜치(1202, 1204)가 트랜잭션을 전송하도록 허용되는 쓰레드를 결정하기 위해 쓰레드 중재 및 브랜치 중재 모두를 수행한다. 상기 결정은 쓰레드 선택 벡터(1261)를 통해 브랜치들로 전송될 수 있다. 적어도 하나의 트랜잭션이 준비될 때마다, 하나의 브랜치는 대응하는 쓰레드로부터 트랜잭션을 전송하도록 허용하는, 자신의 쓰레드 선택 벡터에 설정된 하나의 비트를 가지는 반면에, 다른 브랜치는 설정된 비트를 가지지 않는 쓰레드 선택 벡터를 수신하며, 따라서 상기 다른 브랜치는 임의의 트랜잭션을 전송하지 않는다. 중재 제어기(1218)는 또한 쓰레드 비지 신호(1270), 및 쓰레드 감소(demote) 신호(1271)와 같은 쓰레드 우선 순위 제어 신호의 형태로 하류 흐름 제어를 고려한다. 중재 제어기의 하류의 컴포넌트는 동적으로 인입 트랜잭션에 할당된 우선 순위를 낮추기 위해 중재 제어기(1218)의 중재 로직과 통신할 수 있다. 하류 컴포넌트는 각각의 쓰레드들로 쓰레드 감소 신호들(1271)을 제공할 수 있다.
도 13은 다양한 기능 블럭들 내에 있는 쓰레드들로부터의 다양한 트랜잭션들의 예시적인 시퀀스와, 중재 정책이 트랙잭션들의 시퀀스에 적용되는 경우에 트랜잭션들의 결과 글로벌 그룹화를 나타낸다. 브랜치 0을 통한 제 1 기능 블럭은 트랜잭션들에 대한 세 개의 서로 다른 쓰레드들(쓰레드 0 내지 쓰레드 2)을 중재 제어기의 입력들로 제공할 수 있다. 제 1 쓰레드(1302)에서, 쓰레드 0은 트랜잭션들(A0, A1 및 A2)을 포함할 수 있다. 제 2 쓰레드(1304)인 쓰레드 1은 트랜잭션들(B0 및 B1)을 포함할 수 있다. 제 3 쓰레드(1306)는 트랜잭션들(C0, C1 및 C2)을 포함할 수 있다. 제 2 기능 블럭은 또한 브랜치 1을 통해 다양한 트랜잭션들을 가진 다양한 쓰레드들을 제공할 수 있다. 제 1 쓰레드(1302)는 또한 브랜치 0으로부터 다시 수신된 트랜잭션들(A10, A11 및 A12)을 포함할 수 있다. 제 2 쓰레드(1304)는 또한 브랜치 1로부터 다시 수신된 트랜잭션들(B10 및 B11)을 포함할 수 있다. 제 3 쓰레드(1306)는 또한 브랜치 1로부터 다시 수신된 트랜잭션들(C10, C11 및 C12)을 포함할 수 있다. 트랜잭션들의 글로벌 그룹에 있는 중재 제어기로부터의 결과 출력 그룹은 트랜잭션들(A0, B0, C0, A10, B10, C10, A01, A11 및 C11)을 포함할 수 있다. 트랜잭션(C11) 이후에, 다음 시간 사이클에서, 다양한 기능 블럭들의 모든 쓰레드들로부터의 모든 입력들을 통해, 이들 모두는 새로운 에폭 마커를 표시하며, 상기 에폭 마커는 중재 로직이 공유된 자원으로부터 서비스될 트랜잭션들의 제 2 글로벌 그룹의 형성을 시작하도록 한다.
중재 제어기는 브랜치 중재 및 쓰레드 중재의 결합을 통해 예시적인 트랜잭션들을 처리한다. 도 11과 유사하게, 트랜잭션들은 쓰레드 순서대로 트랜잭션들의 글로벌 그룹 내에서 서비스되며, 각각의 쓰레드 내에서 브랜치 순서대로 서비스된다. 각각의 쓰레드(1302-1306)에 대한 트랜잭션들의 브랜치 그룹과 모든 쓰레드들에 대한 트랜잭션들의 쓰레드 그룹이 있을 수 있다. 도 11에 도시된 바와 같이, 쓰레드 에폭이 롤오버되면, 각각의 쓰레드로부터의 제 1 트랜잭션은 에폭 마커를 포함한다. 모든 브랜치 상에 있는 모든 쓰레드들(1302-1306)이 새로운 트랜잭션들의 글로벌 그룹을 시작할 준비가 될 때까지 다음 트랜잭션들이 전달된다. 에폭이 롤오버되면 쓰레드 크레디트 비트들은 도 5의 기본 중재 제어기에 대하여 설명되었던 것과 유사한 방식으로 유지된다.
도 14는 0부터 2까지의 범위에 있는 서비스 품질 우선순위 레벨과 0부터 3까지의 범위에 있는 쓰레드들을 보여주며, 서비스-품질 우선순위 레벨과 각각의 쓰레드의 연관을 보여주는 중재 정책의 실시예에 있는 테이블을 나타낸다. 중재 정책은 서비스 품질 인자에 기반하여 기능 블럭들로부터의 트랜잭션들에 가중치를 부가할 수 있다.
도 14a는 서로 다른 쓰레드들에 대하여 존재할 수 있는 서로 다른 서비스-품질(QoS) 우선순위 레벨들을 나타낸다. 네 개의 쓰레드들(1409) 각각은 세 개의 QoS 우선순위 레벨들(1407) 중 하나로 할당된다. 레벨-2(1411)는 가장 높은 우선순위를 가지며 레벨-0은 가장 낮은 우선순위를 가진다.
서비스-품질(QoS)은 여기서 주어진 전송 기능 블럭이 공유된 자원에 대하여 중재하는 경우에 얻게 되는 지연 및 대역폭 특성들을 설명하기 위해 이용될 수 있다. 보다 높은 QoS 우선순위 레벨들은 보다 낮은 지연과 보다 낮은-지터(jitter) 대역폭 서비스에 대응한다.
더 높은 QoS 우선순위 레벨(1407)에서 쓰레드들(1409)로부터 제공되는 트랜잭션들은 항상 더 낮은 QoS 우선순위 레벨(1407)에서 쓰레드들(1409)로부터 제공되는 트랜잭션들을 능가하여 획득한다. 주어진 QoS 우선순위 레벨(1407) 내에서, 에폭-기반의 중재는 트랜잭션들의 상대적인 가중치를 결정한다. 중재 제어기의 하류의 컴포넌트는 또한 쓰레드감소 비트 벡터를 사용하여 아랫 방향으로부터 QoS 우선순위 레벨을 동적으로 제어할 수 있다. 예를 들어, 쓰레드-0(1415)에 대한 쓰레드감소 비트는 쓰레드-0(1415)이 최저 QoS 우선순위 레벨로 감소되도록 세팅된다. 현재 쓰레드-3(1417)와 동등하고 쓰레드-2(1421) 및 쓰레드-1(1419) 아래인 것으로 고려될 수 있다. 상기 동적 쓰레드 감소는 쓰레드가 사용하는 대역폭량 대 할당된 대역폭량과 같은 시스템 조건들에 따라 동적으로 쓰레드에 제공되는 서비스의 품질을 가변하는데 사용할 수 있다.
요약 하면, 트랜잭션은 먼저 현재의 쓰레드 QoS 우선순위 레벨에 의해 순서가 결정된다. QoS 레벨내에서, 트랜잭션들은 트랜잭션-기반의 방식의 그룹을 사용하여 서비스되고, 각각의 트랜잭션 그룹내에서, 트랜잭션들은 최근-최소-서비스(least-recently-serviced) 메커니즘을 사용하여 순서가 결정된다. 처음부터 중재 제어기는 쓰레드 흐름 제어를 고려하기 위한 중재 정책(쓰레 드비지를 통한), QoS 우선순위 레벨의 동적 할당(쓰레드 감소를 통한), 및 원자수/록킹(록 비트를 통한)을 실행한다. 그러나, 모든 중재 제어기들이 상기와 같은 모든 기능들을 가져야 하는 것은 아니다. 중재 제어기는 상기 기능들의 서브세트를 사용할 수 있다. 상응하는 메커니즘을 제거함으로써 기능의 서브세트만을 가지는 중재 제어기들을 만들 수 있다.
도 15는 중재 로직을 가지는 중재 제어기의 일 실시예의 블럭 다이어그램을 도시한다. 중재 로직(1520)을 갖는 중재 제어기(1518)의 일 실시예는 쓰레드비지(thread busy), 록(lock), 및 QoS 필터(1580), 다수의 브랜치 중재 로직 블럭들(1582), 쓰레드 중재 로직 블럭(1584), 및 AND 박스(1586)를 가질 수 있다.
기능 블럭들로부터 제공되는 트랜잭션들은 제 1 브랜치(1502) 또는 제 2 브랜치(1504)를 통해 입력될 수 있다. 입력되는 유효 비트들 및 각각의 브랜치로부터의 에폭 마커들은 쓰레드 비지, 록, 및 QoS 필터(1580)에서 필터링된다. QoS, 쓰레드감소, 쓰레드비지, 및 록킹은 모두 로직 블럭의 상부 필터(1580)내에서 처리된다. 중재 제어기의 하류의 컴포넌트로부터 통신을 수신하는 쓰레드비지는 현재 시간에 사용중인 공유된 자원 쪽으로 진행되는 트랜잭션들을 필터링 할 수 있다. 록킹은 트랜잭션들에 추가되는 표시들에 기초하며, 필터 로직(1580) 내에서 실행된다.
쓰레드비지, 록, 및 QoS 필터(1580)는 쓰레드 흐름 제어가 적용되거나(쓰레드비지), 현재 쓰레드로 록킹되는 브랜치들로부터 제공되지 않거나, 더 높은 레벨로부터의 트랜잭션들이 제공될 때 더 낮은 QoS 우선순위 레벨로부터 제공되는 트랜잭션들을 필터링한다. 그 결과 필터링된 정보는 브랜치 중재 유니트(1582)로 통과된다.
다양한 브랜치들로부터의 트랜잭션들은 브랜치 중재 로직(1582)을 통해 처리된다. 쓰레드 당 하나의 브랜치 중재 유니트(1582)가 제공된다. 이는 쓰레드로부터의 모든 트랜잭션들을 처리하고, 그 결과 유효한 에폭 마커를 쓰레드 중재 유니트(1584)에 제공한다. 브랜치 중재 로직(1582)은 최근-최소-서비스 및 트랜잭션 그룹화 메커니즘에 기초하여 어떤 브랜치가 중재를 획득해야 하는지를 결정하며, 브랜치에 대한 AND 박스(1586)로 입력을 전송한다.
기능 블럭들로부터의 쓰레드들은 쓰레드 중재 로직(1584)을 통해 처리된다. 쓰레드 중재 로직 유니트(1584)는 모든 브랜치들로부터 전체 획득(winning) 쓰레드를 결정한다. 획득 쓰레드는 AND 박스(1586)를 통해 전송된다. AND 박스(1586)는 전체 위너(winner)들에게 제공하기 위해 획득 쓰레드 정보를 쓰레드 정보에 대한 획득 브랜치와 조합한다. 따라서, AND 박스(1586)는 어떤 브랜치로부터의 쓰레드가 특정 중재를 획득하는지를 결정하고 제 1 글로벌 그룹으로 입력된다. 트랜잭션의 중재 프로세스가 계속됨에 따라, 최근 최소 서비스 인자, 서비스 품질 및 록킹 인자들은 모두 주시 된다. 결국, 공유된 자원에 의해 서비스될 제 1 트랜잭션들의 글로벌 그룹이 형성된다.
따라서, 쓰레드 중재 유니트는 획득 쓰레드를 결정하는 반면, 동시에 각각의 브랜치 중재 유니트는, 그의 쓰레드가 위너인 경우, 획득 브랜치를 계산한다. 최종 위너는 AND 박스 내에서 쓰레드 중재 위너와 브랜치 중재 위너를 AND 연산함으로써 선택되며, 브랜치에 대한 쓰레드 선택 벡터를 생성한다.
이는 가능한 구현이며, 많은 다른 구현들이 가능함에 유의하자.
도 16는 쓰레드 중재 로직의 일 실시예의 블럭 다이어그램을 도시한다. 쓰레드 중재 로직(1684)은 에폭 롤-오버를 사용하는 제 1 중재 블럭(1685) 및 에폭 롤-오버를 사용하지 않는 제 2 중재 블럭(1686)을 가질 수 있다. 하나의 블럭은 에폭 롤-오버를 사용하지 않는 위너를 결정하는데 사용되고, 또다른 블럭은 에폭 롤-오버를 사용하는 위너를 결정하는데 사용된다. 만약, 에폭 롤-오버를 사용하지 않는 어떠한 위너도 존재하지 않으면, 에폭 롤-오버로부터의 결과치가 사용된다. 기본 중재 블럭은 쓰레드들의 서비스 순서의 히스토리가 주어질 때 다수의 쓰레드 요청들 중 어느 요청이 위너가 되어야 하는지를 결정하는데 관심을 갖는다. 가능한 기본 중재 블럭의 예시적인 구현은 도 18a 및 도 18b에 도시된다.
도 16을 참조하여, 각각의 쓰레드는 상기 로직에 두 개의 입력들을 제공할 수 있다. 유효(valid) 입력은 트랜잭션이 존재한다는 것을 의미하며, 에폭 입력은 에폭 입력은 에폭 비트의 시작이 트랜잭션에 추가되는지의 여부를 표시한다. 유효 입력은 에폭 롤-오버 로직(1685) 및 출력 유효 비트 OR 게이트(1689)에 중재를 직접 연결한다. 각각의 쓰레드는 Not-Or 게이트(1688)로 진행하고, 그후에 AND 게이트(1689)로 진행하여 롤-오버 로직을 사용하지 않는 중재(1686)에서 처리된다.
논리적인 요소는 1)유효 비트가 세팅되는 경우 및 2) a)에폭 비트가 제공되지 않거나 b)크레디트 비트가 세팅되는 경우에 AND 게이트들(1689) 중 하나에서 발생된다. 만약 상기와 같다면, 상기 요청은 현재의 트랜잭션들의 글로벌 그룹화에 포함될 것이다. 공유 자원에 의해 서비스될 현재의 트랜잭션들의 글로벌 그룹들로 정해지는 트랜잭션은 새로운 에폭 마커를 가질 것이다. 출력되는 에폭 마커는 단지 획득 쓰레드의 에폭 마커가 될 수 있다. 또한, 상기 그룹내의 모든 다른 트랜잭션들은 그들의 에폭 마커들을 제거하며, 따라서, 상기 전체 그룹은 서비스되거나 하류에 있는 또 다른 중재 유니트에 의해 공유 자원에 의해 서비스될 상기 현재의 트랜잭션들의 글로벌 그룹에 대한 단일의 시작 및 종료 포인트로 판단된다. 멀티쓰레드된 트랜잭션에서, 에폭 마커들이 남겨진다. 전술된 것과 같이, 로직 블럭들(1685, 1686) 모두는 위너가 공유 자원에 의해 처리될 제 1 트랜잭션 그룹으로 정해지는지를 결정하기 위한 입력을 제공한다.
도 17은 브랜치 중재 로직의 일 실시예의 블럭 다이어그램을 도시한다. 브랜치 중재 로직(1782)은 에폭 롤-오버를 사용하는 중재 블럭(1785)과 에폭 롤-오버(1786)를 사용하지 않는 중재 블럭(1786)을 가질 수 있다. 일 실시예에 대하여, 브랜치 중재 유니트는 출력 에폭 마커(에폭이 롤 오버하는 경우에 세팅되는)가 상이하게 발생된다는 점을 제외하고는 쓰레드 중재 유니트와 매우 유사할 수 있다. 따라서, 중재 정책은 브랜치 중재에 적용되는 것과 매우 유사한 방식으로 쓰레드 중재에 적용될 수 있다. 그러므로, 중재 정책은 멀티-브랜치 중재 인자를 고려하며, 이는 멀티-쓰레드 링크 인자, 최근 최소 서비스 인자, 서비스 품질 인자, 록킹 인자 뿐만 아니라 공유 자원에 의해 서비스될 트랜잭션들의 글로벌 그룹을 형성할 때의 다른 인자들이다.
도 18a는 기본 중재 로직의 일 실시예의 블럭 다이어그램을 도시한다. 기본 중재 로직(1890)은 제 1 브랜치를 다른 브랜치들과 비교하는 로우 및 컬럼 쌍의 서비스 히스토리를 저장하기 위해 상태 레지스터(1891)를 포함할 수 있다. 기본 중재 로직(1890)은 3입력 AND 게이트들과 같이 모든 브랜치들로부터 브랜치가 중재 프로세스를 획득해야함을 표시하는 신호를 수신하기 위한 하나 이상의 공통 로직 게이트들(1892)을 더 포함할 수 있다. 중재 로직은 또한 NAND 게이트들과 같이 상태 레지스터(1891)로부터 입력을 수신하고 브랜치가 중재 프로세스를 획득해야하는지를 표시하는 금지 신호를 공통 로직 게이트(1892)로 제공하는 금지(inhibit) 로직 게이트들(1893)을 더 포함할 수 있다.
기본 중재 로직(1890)은 상태 레지스터들(1891)내에 다양한 상태 비트들을 포함한다. 상기 상태 비트들의 각각은 최근 최소 서비스 트랜잭션을 결정하는 것을 지원하기 위해 요청 브랜치들 사이에서 상대적인 연령(age)을 표시하는 상태를 유지한다. 상태 레지스터들(1891) 각각은 인버터를 통해 NAND 게이트(1893)의 한쪽 입력에 접속된다. NAND 게이트(1893)의 다른쪽 입력은 유효 트랜잭션이 제공되는지 여부에 대한 입력을 수신한다. 이들 사이에서 위너가 결정된다.
도 18a는 3개의 요청자들을 가지는 예를 도시하지만, 동일한 방식이 2이상의 요청자들에게 가능하다. 이러한 구현의 타이밍은 알고리즘의 복잡성이 변경되지 않기 때문에 요청자들의 수가 증가할수록 매우 정밀하게 스케일링 된다. 이는 트랜잭션 신호들의 더 많은 팬-아웃과 최종 AND 게이트의 더 많은 팬-인을 요구한다.
도 18b은 제 1 브랜치를 상태 레지스터 내에 저장된 다른 브랜치들과 비교하는 서비스의 로우 및 컬럼 쌍 히스토리의 일 실시예에 대한 테이블을 도시한다. 상기 예에서, Br3-Br0와 같은 4개의 브랜치들은 중재 로직에 트랜잭션들을 제공한다. Br3는 가장 오래된 트랜잭션이며, 다시 말해서 최근 최소 서비스 트랜잭션을 가지는 브랜치이다. Br0는 가장 최근의 트랜잭션이며, 다시 말해서 최근 최대 서비스(most recently serviced) 트랜잭션을 가지는 브랜치이다.
기본 중재 로직(1890)은 요청자들 사이에서 상대적인 서비스 순서를 추적하며, 서비스 순서가 주어질 때 획득 요청자의 1-핫(hot) 벡터를 전송한다. 서비스 순서 상태는 요청자 트랜잭션당 하나의 로우들 및 컬럼들 내에서 배열된다. 각각의 로우/컬럼 교점(테이블 셀)에서의 상태 비트는 로우 요청자가 컬럼 요청자보다 더 최근에 서비스되었는지에 대하여 기억한다. 상기 테이블에서 하부 좌측의 3각 부분(1894)은 상부 우측의 3각 부분(1895)의 역(inverse)이며, 상기 상태 비트들은 상부 우측 3각 부분(1895)으로부터 상응하는 상태 비트의 반전된 버전을 사용하여 유도된다. 대각 부분(1896)은 비어있다. 요청자들의 비트 벡터가 수직으로 제공된다. 각각의 테이블 셀에서, 서비스 순서 비트는 또다른 활동중인 요청자보다 더 최근에 서비스된 요청자들을 억압한다. 하나의 로우내에서의 모든 테이블 셀 결과치들이 모두 AND 연산될 때, 임의의 테이블 셀 내에서 억압되지 않는 요청자가 제공되며, 임의의 테이블내에서 억압되지 않는 결과치가 존재하며, 이는 최근에 가장 적게 서비스된 요청자이다. 위너가 형성될 때, 상응하는 컬럼 및 로우에 대한 테이블 셀 상태 비트들은 상응하는 요청자를 최근 최대 서비스된 것으로 표시하도록 업데이트된다.
쓰레드비지 흐름-제어를 사용하는 다수의 쓰레드된 중재자들에서, 개별 요청들의 에이지를 추정하는 메커니즘은 동일하게 적당한 요청들간의 관계를 차단하는데 사용되어야 한다. 쓰레드비지 흐름 제어가 임의의 시간에 적용될 수 있기 때문에, 라운드-로빈(round-robin) 중재와 같은 중재 메커니즘은 실질적으로 항상 최고 우선순위의 트랜잭션이 존재할 때 그 트랜잭션에 대한 순방향 진행의 부재를 유도하여 쓰레드비지하게 적용되는 특정 쓰레드의 반복되는 패턴으로 끝난다. 최근에 가장 적게 서비스된 중재 메커니즘은 상기와 같은 문제를 해결해야 하는데, 이는 최근에 가장 적게 서비스된 요청자가 실제로 서비스될 때까지 최고 우선순위의 트랜잭션을 유지해야하기 때문이다.
도 19는 멀티-쓰레드, 록, 우선순위, 서비스 품질 특징들을 가지는 중재 제어기의 일 실시예의 블럭 다이어그램을 도시한다. 도 19의 상위 부분은 쓰레드비지, 록, 및 QoS 필터 게이트들(1980)의 가능한 구현을 더 상세히 도시한다. 동일한 쓰레드의 또다른 브랜치에서의 록 또는 상기 쓰레드에서의 쓰레드비지는 입력되는 요청을 표시한다. 유사하게, 더 높은 우선순위의 QoS 레벨들에서의 임의의 요청들은 더 낮은 QoS 우선순위에서 존재하는 쓰레드들로부터의 요청들을 마스킹한 다.
일 실시예에서, 복잡한 중재는 하기의 입력들: 유효 또는 각 브랜치로부터의 유효 벡터, 쓰레드비지 또는 쓰레드 선택, 쓰레드 감소 뿐만 아니라 이전의 중재 결정들에 따른 중재 히스토리의 조합을 포함할 수 있고, 추가의 입력 신호들:에폭 마커 및 록 중재를 포함할 수 있다. 상기 구성에 따라, 중재 제어기의 중재 유니트는 상기 입력 신호들의 서브세트만을 포함한다. 중재는 QoS 그룹에 의한, 에폭에 의한, 결과적으로는 최종 서비스 시간(에이지)에 의한 3개의 층들에서 발생한다. 요청자들 사이에서 가중된 공평성을 관리하는 에폭들의 두가지 형태가 제공된다: 브랜치 에폭들은 서로 다른 중재 제어기 입력 브랜치들로부터의 요청들에 대한 쓰레드마다 사용되고, 쓰레드 에폭들은 서로 다른 출력 쓰레드들로 맵핑하는 모든 요청들에 대하여 사용된다. 또한, 모든 출력되는 쓰레드는 출력 쓰레드가 중재를 위해 고려되도록 맵핑하는 어떤 다른 입력 브랜치도 존재하지 않는 경우에 특정 브랜치로 록킹될 수 있다. 록 중재 메커니즘은 요청 인터리빙, 원자수, 및 상호 배타적인(Ex) 실시를 고려한다.
중재 알고리즘의 일 예는 하기의 의사 코드를 사용하여 요약될 수 있다.
Figure 112005058867115-pct00001
Figure 112005058867115-pct00002
요청자가 위너이면, 하기의 중재 제어기-내부 상태는 업데이트된다:
● 서비스 순서는 상호-쓰레드와 브랜치(내부-쓰레드) 중재 모두에 대하여 업데이트된다.
● 위너가 브랜치 및 쓰레드 에폭들이 롤 오버하도록 하였다면, 상기 브랜치들 및 획득하지 못한 출력 쓰레드들에 대하여 브랜치 및 쓰레드 크레디트 비트들을 세팅한다.
● 위너가 브랜치 및 쓰레드 에폭들이 롤 오버하지 못하도록 하였지만 입력되는 요청이 에폭 비트 세트를 가지면, 브랜치 및 상기 브랜치 및/또는 쓰레드에 대한 쓰레드 크레디트 비트들을 세팅하지 않는다.
● 위너가 록 중재를 주장하였다면, 출력되는 쓰레드에 대한 중재를 록킹한다.
도 1을 다시 참조하여, 도 1은 전술될 기술들이 적용될 수 있는 네트워크 환경(100)을 도시한다. 네트워크 환경(100)은 S개의 서버들(104-1 내지 104-S) 및 C개의 클라이언트들(108-1 내지 108-C)와 접속하는 네트워크(102)를 갖는다. 도시된 것과 같이, S개의 서버들(104-1 내지 104-S) 및 C개의 클라이언트들(108-1 내지 108-C)의 형태의 몇몇의 시스템들은 예를 들면, 온-칩 통신 네트워크가 될 수 있는 네트워크(102)를 통해 서로 접속된다. 선택적으로 네트워크(102)는 칩간 통신들, 광학 네트워크, 인터넷, 근거리 네트워크(LAN), 광대역 네트워크(WAN), 위성 링크, 화이버(fiber) 네트워크, 케이블 네트워크, 또는 상기 네트워크들 및/또는 다른 네트워크들의 조합이 되거나, 이들중 하나 이상을 포함할 수 있다. 서버들은 예를 들어, 칩상의 마스터 디바이스, 메모리, 마이크로프로세서와 같이 지적 특성을 갖는 코어, 통신 인터페이스 등, 디스크 저장 시스템, 및/또는 계산 자원들을 나타낼 수 있다. 유사하게, 클라이언트들은 계산, 저장 및 관찰 능력들을 가질 수 있다. 여기에 설명된 방법 및 장치는 LAN, WAN, 시스템 버스, 온-칩 버스 등과 같은 로컬 또는 원격의 통신 수단들 또는 디바이스의 임의의 형태들에 적용될 수 있다. 또한, 용어 클라이언트 및 서버의 사용은 통신을 초기화하는 측(클라이언트) 및 이에 응답하는 측(서버)을 명백히 특정하는 것으로 인식될 것이다. 명백하게 언급되지 않으면 어떠한 분류도 의미되지 않는다. 모든 기능들은 클라이언트-서버 및 서버-클라이언트 관계가 동등한 것으로 간주되는 경우에 단일 통신 디바이스내에 존재할 수 있다. 따라서, 108-1 및 104-S와 같은 두개의 디바이스 모두가 통신을 초기화하고 이에 응답하면, 상기 디바이스들의 통신은 동등한 것으로 간주된다. 유사하게, 104-1 및 104-S 사이와 108-1 및 108-C 사이의 통신들은 각각의 통신 디바이스가 통신을 초기화하고 이에 응답할 수 있는 경우에 동등한 것으로 간주될 수 있다.
도 2를 다시 참조하여, 도 2는 도 1에 도시된 클라이언트들 및/또는 서버들 중 몇몇을 표시할 수 있는 블럭 다이어그램 형태로 시스템(200)을 도시한다. 블럭 다이어그램은 높은 레벨의 개념적 표현이며 다양한 방식들 및 다양한 아키텍처들로 구현될 수 있다. 버스 시스템(202)은 중앙 처리 유니트(CPU;204), 판독 전용 메모리(ROM;206), 램덤 액세스 메모리(RAM;208), 저장 장치(210), 디스플레이(220), 오디오(222), 키보드(224), 포인터(226), 다양한 입/출력(I/O) 디바이스들(228), 및 통신기들(230)을 상호접속한다. 버스 시스템(202)은 예를 들면, 온-칩 버스, 시스템 버스, 주변 컴포넌트 상호접속(PCI), 초고속 비디오 전용 포트(AGP), 소형 컴퓨터 시스템 인터페이스(SCSI), 전기 전자 엔지니어 협회(IEEE) 표준 번호 1394(파이어와이어), 범용 직렬 버스(USB)등과 같은 버스들 중 하나 이상이 될 수 있다. CPU(204)는 단일의, 다수의, 또는 분산된 계산 자원이 될 수 있다. 저장장치(210)는 소형 디스크(CD), 디지털 다방면 디스크(DVD), 하드 디스크(HD), 광학 디스크들, 테이프, 플래시, 메모리 스틱들, 비디오 레코더들 등이 될 수 있다. 디스플레이(220)는 예를 들어, 음극선관(CRT), 액정 디스플레이(LCD), 프로젝션 시스템, 텔레비전(TV) 등이 될 수 있다. 실제의 시스템 구현에 따라, 시스템은 블럭 다이어그램내에서, 몇몇의, 전체, 그이상 또는 하나의 재정렬된 컴포넌트들을 포함할 수 있다. 예를 들어, 집적 회로상의 온-칩 통신 시스템은 디스플레이(220), 키보드(224), 및 포인터(226)가 부족할 수 있다. 또다른 예는 예를 들어 종래의 키보드가 부족한 무선 휴대용 디바이스를 포함하는 초박형 클라이언트가 될 수 있다. 따라서, 도 2의 시스템에 대하여 다수의 변형들이 가능하다.
중재 정책은 중재 특성들에 영향을 주지 않는 물리적인 분배를 허용하며, 레지스터 포인트들에 개입하고, 및 개입하지 않고 접속가능하다. 중재 정책은 모든 브랜치들이 항상 요청들을 준비하고 있는지의 여부에 관계없이 구현할 수 있다. 가변 크기의 로컬 트랜잭션 그룹들을 허용하는 에폭 마킹은 대역폭 믹싱을 제어하는데 사용될 수 있다. 중재 제어기는 멀티 쓰레딩 및 서비스 품질 특징들을 통합할 수 있는 온-칩 네트워크들에 대한 물리적으로 분배가능한 중재 메커니즘이 될 수 있다. 중재 제어기는 칩상에 물리적으로 중재를 분배할 수 있고, 대기시간시 낮은 가격과 로직 게이트들을 유지하면서 높은 값의 서비스 품질을 통합할 수 있다. 중재 제어기는 파이프라인 스테이지들이 개입되는 및/또는 개입되지 않는 캐스캐이드형 중재 유니트들을 가질 수 있다. 중재 제어기는 서비스-품질 특성들을 가지는 분산된 낮은-대기시간(latency) 중재를 제공한다.
일 실시예에서, 기계-판독가능한 매체 상에 여기에 개시된 장치들 및/또는 방법들을 표시하는 정보가 저장될 수 있다. 기계-판독가능한 매체는 기계(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 정보를 제공한다(예를 들면, 저장 및/또는 전송한다). 예를 들어, 기계-판독가능한 매체는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스들, DVD들, 전기, 광학, 음향 또는 다른 형태의 전파된 신호들(예를 들면, 반송파들, 적외선 신호들, 디지털 신호들, EPROM들, EEPROM들, FLASH, 자기 또는 광학 카드들, 또는 전자 명령들을 저장하기에 적합한 임의의 형태의 매체를 포함할 수 있다. 더 느린 매체들은 더 빠르고 실용적인 매체로 캐싱될 수 있다. 기계-판독가능한 매체에 저장된 장치들 및/또는 방법들을 나타내는 정보는 여기에 개시된 장치들 및/또는 방법들을 생성하는 프로세스에서 사용될 수 있다. 예를 들어, 장치들 및/또는 방법들을 나타내는 정보는 IP 발생기 내부의 소프트 지시들 또는 유사하게 상기 정보를 저장하는 기계-판독가능한 매체내에 포함될 수 있다.
상기 설명의 몇몇 부분들은 예를 들면, 컴퓨터 메모리내부의 데이터 비트에 대한 동작들의 알고리즘들 및 심볼 표현들로 제공될 수 있다. 상기 알고리즘 설명들 및 표현들은 데이터 프로세싱 분야의 당업자가 다른 당업자에게 그들의 기술의 요점을 가장 효율적으로 전달하기 위해 사용되는 수단들이다. 여기에서 알고리즘은 일반적으로 원하는 결과를 유도하는 작용들에 대하여 자가-부합되는 시퀀스가 되는 것으로 고려된다. 상기 작용들은 물리적인 양들의 물리적인 조종을 필요로 한다. 일반적으로, 필수적인 것은 아니며, 상기 양들은 저장되고, 전송되고, 조합되고, 비교되고, 조종될 수 있도록 전기적이거나, 자기적이거나, 광학적인 신호의 형태를 갖는다. 공통의 사용을 복적으로 상기 신호들을 비트들, 값들, 엘리먼트들, 심볼들, 캐릭터들, 용어들, 숫자들 등으로 참조하는 것은 편리한 것으로 증명되었다.
그러나, 상기 및 유사한 모든 용어들은 적절한 물리적인 양들과 연관되어야 하며, 상기 양들에 적용되는 라벨들에는 편리하지 않음을 유의해야 한다. 그렇지 않으면, 전술된 논의들에서 특히 명백한 것으로 언급되지 않았다면, 상기 설명을 통해 "처리" 또는 "계산" 또는 "산술" 또는 "결정" 또는 "표시" 등과 같은 용어들을 사용하는 설명은 컴퓨터 시스템의 레지스터들 및 메모리들 내에서 물리적인(전자) 양들로 표시되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 저장, 전송, 또는 디스플레이 디바이스들로 유사하게 표현된 다른 데이터로 조종 및 변환하는 컴퓨터 시스템 또는 유사한 전자 계산 디바이스의 동작 및 프로세스들을 참조한다.
본 명세서의 동작들을 수행하기 위한 장치는 본 발명을 수행할 수 있다. 상기 장치는 특정 필요 목적들을 위해 구성될 수 있거나, 범용 컴퓨터를 포함할 수 있거나, 상기 컴퓨터내에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화 또는 재구성될 수 있다. 상기 컴퓨터 프로그램은 플로피 디스크들, 하드 디스크들, 광학 디스크들, 소형 디스크-판독 전용 메모리들(CD-ROM), 디지털 다방면 디스크(DVD), 및 자기-광학 디스크들, 판독-전용 메모리들(ROM), 랜덤 액세스 메모리들(RAM), 전기적으로 프로그램가능한 판독 전용 메모리들(EPROM), 전기적으로 소거가능한 판독 전용 메모리들(EEPROM), FLASH 메모리들, 자기 또는 광학 카드들 등, 또는 컴퓨터와 가깝거나 컴퓨터와 멀리 떨어진 전기 지시들을 저장하기 위한 임의의 형태의 매체와 같은 컴퓨터 판독가능한 저장 매체내에 저장될 수 있지만 이에 제한되는 것은 아니다.
여기에 제공되는 세부 사항들은 임의의 특정 컴퓨터 또는 다른 장치와 관련되는 것은 아니다. 다양한 범용 시스템들이 여기에 개시된 기술들에 따른 프로그램들과 함께 사용될 수 있거나, 요구되는 방법들을 수행하기 위해 더 특정화된 장치를 구성하는 것이 편리한 것으로 증명될 수도 있다. 예를 들어, 본 발명에 따른 임의의 방법들은 범용 프로세서를 프로그래밍하거나 하드웨어 및 소프트웨어의 임의의 조합에 의해 하드와이어 회로에서 구현될 수 있다. 당업자는 본 발명이 휴대용 디바이스들, 멀티프로세서 시스템들, 마이크로프로세서-기반 또는 프로그램가능한 고객 전자장치들, 디지털 신호 처리(DSP) 디바이스들, 셋톱 박스들, 네트워크 PC들, 소형컴퓨터들, 메인프레임 컴퓨터들 등을 포함하는 전술된 것과 컴퓨터 시스템 구성들을 사용하여 실행될 수 있음을 인식할 것이다. 본 발명은 또한 작업들이 통신 네트워크를 통해 링크되는 원격 프로세싱 디바이스들에 의해 수행되는 분산된 계산 환경들에서 실행될 수 있다. 상기 통신 네트워크는 크기에 의해 제한되는 것이 아니라, 인터넷과 같은 WAN들로의 온칩 통신으로부터 제한될 수 있다.
본 발명의 몇몇의 특정 실시예들이 도시되었지만, 본 발명은 상기 실시예들에 제한되는 것은 아니다. 예를 들어, 당업자는 중재 회로들을 형성하는데 다양한 서로 다른 회로 레이아웃들과 전자 컴포넌트들이 사용될 수 있음을 인식할 것이다. 트랜잭션 그룹들에서 최종 요청을 표시할 수 있다. 중재 유니트의 정확한 구현이 에폭-종료 마커가 사용될 때 달라지지만, 트랜잭션 기반의 중재 그룹의 전체적인 원칙은 동일하게 유지된다. 본 발명은 여기에서 설명된 특정 실시예들에 의해 제한되는 것이 아니라 청구항들에 의해 제한된다.

Claims (34)

  1. 다수의 기능 블럭들로부터의 하나 이상의 트랜잭션들을 수신하는 다수의 입력들을 구비하는 중재 제어기; 및
    중재 정책을 수행하는 중재 로직
    을 포함하며, 상기 중재 제어기는 상기 중재 정책이 수행됨에 따라 상기 다수의 기능 블럭들 중에서 공유된 자원에 대한 액세스를 위한 요청들을 중재하고,
    상기 중재 정책은 상기 다수의 기능 블록들로부터의 상기 트랜잭션들을 상기 공유된 자원에 의해 서비스되는 트랜잭션들의 글로벌 그룹들로 그룹화하고,
    제 1 글로벌 그룹 내의 상기 트랜잭션들 모두는, 트랜잭션들의 다음 글로벌 그룹내의 트랜잭션들 모두를 서비스하고 또 다른 그룹으로부터의 트랜잭션들의 서비스를 중단하지 않고 전체(in their entirety) 트랜잭션들의 서비스 그룹들의 프로세스를 반복하기 이전에, 상기 공유된 자원에 의해 서비스되며,
    상기 중재 로직은 상기 공유된 자원에 대하여 계층적으로 중재되는 캐스케이드형(cascaded) 중재 유니트들을 포함하고, 상기 중재 제어기 내의 입력들에 상기 트랜잭션들을 공급하는 상기 기능 블럭들의 토폴로지는 상기 캐스케이드형 중재 유니트들에 의해 달성되는 상기 중재 정책에 관계없이 변할 수 있는, 중재 장치.
  2. 제 1 항에 있어서,
    상기 중재 장치는 SoC(sysyem on a chip) 내에 위치되는, 중재 장치.
  3. 제 1 항에 있어서,
    상기 중재 정책은 최근 최소 서비스(least recently serviced) 요청 인자에 기초하여 상기 글로벌 그룹 내의 상기 기능 블럭들로부터의 상기 트랜잭션들의 순서를 가중하는, 중재 장치.
  4. 제 1 항에 있어서,
    상기 중재 정책은 서비스 품질 인자에 기초하여 상기 기능 블럭들로부터의 상기 트랜잭션들을 가중화시키는, 중재 장치.
  5. 제 1 항에 있어서,
    상기 중재 정책은 멀티-쓰레드 링크 인자에 기초하여 상기 기능 블럭들로부터의 상기 트랜잭션들을 가중화시키는, 중재 장치.
  6. 제 1 항에 있어서,
    상기 중재 로직은 브랜치 중재 로직 및 쓰레드 중재 로직을 포함하는, 중재 장치.
  7. 정보가 저장된 기계-판독가능 저장 매체로서,
    상기 정보는 제 1 항에 따른 중재 장치의 속성들과 상관되는 데이터 및 실행가능한 명령들 중 적어도 하나를 포함하며, 상기 기계-판독가능 저장 매체는 기계에 의해 실행될 때 제 1 항에 따른 중재 장치에 대한 표현(representation)을 발생시키는, 기계-판독가능 저장 매체.
  8. 제 1 항에 있어서,
    트랜잭션들의 로컬 그룹화의 시작 및 종료 포인트들을 제어하기 위해 하나 이상의 기능 블럭들로부터의 트랜잭션들에 표시(indication)를 첨부하는, 상기 중재 제어기 상류에 있는 필드 구성가능 컴포넌트를 더 포함하는, 중재 장치.
  9. 제 1 항에 있어서,
    둘 이상의 트랜잭션들 상에 표시를 첨부하여 상기 공유된 자원이 표시가 첨부된 상기 트랜잭션들을 순차적으로 서비스하는 것을 보장하게 하는, 상기 중재 제어기 상류에 있는 필드 구성가능 컴포넌트를 더 포함하는, 중재 장치.
  10. 제 1 항에 있어서,
    상기 공유된 자원에 의해 서비스되는 중재 프로세스 트랜잭션들을 필터링하기 위해 상기 중재 로직과 통신하는, 상기 중재 제어기의 하류에 있는 컴포넌트를 더 포함하는, 중재 장치.
  11. 제 1 항에 있어서,
    트랜잭션들의 주어진 글로벌 그룹은, 상기 트랜잭션들의 주어진 글로벌 그룹에 포함되는 상기 트랜잭션들을 수신하는 중재 유니트들 간의 파이프라이닝(pipelining) 및 상기 중재 유니트들의 토폴로지와 상관없이 상기 중재 정책을 실행한 이후에, 상기 글로벌 그룹 내에서 동일한 트랜잭션 구성(composition)을 가지는, 중재 장치.
  12. 제 1 항에 있어서,
    상기 중재 로직은 제 1 브랜치를 다른 브랜치들과 비교하는 서비스의 로우 및 컬럼 쌍 히스토리를 저장하는 상태 레지스터를 더 포함하는, 중재 장치.
  13. 제 12 항에 있어서, 상기 중재 로직은,
    트랜잭션을 제공하는 각각의 상기 기능 블럭들로부터, 상기 브랜치가 상기 중재 프로세스를 획득(win)해야 하는지를 표시하는 신호를 수신하는 로직 게이트; 및
    상기 상태 레지스터로부터 신호를 수신하고, 상기 기능 블럭으로부터의 상기 트랜잭션이 상기 중재 프로세스를 획득해야 하는지를 표시하는 금지 신호(inhibit signal)를 상기 로직 게이트에 제공하는 금지 로직 게이트
    를 더 포함하는, 중재 장치.
  14. 제 1 항에 있어서,
    인입 트랜잭션에 할당된 우선순위를 동적으로 강등시키기 위해서 상기 중재 로직과 통신하는, 상기 중재 제어기의 하류에 있는 컴포넌트를 더 포함하는, 중재 장치.
  15. 제 1 항에 있어서,
    주어진 트랜잭션은 상기 중재 제어기의 입력에 상기 트랜잭션을 공급하는 상기 기능 블럭들의 물리적인 토폴로지에 관계없이 트랜잭션들의 상기 제 1 글로벌 그룹에 포함되는 동일한 통계 확률 가능성을 가지는, 중재 장치.
  16. 중재 정책을 실행함으로써 다수의 기능 블럭들 사이에서 공유된 자원으로 트랜잭션들을 중재하는 단계;
    상기 공유된 자원에 의해 서비스되는 트랜잭션들의 글로벌 그룹들로 상기 다수의 기능 블럭들로부터의 상기 트랜잭션들을 그룹화하는 단계 - 제 1 글로벌 그룹 내의 상기 트랜잭션들 모두는, 트랜잭션들의 다음 글로벌 그룹 내에 있는 상기 트랜잭션들 모두를 서비스하고 또 다른 그룹으로부터의 트랜잭션들의 서비스를 중단하지 않고 전체(in their entirety) 트랜잭션들의 서비스 그룹들의 프로세스를 반복하기 이전에, 상기 공유된 자원에 의해 서비스됨 - ; 및
    중재될 트랜잭션들을 제공하는 상기 기능 블럭들의 물리적인 토폴로지에 대해 발생된 변화들과는 관계없이 상기 제 1 글로벌 그룹에 포함된 트랜잭션들의 구성에 대하여 유사한 중재 결과들을 유지하는 단계
    를 포함하는, 중재 방법.
  17. 제 16 항에 있어서,
    상기 트랜잭션들을 그룹화하는 단계에서, 최근 최소 서비스(least recently serviced) 인자에 기초하여 상기 글로벌 그룹 내에서 상기 트랜잭션들의 서비스 순서의 우선순위를 결정하는 단계를 더 포함하는, 중재 방법.
  18. 제 16 항에 있어서,
    상기 트랜잭션들을 그룹화하는 단계에서, 제 1 기능 블럭으로부터의 둘 이상의 트랜잭션들이 둘 이상의 기능 블럭들로부터의 트랜잭션들을 포함하는 트랜잭션들의 글로벌 그룹 내에서 순차적인 순서로 서비스되도록 록킹(locking)하는 단계를 더 포함하는, 중재 방법.
  19. 제 16 항에 있어서,
    상기 트랜잭션들을 그룹화하는 단계에서, 상기 트랜잭션들과 연관된 서비스 품질 표시에 기초하여 상기 글로벌 그룹 내의 상기 트랜잭션들의 서비스 순서의 우선순위를 결정하는 단계를 더 포함하는, 중재 방법.
  20. 제 16 항에 있어서,
    상기 트랜잭션들을 그룹화하는 단계에서, 상기 중재 정책에 따라 멀티-쓰레드된 링크로부터의 트랜잭션들을 중재하는 단계를 더 포함하는, 중재 방법.
  21. 제 16 항에 있어서,
    상기 트랜잭션들을 그룹화하는 단계에서, 상기 중재 정책을 수행하는 메커니즘에 의해 중재되는 트랜잭션에 할당된 우선순위 레벨을 동적으로 강등시키기 위해, 상기 중재 정책을 수행하는 상기 메커니즘의 하류에 있는 컴포넌트와 통신하는 단계를 더 포함하는, 중재 방법.
  22. 제 16 항에 있어서,
    상기 트랜잭션들을 그룹화하는 단계에서, 상기 공유된 자원이 트랜잭션들을 서비스할 준비가 되지 않은 경우에는, 상기 공유된 자원에 의해 서비스되는 상기 중재 프로세스 트랜잭션들을 필터링하는 단계를 더 포함하는, 중재 방법.
  23. 중재 정책을 수행함으로써 다수의 기능 블럭들 사이에서 공유된 자원으로 트랜잭션들을 중재하는 수단;
    상기 공유된 자원에 의해 서비스되는 트랜잭션들의 글로벌 그룹들로 상기 다수의 기능 블럭들로부터의 상기 트랜잭션들을 그룹화하는 수단 - 제 1 글로벌 그룹 내의 상기 트랜잭션들 모두는, 트랜잭션들의 다음 글로벌 그룹 내에 있는 상기 트랜잭션들 모두를 서비스하기 이전에, 상기 공유된 자원에 의해 서비스됨 - ; 및
    중재될 트랜잭션들을 공급하는 상기 기능 블럭들의 물리적인 토폴로지에 대해 발생되는 변화들과는 관계없이 상기 제 1 글로벌 그룹에 포함된 트랜잭션들의 구성에 대하여 유사한 중재 결과들을 유지하는 수단
    을 포함하며, 상기 트랜잭션들을 중재하기 위한 수단은 상기 트랜잭션들을 그룹화하는 수단 및 상기 유사한 중재 결과들을 유지하는 수단과 통신적으로 연결되는, 중재 장치.
  24. 제 23 항에 있어서,
    최근 최소 서비스(least recently serviced) 인자에 기초하여 상기 글로벌 그룹 내의 상기 트랜잭션들의 서비스 순서의 우선순위를 결정하는 수단을 더 포함하며, 상기 트랜잭션들을 중재하는 수단은 상기 서비스 순서의 우선순위를 결정하는 수단과 통신적으로 연결되는, 중재 장치.
  25. 제 23 항에 있어서,
    제 1 기능 블럭으로부터의 둘 이상의 트랜잭션들이 둘 이상의 기능 블럭들로부터의 트랜잭션들을 포함하는 트랜잭션들의 글로벌 그룹 내에서 순차적인 순서로 서비스되도록 록킹하는 수단을 더 포함하고,
    상기 트랜잭션들을 중재하는 수단은 상기 둘 이상의 트랜잭션들을 록킹하는 수단과 통신적으로 연결되는, 중재 장치.
  26. 제23항에 있어서,
    상기 트랜잭션들과 연관된 서비스 품질 표시에 기초하여 상기 글로벌 그룹 내의 상기 트랜잭션들의 서비스 순서의 우선순위를 결정하기 위한 수단을 더 포함하고,
    상기 트랜잭션들을 중재하기 위한 수단은 상기 트랜잭션들의 서비스 순서의 우선순위를 결정하기 위한 수단과 통신적으로 연결된, 중재 장치.
  27. 제 23 항에 있어서,
    상기 중재 정책에 따라 멀티-쓰레드된 링크로부터의 트랜잭션들을 중재하는 수단을 더 포함하며, 상기 멀티-쓰레드된 링크로부터의 트랜잭션들을 중재하는 수단은 상기 트랜잭션들을 그룹화하는 수단 및 상기 유사한 중재 결과들을 유지하는 수단과 통신적으로 연결되는, 중재 장치.
  28. 제 23 항에 있어서,
    상기 중재 정책을 수행하는 메커니즘에 의해 중재되는 트랜잭션에 할당된 우선순위 레벨을 동적으로 강등시키기 위해서 상기 중재 정책을 수행하는 상기 메커니즘의 하류에 있는 컴포넌트와 통신하는 수단을 더 포함하고,
    상기 통신하는 수단은 상기 트랜잭션들을 그룹화하는 수단과 통신적으로 연결되는, 중재 장치.
  29. 제 23 항에 있어서,
    상기 공유된 자원이 트랜잭션들을 서비스할 준비가 되지 않았을 때, 상기 공유된 자원에 의해 서비스되는 중재 프로세스 트랜잭션들을 필터링하는 수단을 더 포함하고, 상기 트랜잭션들을 중재하는 수단은 상기 필터링하는 수단과 통신적으로 연결되는, 중재 장치.
  30. 제 23 항에 있어서,
    제 1 항에 다른 중재 장치가 SoC 내에 위치되는, 중재 장치.
  31. 정보가 저장된 기계-판독가능 저장 매체로서,
    상기 정보는 제 23 항에 따른 중재 장치의 속성들과 상관되는 데이터 및 실행가능한 명령들 중 적어도 하나를 포함하며, 상기 기계-판독가능 저장 매체는 기계에 의해 실행될 때 제 23 항에 따른 중재 장치에 대한 표현(representation)을 발생시키는, 기계-판독가능 저장 매체.
  32. 제 23 항에 있어서,
    상기 제 1 글로벌 그룹에 포함될 제 1 기능 블럭으로부터의 개별 트랜잭션들의 양을 동적으로 결정하기 위해 상기 중재 정책을 실행하는 메커니즘의 외부에 있는 컴포넌트와 통신하는 수단을 더 포함하고,
    상기 통신하는 수단은 상기 트랜잭션들을 그룹화하는 수단과 통신적으로 연결되는, 중재 장치.
  33. 제 23 항에 있어서,
    트랜잭션들의 상기 제 1 글로벌 그룹의 일부로서 포함되는 각각의 기능 블럭으로부터 제공되는 트랜잭션 없이, 상기 제 1 글로벌 그룹의 형성(formation)을 완료하는 수단을 더 포함하고,
    상기 트랜잭션들을 중재하는 수단은 상기 제 1 글로벌 그룹의 형성을 완료하는 수단과 통신적으로 연결되는, 중재 장치.
  34. 제 23 항에 있어서,
    파이프라인 레지스터 포인트들이 상기 중재 정책을 실행하는 메커니즘 내에 존재하는지의 여부와 관계없이, 상기 제 1 글로벌 그룹에 포함된 트랜잭션들의 구성(composition)에 대하여 유사한 중재 결과들을 유지하는 수단을 더 포함하고,
    상기 트랜잭션들을 중재하는 수단은 상기 트랜잭션들을 그룹화하는 수단 및 상기 유사한 중재 결과들을 유지하는 수단과 통신적으로 연결되는, 중재 장치.
KR1020057019847A 2003-04-18 2004-04-08 기능 블럭들 사이에서 중재를 위한 다양한 방법들 및장치들 KR100943104B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/418,370 2003-04-18
US10/418,370 US7149829B2 (en) 2003-04-18 2003-04-18 Various methods and apparatuses for arbitration among blocks of functionality

Publications (2)

Publication Number Publication Date
KR20060008908A KR20060008908A (ko) 2006-01-27
KR100943104B1 true KR100943104B1 (ko) 2010-02-18

Family

ID=33159091

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057019847A KR100943104B1 (ko) 2003-04-18 2004-04-08 기능 블럭들 사이에서 중재를 위한 다양한 방법들 및장치들

Country Status (7)

Country Link
US (1) US7149829B2 (ko)
EP (1) EP1616262B1 (ko)
JP (1) JP4852413B2 (ko)
KR (1) KR100943104B1 (ko)
AT (1) ATE435456T1 (ko)
DE (1) DE602004021792D1 (ko)
WO (1) WO2004095295A2 (ko)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266786B2 (en) 2002-11-05 2007-09-04 Sonics, Inc. Method and apparatus for configurable address mapping and protection architecture and hardware for on-chip systems
US7062582B1 (en) * 2003-03-14 2006-06-13 Marvell International Ltd. Method and apparatus for bus arbitration dynamic priority based on waiting period
US7350003B2 (en) * 2003-09-25 2008-03-25 Intel Corporation Method, system, and apparatus for an adaptive weighted arbiter
US7296105B2 (en) * 2003-10-03 2007-11-13 Sonics, Inc. Method and apparatus for configuring an interconnect to implement arbitration
US7665069B2 (en) * 2003-10-31 2010-02-16 Sonics, Inc. Method and apparatus for establishing a quality of service model
US9087036B1 (en) 2004-08-12 2015-07-21 Sonics, Inc. Methods and apparatuses for time annotated transaction level modeling
US8504992B2 (en) 2003-10-31 2013-08-06 Sonics, Inc. Method and apparatus for establishing a quality of service model
US7099975B2 (en) * 2003-12-09 2006-08-29 International Business Machines Corporation Method of resource arbitration
US20060242406A1 (en) 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
US7584502B2 (en) * 2004-05-03 2009-09-01 Microsoft Corporation Policy engine and methods and systems for protecting data
US7606983B2 (en) * 2004-06-21 2009-10-20 Nxp B.V. Sequential ordering of transactions in digital systems with multiple requestors
JP2006079394A (ja) * 2004-09-10 2006-03-23 Renesas Technology Corp データ処理装置
US7739436B2 (en) * 2004-11-01 2010-06-15 Sonics, Inc. Method and apparatus for round robin resource arbitration with a fast request to grant response
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US9436804B2 (en) 2005-04-22 2016-09-06 Microsoft Technology Licensing, Llc Establishing a unique session key using a hardware functionality scan
KR100739716B1 (ko) * 2005-08-11 2007-07-13 삼성전자주식회사 공유 자원들의 네트워킹을 제어하는 방법 및 장치
US7802040B2 (en) * 2005-12-22 2010-09-21 Arm Limited Arbitration method reordering transactions to ensure quality of service specified by each transaction
US20090037635A1 (en) * 2006-03-17 2009-02-05 Shanghai Magima Digital Information Co., Ltd. Bus arbitration device
EP1863232A1 (en) * 2006-05-29 2007-12-05 Stmicroelectronics Sa On-chip bandwidth allocator
US20080059674A1 (en) * 2006-09-01 2008-03-06 Jiaxiang Shi Apparatus and method for chained arbitration of a plurality of inputs
US20080091866A1 (en) * 2006-10-12 2008-04-17 International Business Machines Corporation Maintaining forward progress in a shared L2 by detecting and breaking up requestor starvation
US8868397B2 (en) 2006-11-20 2014-10-21 Sonics, Inc. Transaction co-validation across abstraction layers
US8452907B2 (en) * 2007-03-27 2013-05-28 Arm Limited Data processing apparatus and method for arbitrating access to a shared resource
US7664901B2 (en) * 2007-03-27 2010-02-16 Arm Limited Data processing apparatus and method for arbitrating access to a shared resource
US7814243B2 (en) * 2007-06-01 2010-10-12 Sonics, Inc. Shared storage for multi-threaded ordered queues in an interconnect
CN101681303B (zh) * 2007-06-19 2011-12-14 富士通株式会社 高速缓存控制装置以及控制方法
US8108648B2 (en) * 2007-06-25 2012-01-31 Sonics, Inc. Various methods and apparatus for address tiling
US9292436B2 (en) 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
US8438320B2 (en) * 2007-06-25 2013-05-07 Sonics, Inc. Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US8229723B2 (en) * 2007-12-07 2012-07-24 Sonics, Inc. Performance software instrumentation and analysis for electronic design automation
JP5127470B2 (ja) * 2008-01-15 2013-01-23 三菱電機株式会社 バス装置
TWI337517B (en) * 2008-03-04 2011-02-11 Inventec Corp Trace carrier
US8073820B2 (en) 2008-04-07 2011-12-06 Sonics, Inc. Method and system for a database to monitor and analyze performance of an electronic design
US8032329B2 (en) * 2008-09-04 2011-10-04 Sonics, Inc. Method and system to monitor, debug, and analyze performance of an electronic design
EP2192496B1 (en) * 2008-11-28 2013-01-23 Telefonaktiebolaget LM Ericsson (publ) Arbitration in multiprocessor device
US8190804B1 (en) * 2009-03-12 2012-05-29 Sonics, Inc. Various methods and apparatus for a memory scheduler with an arbiter
US8972995B2 (en) 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
KR101662029B1 (ko) * 2010-11-12 2016-10-06 삼성전자주식회사 버스 중재 장치 및 방법
US8649286B2 (en) * 2011-01-18 2014-02-11 Apple Inc. Quality of service (QoS)-related fabric control
US8744602B2 (en) 2011-01-18 2014-06-03 Apple Inc. Fabric limiter circuits
US8861386B2 (en) 2011-01-18 2014-10-14 Apple Inc. Write traffic shaper circuits
US9128754B2 (en) * 2012-05-31 2015-09-08 Hewlett-Packard Development Company, L.P. Resource starvation management in a computer system
US9378023B2 (en) * 2012-06-13 2016-06-28 International Business Machines Corporation Cross-pipe serialization for multi-pipeline processor
US9053058B2 (en) 2012-12-20 2015-06-09 Apple Inc. QoS inband upgrade
US9524261B2 (en) * 2012-12-21 2016-12-20 Apple Inc. Credit lookahead mechanism
US10503405B2 (en) * 2015-02-10 2019-12-10 Red Hat Israel, Ltd. Zero copy memory reclaim using copy-on-write
US10037301B2 (en) * 2015-03-04 2018-07-31 Xilinx, Inc. Circuits and methods for inter-processor communication
US10387343B2 (en) * 2015-04-07 2019-08-20 International Business Machines Corporation Processing of events for accelerators utilized for parallel processing
US10394743B2 (en) * 2015-05-28 2019-08-27 Dell Products, L.P. Interchangeable I/O modules with individual and shared personalities
WO2017018976A1 (en) 2015-07-24 2017-02-02 Hewlett Packard Enterprise Development Lp Lock manager
US10838883B2 (en) 2015-08-31 2020-11-17 Via Alliance Semiconductor Co., Ltd. System and method of accelerating arbitration by approximating relative ages
GB2557225A (en) * 2016-11-30 2018-06-20 Nordic Semiconductor Asa Interconnect system
US10243882B1 (en) 2017-04-13 2019-03-26 Xilinx, Inc. Network on chip switch interconnect
US10673745B2 (en) 2018-02-01 2020-06-02 Xilinx, Inc. End-to-end quality-of-service in a network-on-chip
US10503690B2 (en) 2018-02-23 2019-12-10 Xilinx, Inc. Programmable NOC compatible with multiple interface communication protocol
US10621129B2 (en) 2018-03-27 2020-04-14 Xilinx, Inc. Peripheral interconnect for configurable slave endpoint circuits
US11080188B1 (en) 2018-03-28 2021-08-03 Apple Inc. Method to ensure forward progress of a processor in the presence of persistent external cache/TLB maintenance requests
US10505548B1 (en) 2018-05-25 2019-12-10 Xilinx, Inc. Multi-chip structure having configurable network-on-chip
WO2020005597A1 (en) * 2018-06-28 2020-01-02 Microsoft Technology Licensing, Llc Managing global and local execution phases
US10838908B2 (en) 2018-07-20 2020-11-17 Xilinx, Inc. Configurable network-on-chip for a programmable device
US10824505B1 (en) 2018-08-21 2020-11-03 Xilinx, Inc. ECC proxy extension and byte organization for multi-master systems
US10963460B2 (en) 2018-12-06 2021-03-30 Xilinx, Inc. Integrated circuits and methods to accelerate data queries
US11068303B2 (en) 2019-02-19 2021-07-20 International Business Machines Corporation Adjusting thread balancing in response to disruptive complex instruction
US10936486B1 (en) 2019-02-21 2021-03-02 Xilinx, Inc. Address interleave support in a programmable device
US10942775B2 (en) 2019-03-01 2021-03-09 International Business Machines Corporation Modified central serialization of requests in multiprocessor systems
WO2020185623A1 (en) 2019-03-08 2020-09-17 Mobileye Vision Technologies Ltd. Priority based management of access to shared resources
US10680615B1 (en) 2019-03-27 2020-06-09 Xilinx, Inc. Circuit for and method of configuring and partially reconfiguring function blocks of an integrated circuit device
US11188312B2 (en) 2019-05-23 2021-11-30 Xilinx, Inc. Hardware-software design flow with high-level synthesis for heterogeneous and programmable devices
US10891132B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Flow convergence during hardware-software design for heterogeneous and programmable devices
US10891414B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Hardware-software design flow for heterogeneous and programmable devices
US11301295B1 (en) 2019-05-23 2022-04-12 Xilinx, Inc. Implementing an application specified as a data flow graph in an array of data processing engines
US10977018B1 (en) 2019-12-05 2021-04-13 Xilinx, Inc. Development environment for heterogeneous devices
US10972408B1 (en) * 2020-02-10 2021-04-06 Apple Inc. Configurable packet arbitration with minimum progress guarantees
US11496418B1 (en) 2020-08-25 2022-11-08 Xilinx, Inc. Packet-based and time-multiplexed network-on-chip
US11422946B2 (en) 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations
US11615033B2 (en) 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages
US11675710B2 (en) 2020-09-09 2023-06-13 Apple Inc. Limiting translation lookaside buffer searches using active page size
US11489786B2 (en) * 2020-12-28 2022-11-01 Arteris, Inc. Queue management system, starvation and latency management system, and methods of use
US11520717B1 (en) 2021-03-09 2022-12-06 Xilinx, Inc. Memory tiles in data processing engine array
US11336287B1 (en) 2021-03-09 2022-05-17 Xilinx, Inc. Data processing engine array architecture with memory tiles
US11848670B2 (en) 2022-04-15 2023-12-19 Xilinx, Inc. Multiple partitions in a data processing array

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4953081A (en) 1988-12-21 1990-08-28 International Business Machines Corporation Least recently used arbiter with programmable high priority mode and performance monitor
JPH04102155A (ja) * 1990-08-21 1992-04-03 Fujitsu Ltd バス使用権調停方式
US5274783A (en) * 1991-06-28 1993-12-28 Digital Equipment Corporation SCSI interface employing bus extender and auxiliary bus
US5440752A (en) * 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5598542A (en) * 1994-08-08 1997-01-28 International Business Machines Corporation Method and apparatus for bus arbitration in a multiple bus information handling system using time slot assignment values
US5740380A (en) * 1996-07-15 1998-04-14 Micron Electronics, Inc. Method and system for apportioning computer bus bandwidth
US6385678B2 (en) * 1996-09-19 2002-05-07 Trimedia Technologies, Inc. Method and apparatus for bus arbitration with weighted bandwidth allocation
JPH10171750A (ja) * 1996-12-09 1998-06-26 Fujitsu Ltd メモリ間データ転送システム
US5832278A (en) * 1997-02-26 1998-11-03 Advanced Micro Devices, Inc. Cascaded round robin request selection method and apparatus
KR100252752B1 (ko) * 1997-06-26 2000-04-15 김영환 다단계 제어 버스 중재장치
JPH1173258A (ja) * 1997-08-28 1999-03-16 Toshiba Corp 低消費電力バス構造及びその制御方法、低消費電力バス構造の合成システム及びその合成方法、携帯情報機器
US5948089A (en) * 1997-09-05 1999-09-07 Sonics, Inc. Fully-pipelined fixed-latency communications system with a real time dynamic bandwidth allocation
US6012116A (en) * 1997-12-31 2000-01-04 Sun Microsystems, Inc. Apparatus and method for controlling data, address, and enable buses within a microprocessor
US6286083B1 (en) 1998-07-08 2001-09-04 Compaq Computer Corporation Computer system with adaptive memory arbitration scheme
JP2000122965A (ja) * 1998-10-16 2000-04-28 Fuji Xerox Co Ltd バス制御方法、バス制御装置および情報処理装置
US6182183B1 (en) * 1998-11-13 2001-01-30 Sonics, Inc. Communications system and method with multilevel connection identification
US6493776B1 (en) * 1999-08-12 2002-12-10 Mips Technologies, Inc. Scalable on-chip system bus
US6826191B1 (en) 1999-10-01 2004-11-30 Stmicroelectronics Ltd. Packets containing transaction attributes
US6532509B1 (en) * 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6330225B1 (en) * 2000-05-26 2001-12-11 Sonics, Inc. Communication system and method for different quality of service guarantees for different data flows
US6782441B1 (en) * 2000-10-26 2004-08-24 Sun Microsystems, Inc. Arbitration method and apparatus
GB0031763D0 (en) * 2000-12-29 2001-02-07 Mitel Semiconductor Ltd Arbiter for a queue management system
JP4288014B2 (ja) * 2001-03-06 2009-07-01 インターナショナル・ビジネス・マシーンズ・コーポレーション バス調停システム及び方法
US6662251B2 (en) 2001-03-26 2003-12-09 International Business Machines Corporation Selective targeting of transactions to devices on a shared bus
US20020169935A1 (en) 2001-05-10 2002-11-14 Krick Robert F. System of and method for memory arbitration using multiple queues
US6970454B1 (en) * 2001-08-09 2005-11-29 Pasternak Solutions Llc Sliced crossbar architecture with inter-slice communication
US6578117B2 (en) * 2001-10-12 2003-06-10 Sonics, Inc. Method and apparatus for scheduling requests using ordered stages of scheduling criteria
US6823411B2 (en) * 2002-01-30 2004-11-23 International Business Machines Corporation N-way psuedo cross-bar having an arbitration feature using discrete processor local busses
US7236497B2 (en) * 2002-08-28 2007-06-26 Intel Corporation Facilitating arbitration via information associated with groups of requesters
US6976106B2 (en) * 2002-11-01 2005-12-13 Sonics, Inc. Method and apparatus for speculative response arbitration to improve system latency
US20040210696A1 (en) * 2003-04-18 2004-10-21 Meyer Michael J. Method and apparatus for round robin resource arbitration

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams

Also Published As

Publication number Publication date
WO2004095295A3 (en) 2005-03-24
US20040210695A1 (en) 2004-10-21
JP2006523895A (ja) 2006-10-19
WO2004095295A2 (en) 2004-11-04
ATE435456T1 (de) 2009-07-15
JP4852413B2 (ja) 2012-01-11
EP1616262A2 (en) 2006-01-18
EP1616262B1 (en) 2009-07-01
DE602004021792D1 (de) 2009-08-13
KR20060008908A (ko) 2006-01-27
US7149829B2 (en) 2006-12-12

Similar Documents

Publication Publication Date Title
KR100943104B1 (ko) 기능 블럭들 사이에서 중재를 위한 다양한 방법들 및장치들
US9047243B2 (en) Method and apparatus for low latency data distribution
US5787264A (en) Method and apparatus for arbitrating access to a shared bus
US10261926B2 (en) Semaphore for multi-core processor
CN106997546A (zh) 一种订单处理方法及装置
JP5707911B2 (ja) データ転送制御装置
US10268604B2 (en) Adaptive resource management in a pipelined arbiter
US20240160447A1 (en) Ticket Locks with Enhanced Waiting
US7680971B2 (en) Method and apparatus for granting processors access to a resource
US8478920B2 (en) Controlling data stream interruptions on a shared interface
US9727499B2 (en) Hardware first come first serve arbiter using multiple request buckets
US20190026040A1 (en) Acceleration and dynamic allocation of random data bandwidth in multi-core processors
US8156265B2 (en) Data processor coupled to a sequencer circuit that provides efficient scalable queuing and method
US8930616B2 (en) System refresh in cache memory
US7779189B2 (en) Method, system, and computer program product for pipeline arbitration
KR20220092601A (ko) 프로세서 기반 디바이스의 코히어런스 그래뉼 경계를 가로지른 원자적 메모리 액세스 활성화
CN104750640B (zh) 在多个通道之间仲裁以存取一资源的方法和装置
US10942775B2 (en) Modified central serialization of requests in multiprocessor systems
CN101196835A (zh) 用于在线程之间通信的方法和装置
US20110321053A1 (en) Multiple level linked lru priority
CN110300962A (zh) 处理器系统以及多处理器系统
US20110320778A1 (en) Centralized serialization of requests in a multiprocessor system
Roh et al. Jitter-conscious bus arbitration scheme for real-time systems

Legal Events

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