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

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

Info

Publication number
KR20060008908A
KR20060008908A KR1020057019847A KR20057019847A KR20060008908A KR 20060008908 A KR20060008908 A KR 20060008908A KR 1020057019847 A KR1020057019847 A KR 1020057019847A KR 20057019847 A KR20057019847 A KR 20057019847A KR 20060008908 A KR20060008908 A KR 20060008908A
Authority
KR
South Korea
Prior art keywords
arbitration
transactions
global
transaction
functional blocks
Prior art date
Application number
KR1020057019847A
Other languages
English (en)
Other versions
KR100943104B1 (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}
저작권에 대한 통지
본 특허 문서의 개시된 부분은 저작권 보호에 속하는 내용들을 포함하고 있다. 저작권자는 특허 및 상표 사무소의 특허 화일 또는 기록들에 있는, 임의의 텍스트 및 도면들에 의한 팩시밀리 복제에 반대하지는 않으나, 그렇지 않은 경우에는 모든 저작권들을 보유한다.
본 발명은 기능 블럭들 사이에서 중재를 위한 다양한 방법들 및 장치들에 관한 것이다.
종래 기술들에서, 중재 매커니즘은 자주 집중화되며 물리적으로 분배되거나 또는 다른 클록 사이클들로 분배될 수 없다. 파이프라인이 개별적인 다중 중재 포인트들을 가리키는 경우, 중재 정책은 자주 중재 포인트들의 물리적 분배에 따라 좌우된다. 이것은 중재 정책을 구현하는 로직을 변경함이 없이, 칩의 물리적 레이아웃(layout)의 나중 스테이지들 동안에 발생할 수 있는, 물리적 분배를 변경하기 어렵게 만든다.
서비스 품질(quality-of-service) 특성들 및/또는 멀티-쓰레딩(multi- threading)을 부가하는 것은 중재 매커니즘을 복잡하게 하고 더욱 느려지게 만들 수 있다.
중재 제어기가 중재 로직과 함께 동작하는 다양한 방법들 및 장치들이 설명된다. 중재 제어기는 복수의 기능 블럭들로부터 하나 이상의 거래들(transaction)을 수신하는 복수의 입력들을 포함한다. 중재 제어기는 중재 정책을 구현함으로써 복수의 기능 블럭들 사이에서 공유된 자원으로의 접근을 위한 요청들을 중재한다. 중재 정책은 복수의 기능 블럭들로부터의 거래들을 상기 공유된 자원에 의해 서비스하기 위한 글로벌 거래 그룹들로 분류한다. 제 1 글로벌 그룹에 있는 모든 거래들은 다음 글로벌 거래 그룹에 있는 거래들을 서비스하기 전에 상기 공유된 자원에 의해 서비스된다. 중재 로직은 중재 정책을 용이하게 한다. 중재 로직은 계층적으로 공유된 자원을 중재하는 직렬 접속된(cascaded) 중재 유니트들을 포함한다. 입력들에 대한 거래들을 중재 제어기로 제공하는 기능 블럭들의 토폴로지(topology)는 중재 유니트들의 집합에 의해 달성된 중재 정책들에 대하여 독립적으로 변화할 수 있다.
도 1은 본 발명의 방법 및 장치가 구현될 수 있는 네트워크 환경의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 2는 본 발명의 방법 및 장치가 구현될 수 있는 컴퓨터 시스템의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 3은 다수의 기능 블럭들 사이에서 중재 정책을 구현하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 4는 공유된 링크를 가지는 다수의 기능 블럭들 사이에서 중재 정책을 구현하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 5는 복수의 기능 블럭들로부터 하나 이상의 거래들을 수신하는 복수의 입력들을 가지는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 6은 기능 블럭들로부터 상이한 크기를 가지는 그룹들의 거래들을 수신하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다.
도 7은 서로 다른 브랜치들로부터 도달하는 거래들의 예시적인 시퀀스와, 중재 정책이 거래들의 시퀀스에 적용되는 경우에 결과적인 거래들의 글로벌 그룹화를 나타낸다.
도 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)은 회로, 버스들, 통신 링크들, 마이크로프로세서 등과 같이, 독립적으로 설계된 기능을 가지는 지적 재산 코어들(IP)을 포함할 수 있다. 또한, IP는 다양한 방식으로 구현될 수 있으며, 칩 상에 구현된 시스템과 같이 단일 집적 회로 상에 구현될 수 있다. 보다 세부적인 사항들은 아래에서 설명된다.
도 4는 공유된 링크를 가지는 다수의 기능 블럭들 사이에서 중재 정책을 구현하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다. 보다 세부적인 사항들은 아래에서 설명된다.
도 5는 복수의 기능 블럭들로부터 하나 이상의 거래들을 수신하는 복수의 입력들을 가지는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다. 복수의 기능 블럭들은 제 1 브랜치(502), 제 2 브랜치(504) 및 제 3 브랜치(508)와 같은 다양한 브랜치들을 통해 자신들의 거래들을 제공할 수 있다. 상기 기능 블럭들로부터의 거래들(510-514)은 제 1 거래(510), 제 2 거래(512) 및 제 3 거래(514)과 같은 상기 거래들 각각에 첨부된 에폭(epoch) 비트(516)를 포함할 수 있다. 중재 제어기(518)는 다양한 상태 레지스터들(520)을 포함하는 중재 로직을 포함할 수 있다. 상태 레지스터(520)는 브랜치 당 에폭 기준을 통해, 에폭 크레디트가 특정 브랜치에 기인하는지 여부를 표시할 수 있다. 중재 제어기(518)의 필드 구성 컴포넌트(522) 업스트림은 기능 블럭들로부터의 거래들(510-514)에 대한 표시를 첨부할 수 있다. 중재 제어기(518)의 필드 구성 컴포넌트(522) 업스트림은 에폭 비트의 설정 또는 재설정에 의해 상기 표시를 첨부할 수 있다.
중재 제어기(518)는 IP 코어들과 같은, 다수의 기능 블럭들로부터 요청들, 응답들 등과 같은, 하나 이상의 거래들(510-514)을 수신하는 다수의 입력들을 포함한다. 중재 제어기(518)는 중재 정책을 구현함으로써 복수의 기능 블럭들 사이에서 공유된 타겟 기능 블럭 또는 공유된 링크와 같은, 공유된 자원에 대한 접근 요청들을 중재한다. 중재 정책은 복수의 기능 블럭들로부터의 거래들(510-514)을 상 기 공유된 자원들에 의해 서비스하기 위한 글로벌 거래 그룹들로 분류한다. 중재 정책은 제 1 글로벌 그룹에 있는 모든 거래들이 다음 글로벌 거래 그룹에 있는 거래들이 서비스되기 전에 상기 공유된 자원에 의해 서비스되도록 유지한다.
중재 제어기(518)는 중재 정책을 용이하게 하기 위해 중재 로직을 포함할 수 있다. 중재 로직은 계층적으로 공유된 자원을 중재하는 직렬 접속된 중재 유니트들을 포함할 수 있다. 적어도 하나 이상의 중재 유니트들은 기능 블럭들의 서브세트로부터의 거래들을 중재한다. 게다가, 입력들에 대한 거래들을 중재 제어기(518)로 제공하는, 기능 블럭들의 위치 및/또는 링크들의 토폴로지와 같은, 기능 블럭들의 토폴로지는 중재 유니트들의 집합에 의해 달성된 중재 정책을 독립적으로 변화시킬 수 있다.
그리하여, 중재 로직은 자신에 의해 중재될 거래들을 제공하는 기능 블럭들의 물리적 토폴로지가 변경되더라도, 자신에 포함된 논리 회로에 대하여 임의로 변경해야할 필요없이 실질적으로 거래 중재 결과들의 유사한 글로벌 그룹화를 유지하는 중재 정책을 구현한다. 입력들에 대한 거래들(510-514)을 중재 제어기(518)로 제공하는 중재 포인트들의 물리적 배분은 주어진 거래가 중재 로직에 포함된 중재 정책의 애플리케이션 후에 공유된 자원들에 의해 서비스될 글로벌 거래 그룹에 포함되는지 여부에 대하여 독립적으로 변화할 수 있다.
중재 제어기(518)는, 이러한 예에서, 세 개의 서로 다른 인입 브랜치들(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)는 각각의 브랜치에 대한 에폭 롤오버 상태를 추적하기 위해, 브랜치 당 에폭 크레디트 비트와 같은, 레지스터(520)를 사용한다. 중재 제어기(518) 에폭이 롤오버되면, 새로운 거래 로컬 그룹을 개시하는 에폭 비트를 가진 거래들은 모든 브랜치들로부터 수용된다. 레지스터(520)는 또한 다수의 롤-오버들을 추적하기 위한 크레디트 카운터일 있으며, 크레디트 카운터는 에폭이 롤오버되는 경우에 증가하고 에폭 비트 세트를 이용한 요청이 중재를 획득하는 경우에 감소된다.
거래가 중재 로직을 통해 처리되면, 중재 제어기(518)는 출력(524)에 있는 결과적인 거래들의 글로벌 그룹에 있는 모든 거래들로부터 에폭 비트(516)를 제거 한다. 중재 제어기(516)는 출력(524)으로 전송된 제 1 거래에 새로운 에폭 비트를 첨부한다.
또한, 모든 에폭 크레디트 비트들(520)은 에폭이 롤오버될 때 중재를 획득하지 않는 브랜치들(502, 504, 508)에 대하여 설정된다. 에폭 크레디트 비트(520)가 설정되면, 에폭 크레디트 비트(520)는 브랜치 상에서 인입 에폭-시작 비트(516)를 취소시키고, 상기 브랜치를 통한 거래가 현재의 거래 글로벌 그룹에 참여하도록 허용한다. 그리하여 에폭 크레디트 레지스터(520)는 중재 제어기가 에폭이 롤오버될 때 준비된 거래가 없었거나, 또는 상기 시점에서 중재를 획득하지 않았던 브랜치들에 대하여 롤오버되었던 것을 기억한다. 그리하여, 에폭 크레디트 레지스터(520)는 어떤 브랜치들이(502, 504, 508) 글로벌 그룹 내에 거래를 가지고 있지 않았는지 추적하지만, 중재 제어기(518)가 롤오버되고 거래 글로벌 그룹의 배치를 완료하면 중재 정책마다 글로벌 그룹 내에 거래를 포함할 수 있다. 브랜치에 대한 에폭 크레디트 비트(520)는 자신이 인입 에폭-시작 비트(516)를 취소시킬 때 재설정된다.
에폭-기반 매커니즘은 출력에 대한 모든 다툼을 해결하는데 충분하지 못할 수 있으며, 이는 동일한 거래 글로벌 그룹의 일부인 다수의 거래들이 서로 다른 브랜치들을 통해 제출되는 것이 가능하기 때문이다. 이러한 거래들(510-514) 모두는 거래들의 글로벌 그룹의 출력(524)으로 전달하기에 적당하며, 이들의 순서가 결정되어야 한다. 이러한 이유로, 중재 제어기(518)는 브랜치들의 서비스 순서에 대하여 추적한다. 다수의 브랜치들이 동일한 거래 글로벌 그룹의 일부가 되도록 준비 된 거래들을 포함하면, 그 후에 중재 제어기(518)는 최근에 가장 적게 서비스되었던 브랜치가 처음에 통과하도록 허용한다. 연령에 기반한, 중재 정책의 제 2 부분은, 그렇지 않으면 중재에 대하여 동일한, 거래들에 대한 결합을 깨뜨린다.
도 6은 기능 블럭들로부터 상이한 크기를 가지는 그룹들의 거래들을 수신하는 중재 제어기의 실시예에 대한 블럭 다이어그램을 나타낸다. 각각의 기능 블럭은, 예를 들어, 네 개의 거래들을 제공한다. 중재 제어기의 필드 구성 컴포넌트 업스트림은 제 1 브랜치(602)와 관련된 기능 블럭에서 오는 각각의 다른 개별적인 거래(612) 상에만 에폭 비트(616)를 제공하거나 또는 첨부한다. 그러므로, 중재 제어기(518)는 제 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) 요구 사항들을 위한 것이거나 또는 상호 배제 동기화를 수행하기 위한 것이다. 중재 로킹은 거래와 함께 전달되는 추가적인 정보 비트를 이용하여 달성될 수 있다. 이러한 경우에, 주석은 중재의 (로킹에 대하여 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(106)를 출력할 수 있다. 중재 제어기(1018)는 수신기와 같은 중재 제어기(1018)의 컴포넌트 다운스트림으로부터, 특정한 공유된 타겟에 의해 서비스되는 중재 로직 거래들을 필터링하기 위한 통신을 수신할 수 있다. 상기 공유된 타겟이 사용중(busy)이기 때문에 상기 거래들은 중재 프로세스로부터 필터링될 것이다. 그리하여, 쓰레드 비지 신호(1070)는 서비스될 수 없는 쓰레드를 중재 프로세스로부터 제거하는 흐름 제어를 위해 중재 제어기(1068)의 컴포넌트 다운스트림에 의해 중재 제어기(1018)로 전송된다.
흐름 제어는 쓰레드 비지 신호(1070)와 같은 쓰레드-당 비트 벡터 신호를 통해 적용된다. 링크를 통한 쓰레드 X에 대응하는 쓰레드 비지 비트를 설정하는 것은 쓰레드 X를 위해 허용될 수 있는 추가적인 거래들이 없다는 것을 의미한다. 쓰레드 비지 정보는 링크를 사용하도록 준비된 논리 접속들 사이에서 물리 링크에 대한 접근을 중재하기 위해 전송 유니트에 의해 이용된다. 필드 구성 다운스트림 컴포넌트(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 레벨내에서, 거래들은 거래-기반의 방식의 그룹을 사용하여 서비스되고, 각각의 거래 그룹내에서, 거래들은 가장 이전 서비스된 메카니즘을 사용하여 순서가 결정된다. 처음부터 중재 제어기는 쓰레드 흐름 제어를 고려하기 위한 중재 정책(쓰레드비지를 통한), QoS 우선순위 레벨의 동적 할당(쓰레드감소를 통한), 및 원자수/로킹(록 비트를 통한)을 실행한다. 그러나, 모든 중재 제어기들이 상기와 같은 모든 기능들을 가져야 하는 것은 아니다. 중재 제어기는 상기 기능들의 서브세트를 사용할 수 있다. 상응하는 메카니즘을 제거함으로써 기능의 서브세트만을 가지는 중재 제어기들을 유도할 수 있다.
도 15는 중재 로직을 가지는 중재 제어기의 일 실시예의 블럭 다이어그램을 도시한다. 중재 로직(1520)을 갖는 중재 제어기(1518)의 일 실시예는 쓰레드비지, 록, 및 QoS 필터(1580), 다수의 브랜치 중재 로직 블럭들(1582), 쓰레드 중재 로직 블럭(1584), 및 AND 박스(1586)를 가질 수 있다.
기능 블럭들로부터 제공되는 거래들은 제 1 브랜치(1502) 또는 제 2 브랜치 (1504)를 통해 입력될 수 있다. 입력되는 유효 비트들 및 각각의 브랜치로부터의 에폭 마커들은 쓰레드비지, 록, 및 QoS 필터(1580)에서 필터링된다. QoS, 쓰레드감소, 쓰레드비지, 및 로킹은 모두 최상부 필터 로직 블럭내에서 처리된다. 중재 제어기의 다운스트림의 컴포넌트로부터 통신을 수신하는 쓰레드비지는 현재 시간에 사용중인 공유 자원쪽으로 진행되는 거래들을 필터링할 수 있다. 로킹은 거래들에 추가되는 표시들에 기초하며, 필터 로직(1580)내에서 실행된다.
쓰레드비지, 록, 및 QoS 필터(1580)는 쓰레드 흐름 제어가 적용되거나(쓰레드비지), 현재 쓰레드로 로킹되는 브랜치들로부터 제공되지 않거나, 더 높은 레벨로부터의 거래들이 제공될 때 더 낮은 QoS 우선순위 레벨로부터 제공되는 거래들을 필터링한다. 그 결과 필터링된 정보는 브랜치 중재 유니트(1582)로 통과된다.
다양한 브랜치들로부터의 거래들은 브랜치 중재 로직(1582)을 통해 처리된다. 쓰레드당 하나의 브랜치 중재 유니트(1582)가 제공된다. 이는 쓰레드로부터의 모든 거래들을 처리하고, 그 결과 유효한 에폭 마커를 쓰레드 중재 유니트(1584)에 제공한다. 브랜치 중재 로직(1582)은 가장 이전에 서비스된 거래 그룹화 메카니즘에 기초하여 어떤 브랜치가 중재를 성공시켜야하는지를 결정하며, 브랜치단 AND 박스(1586)로 입력을 전송한다.
기능 블럭들로부터의 쓰레드들은 쓰레드 중재 로직(1584)을 통해 처리된다. 쓰레드 중재 로직 유니트(1584)는 모든 브랜치들로부터 전체의 성공적인 쓰레드를 결정한다. 성공적인 쓰레드는 AND 박스(1586)를 통해 전송된다. AND 박스(1586)는 성공적인 쓰레드 정보를 전체의 위너들에게 제공하기 위한 쓰레드 정보 마다의 성공적인 브랜치와 조합한다. 따라서, AND 박스(1586)는 어떤 브랜치로부터의 쓰레드가 특정 중재를 성공하는지를 결정하고 제 1 글로벌 그룹으로 입력된다. 거래의 중재 프로세스가 계속됨에 따라, 가장 이전에 서비스된 인자인 서비스 품질 및 로킹 인자들은 모두 로킹된다. 결국, 공유되는 자원에 의해 서비스될 제 1 글로벌 거래 그룹이 형성된다.
따라서, 쓰레드 중재 유니트는 쓰레드가 위너였다면 각각의 브랜치 중재 유니트가 성공적인 브랜치를 동시에 계산하는 동안 성공적인 쓰레드를 결정한다. 최종 위너는 AND 박수내에서 쓰레드 중재 위너와 브랜치 중재 위너를 AND 연산함으로써 선택되며, 브랜치당 쓰레드선택 벡터를 생성한다.
이는 가능한 구현이며, 많은 다른 구현들이 가능함에 유의하자.
도 16는 쓰레드 중재 로직의 일 실시예의 블럭 다이어그램을 도시한다. 쓰레드 중재 로직(1684)은 에폭 롤-오버를 사용하는 제 1 중재 블럭(1685) 및 에폭 롤-오버를 사용하지 않는 제 2 중재 블럭(1686)을 가질 수 있다. 하나의 블럭은 에폭 롤-오버를 사용하지 않는 위너를 결정하는데 사용되고, 또다른 블럭은 에폭 롤-오버를 사용하는 위너를 결정하는데 사용된다. 만약, 에폭 롤-오버를 사용하지 않는 어떠한 위너도 존재하지 않으면, 에폭 롤-오버로부터의 결과치가 사용된다. 기본 중재 블럭은 쓰레드들의 서비스 순서의 히스토리가 주어질 때 다수의 쓰레드 요청들 중 어느 요청이 위너가 되어야 하는지를 결정하는데 관심을 갖는다. 가능한 기본 중재 블럭의 예시적인 구현은 도 18a 및 도 18b에 도시된다.
도 16을 참조하여, 각각의 쓰레드는 상기 로직으로 두개의 입력들을 제공할 수 있다. 거래를 의미하는 유효 입력이 제공되고 에폭 입력은 에폭 비트의 시작이 거래에 추가되는지의 여부를 표시한다. 유효 입력은 에폭 롤-오버 로직(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)은 3입력 AND 게이트들과 같이 모든 브랜치들로부터 브랜치가 중재 프로세스를 성공해야함을 표시하는 신호를 수신하기 위한 하나 또는 그이상의 공통 로직 게이트들(1892)을 더 포함할 수 있다. 중재 로직은 또한 NAND 게이트들과 같이 상태 레지스터(1891)로부터 입력을 수신하고 브랜치가 중재 프로세스를 성공해야하는지를 표시하는 금지 신호를 공통 로직 게이트(1892)로 제공하는 금지 로직 게이트들(1893)을 더 포함할 수 있다.
기본 중재 로직(1890)은 상태 레지스터들(1891)내에 다양한 상태 비트들을 포함한다. 상기 상태 비트들의 각각은 가장 이전에 서비스된 거래를 결정하는 것을 지원하는 요청 브랜치들 사이에서 상대적인 에이지(age)를 표시하는 상태를 유지한다. 상태 레지스터들(1891)의 각각은 인버터를 통해 NAND 게이트(1893)의 한 입력에 접속된다. NAND 게이트(1893)의 다른 입력은 유효한 거래가 제공되는지에 대한 입력을 수신한다. 이들 사이에서 위너가 결정된다.
도 18a는 3개의 요청자들을 가지는 예를 도시하지만, 동일한 방식이 2이상의 요청자들에게 가능하다. 상기 구현의 타이밍은 알고리즘의 복잡성이 변경되지 않기 때문에 요청자들의 수가 증가할 수록 매우 정밀하게 스케일링된다. 이는 거래 신호들의 더 많은 팬-아웃과 최종 AND 게이트의 더 많은 팬-인을 요구한다.
도 18b은 제 1 브랜치를 상태 레지스터내에 저장된 다른 브랜치들과 비교하여 결정된 서비스의 로우 및 컬럼 쌍 히스토리의 일 실시예에 대한 테이블을 도시한다. 상기 예에서, Br3-Br0와 같은 4개의 브랜치들은 중재 로직에 거래들을 제공한다. Br3은 가장 오래된 거래이며, 다시 말해서 가장 이전에 서비스된 거래를 가지는 브랜치이다. Br0는 가장 최근의 거래이며, 다시 말해서 가장 최근에 서비스된 거래를 가지는 브랜치이다.
기본 중재 로직(1890)은 요청자들 사이에서 상대적인 서비스 순서를 추적하며, 서비스 순서가 주어질 때 성공적인 요청자의 1-핫(hot) 벡터를 전송한다. 서비스 순서 상태는 요청자 거래당 하나의 로우들 및 컬럼들내에서 배열된다. 각각의 로우/컬럼 교점(테이블 셀)에서의 상태 비트는 로우 요청자가 컬럼 요청자보다 더 최근에 서비스되었는지에 대하여 기억한다. 상기 테이블에서 하부 좌측의 3각 부분(1894)은 상부 우측의 3각 부분(1895)의 반전이며, 상기 상태 비트들은 상부 우측 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의 시스템에 대하여 다수의 변형들이 가능하다.
중재 정책은 중재 특성들에 영향을 주지 않는 물리적인 분배를 허용하며, 레지스터 포인트들에 개입하고, 및 개입하지 않고 접속가능하다. 중재 정책은 모든 브랜치들이 항상 요청들을 준비하고 있는지의 여부에 관계없이 구현할 수 있다. 가변 크기의 로컬 거래 그룹들을 허용하는 에폭 마킹은 대역폭 믹싱을 제어하는데 사용될 수 있다. 중재 제어기는 멀티-쓰레딩 및 서비스 품질 특징들을 통합할 수 있는 온-칩 네트워크들에 대한 물리적으로 분배가능한 중재 메카니즘이 될 수 있다. 중재 제어기는 칩상에 물리적으로 중재를 분배할 수 있고, 잠재시 낮은 가격과 로직 게이트들을 유지하면서 높은 값의 서비스 품질을 통합할 수 있다. 잠재 제어기는 경로 단계들에 지장을 주면서 및/또는 주지 않으면서 중재 유니트들을 접속할 수 있다. 중재 제어기는 서비스-품질 특성들을 가지는 분산된 낮은-레이턴시의 중재를 제공한다.
일 실시예에서, 기계-판독가능한 매체 상에 여기에 개시된 장치들 및/또는 방법들을 표시하는 정보가 저장될 수 있다. 기계-판독가능한 매체는 기계(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 정보를 제공한다(예를 들면, 저장 및/또는 전송한다). 예를 들어, 기계-판독가능한 매체는 판독 전용 메모리(ROM), 랜덤 액 세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스들, DVD들, 전기, 광학, 음향 또는 다른 형태의 전파된 신호들(예를 들면, 판송파들, 하부 신호들, 디지털 신호들, EPROM들, EEPROM들, FLASH, 자기 또는 광학 카드들, 또는 전자 명령들을 저장하기에 적합한 임의의 형태의 매체를 포함할 수 있다. 더 느린 매체들은 더 빠르고 실용적인 매체로 캐싱될 수 있다. 기계-판독가능한 매체에 저장된 장치들 및/또는 방법들을 나타내는 정보는 여기에 개시된 장치들 및/또는 방법들을 생성하는 프로세스에서 사용될 수 있다. 예를 들어, 장치들 및/또는 방법들을 나타내는 정보는 IP 발생기 내부의 소프트 지시들 또는 유사하게 상기 정보를 저장하는 기계-판독가능한 매체내에 포함될 수 있다.
상기 설명의 몇몇 부분들은 예를 들면, 컴퓨터 메모리내부의 데이터 비트에 대한 동작들의 알고리즘들 및 심볼 표현들로 제공될 수 있다. 상기 알고리즘 설명들 및 표현들은 데이터 프로세싱 분야의 당업자가 다른 당업자에게 그들의 기술의 요점을 가장 효율적으로 전달하기 위해 사용되는 수단들이다. 여기에서 알고리즘은 일반적으로 원하는 결과를 유도하는 작용들에 대하여 자가-부합되는 시퀀스가 되는 것으로 고려된다. 상기 작용들은 물리적인 양들의 물리적인 조종을 필요로 한다. 일반적으로, 필수적인 것은 아니며, 상기 양들은 저장되고, 전송되고, 조합되고, 비교되고, 조종될 수 있도록 전기적이거나, 자기적이거나, 광학적인 신호의 형태를 갖는다. 공통의 사용을 복적으로 상기 신호들을 비트들, 값들, 엘리먼트들, 심볼들, 캐릭터들, 용어들, 숫자들 등등으로 참조하는 것은 편리한 것으로 증명되었다.
그러나, 상기 및 유사한 모든 용어들은 적절한 물리적인 양들과 연관되어야 하며, 상기 양들에 적용되는 라벨들에는 편리하지 않음을 유의해야 한다. 그렇지 않으면, 전술된 논의들에서 특히 명백한 것으로 언급되지 않았다면, 상기 설명을 통해 "처리" 또는 "계산" 또는 "산술" 또는 "결정" 또는 "표시" 등과 같은 용어들을 사용하는 설명은 컴퓨터 시스템의 레지스터들 및 메모리들 내에서 물리적인(전자) 양들로 표시되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 저장, 전송, 또는 디스플레이 디바이스들로 유사하게 표현된 다른 데이터로 조종 및 변환하는 컴퓨터 시스템 또는 유사한 전자 계산 디바이스의 동작 및 프로세스들을 참조한다.
본 명세서의 동작들을 수행하기 위한 장치는 본 발명을 수행할 수 있다. 상기 장치는 특정 필요 목적들을 위해 구성될 수 있거나, 범용 컴퓨터를 포함할 수 있거나, 상기 컴퓨터내에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화 또는 재구성될 수 있다. 상기 컴퓨터 프로그램은 플로피 디스크들, 하드 디스크들, 광학 디스크들, 소형 디스크-판독 전용 메모리들(CD-ROM), 디지털 다방면 디스크(DVD), 및 자기-광학 디스크들, 판독-전용 메모리들(ROM), 랜덤 액세스 메모리들(RAM), 전기적으로 프로그램가능한 판독 전용 메모리들(EPROM), 전기적으로 소거가능한 판독 전용 메모리들(EEPROM), FLASH 메모리들, 자기 또는 광학 카드들 등등, 또는 컴퓨터와 가깝거나 컴퓨터와 멀리 떨어진 전기 지시들을 저장하기 위한 임의의 형태의 매체와 같은 컴퓨터 판독가능한 저장 매체내에 저장될 수 있지만 이에 제한되는 것은 아니다.
여기에 제공되는 세부 사항들은 임의의 특정 컴퓨터 또는 다른 장치와 관련되는 것은 아니다. 다양한 범용 시스템들이 여기에 개시된 기술들에 따른 프로그램들과 함께 사용될 수 있거나, 요구되는 방법들을 수행하기 위해 더 특정화된 장치를 구성하는 것이 편리한 것으로 증명될 수도 있다. 예를 들어, 본 발명에 따른 임의의 방법들은 범용 프로세서를 프로그래밍하거나 하드웨어 및 소프트웨어의 임의의 조합에 의해 하드와이어 회로에서 구현될 수 있다. 당업자는 본 발명이 휴대용 디바이스들, 멀티프로세서 시스템들, 마이크로프로세서-기반 또는 프로그램가능한 고객 전자장치들, 디지털 신호 처리(DSP) 디바이스들, 셋톱 박스들, 네트워크 PC들, 소형컴퓨터들, 메인프레임 컴퓨터들 등등을 포함하는 전술된 것과 컴퓨터 시스템 구성들을 사용하여 실행될 수 있음을 인식할 것이다. 본 발명은 또한 작업들이 통신 네트워크를 통해 링크되는 원격 프로세싱 디바이스들에 의해 수행되는 분산된 계산 환경들에서 실행될 수 있다. 상기 통신 네트워크는 크기에 의해 제한되는 것이 아니라, 인터넷과 같은 WAN들로의 온칩 통신으로부터 제한될 수 있다.
본 발명의 몇몇의 특정 실시예들이 도시되었지만, 본 발명은 상기 실시예들에 제한되는 것은 아니다. 예를 들어, 당업자는 중재 회로들을 형성하는데 다양한 서로다른 회로 레이아웃들과 전자 컴포넌트들이 사용될 수 있음을 인식할 것이다. 거래 그룹들에서 최종 요청을 표시할 수 있다. 중재 유니트의 정확한 구현이 에폭-종료 마커가 사용될 때 달라지지만, 거래 기반의 중재 그룹의 전체적인 원칙은 동일하게 유지된다. 본 발명은 여기에서 설명된 특정 실시예들에 의해 제한되는 것이 아니라 청구항들에 의해 제한된다.

Claims (34)

  1. 다수의 기능 블럭들로부터의 하나 또는 그이상의 거래들을 수신하는 다수의 입력들을 가지고, 중재 정책을 수행함으로써 상기 다수의 기능 블럭들 사이에서 공유되는 자원으로 액세스하기 위한 요청들을 중재하는 중재 제어기 - 상기 중재 정책은 상기 다수의 기능 블럭들로부터 상기 거래들을 상기 공유되는 자원들에 의해 서비스하기 위한 글로벌 거래 그룹들로 그룹화하고, 제 1 글로벌 그룹내의 거모든 거래들은 다음 글로벌 거래 그룹들에서의 거래들을 서비스하기 전에 상기 공유되는 자원에 의해 서비스됨 - ; 및
    상기 중재 정책을 용이하게 하고, 상기 공유되는 자원들에 대하여 계층적으로 중재하는 직렬 접속된 중재 유니트들을 갖는 중재 로직 - 상기 중재 제어기의 입력들에 거래들을 제공하는 상기 기능 블럭들의 토폴로지는 상기 중재 유니트의 집합에 의해 수행되는 상기 중재 정책에 관계없이 변화할 수 있음 - 을 포함하는 중재 장치.
  2. 제 1항에 있어서, 상기 중재 장치는 시스템 내에서 칩상에 위치되는 것을 특징으로 하는 중재 장치.
  3. 제 1항에 있어서, 상기 중재 정책은 가장 이전에 서비스된 요청 인자에 기초하여 상기 글로벌 그룹내의 상기 기능 블럭들로부터의 상기 거래들의 순서를 가중 하는 것을 특징으로 하는 중재 장치.
  4. 제 1항에 있어서, 상기 중재 정책은 서비스 품질 인자에 기초하여 상기 기능 블럭들로부터의 상기 거래들을 가중하는 것을 특징으로 하는 중재 장치.
  5. 제 1항에 있어서, 상기 중재 정책은 멀티-쓰레드된 링크 인자에 기초하여 상기 기능 블럭들로부터의 상기 거래들을 가중하는 것을 특징으로 하는 중재 장치.
  6. 제 1항에 있어서, 상기 중재 로직은 브랜치 중재 로직 및 쓰레드 중재 로직을 포함하는 것을 특징으로 하는 중재 장치.
  7. 제 1항의 중재 장치를 나타내는 정보가 저장된 기계-판독가능한 매체.
  8. 제 1항에 있어서,
    로컬 거래 그룹의 시작 및 종료 포인트들을 제어하기 위해 하나 또는 그이상의 기능 블럭들로부터의 거래들에 대한 표시를 추가하기 위한 중재 제어기의 업스트림의 현장 구성가능한 컴포넌트를 더 포함하는 것을 특징으로 하는 중재 장치.
  9. 제 1항에 있어서,
    상기 공유되는 자원이 상기 표시된 거래들을 순차적으로 서비스하는 것을 보 장하기 위해 둘 또는 그이상의 거래들에 대한 표시를 추가하기 위한 상기 중재 제어기의 업스트림의 현장 구성가능한 컴포넌트를 더 포함하는 것을 특징으로 하는 중재 장치.
  10. 제 1항에 있어서, 공유되는 타겟에 의해 서비스되는 거래들의 중재 프로세스를 필터링하기 위해 상기 중재 로직에 통신하기 위한 상기 중재 제어기의 다운스트림의 컴포넌트를더 포함하는 것을 특징으로 하는 중재 장치.
  11. 제 1항에 있어서, 주어진 글로벌 거래 그룹은 상기 잠재 유니트들의 토폴로지에 관계없는 상기 중재 정책을 실행하고, 상기 주어진 글로벌 거래 그룹들에 포함될 상기 거래들을 수신하는 상기 중재 유니트들 사이에서 파이프라이닝(pipelining)한 후에 상기 글로벌 그룹내에서 거의 동일한 거래 집합을 가지는 것을 특징으로 하는 중재 장치.
  12. 제 1항에 있어서, 상기 중재 로직은 제 1 브랜치를 다른 브랜치들과 비교하는 서비스 히스토리의 로우 및 컬럼 쌍을 저장하는 상태 레지스터를 더 포함하는 것을 특징으로 하는 중재 장치.
  13. 제 12항에 있어서, 상기 중재 로직은,
    거래를 제공할 때 상기 각각의 기능 블럭들로부터 상기 브랜치가 상기 중재 프로세스를 성공해야함을 표시하는 신호를 수신하는 로직 게이트; 및
    상기 상태 레지스터로부터 신호를 수신하여, 상기 로직 게이트에 상기 기능 블럭으로부터의 상기 거래가 상기 중재 프로세스를 성공해야함을 표시하는 금지 신호를 제공하는 금지 로직 게이트를 더 포함하는 것을 특징으로 하는 중재 장치.
  14. 제 1항에 있어서,
    상기 중재 로직에 입력된 거래에 할당된 우선순위를 동적으로 감소시키도록 통신하는 상기 중재 제어기의 다운스트림의 컴포넌트를 더 포함하는 것을 특징으로 하는 중재 장치.
  15. 제 1항에 있어서,
    주어진 거래는 상기 중재 제어기의 입력으로 상기 거래를 제공할 때 상기 기능 블럭들의 물리적인 토폴로지와 관계없이 상기 제 1 글로벌 거래 그룹에 포함되는 거의 동일한 통계 확률 찬스를 가지는 것을 특징으로 하는 중재 장치.
  16. 중재 정책을 실행함으로써 다수의 기능 블럭들 사이에서 공유되는 자원으로 거래들을 중재하는 단계;
    상기 다수의 기능 블럭들로부터 상기 거래들을 상기 공유되는 자원에 의해 서비스되기 위한 글로벌 거래 그룹들로 그룹화하는 단계 - 제 1 글로벌 그룹내의 모든 거래들은 다음 글로벌 거래 그룹내의 거래들을 서비스하기 전에 상기 공유되 는 자원에 의해 서비스됨 - ; 및
    거래들이 중재될 때 상기 기능 블럭들의 물리적인 토폴로지에서 발생된 변경들에 관계없이 상기 제 1 글로벌 그룹에 포함된 거래들의 조합에 대하여 실질적으로 유사한 중재 결과들을 유지하는 단계를 포함하는 중재 방법.
  17. 제 16항에 있어서, 가장 이전에 서비스된 인자에 기초하여 상기 글로벌 그룹내의 상기 거래들의 서비스 순서의 우선순위를 결정하는 단계를 더 포함하는 것을 특징으로 하는 중재 방법.
  18. 제 16항에 있어서,
    제 1 기능 블럭으로부터의 둘 또는 그이상의 거래들이 상기 둘 또는 그이상의 기능 블럭들로부터의 거래들을 포함하는 글로벌 거래 그룹내에서 순차적인 순서로 서비스 되도록 로킹하는 단계를 더 포함하는 것을 특징으로 하는 중재 방법.
  19. 제 16항에 있어서,
    상기 거래들과 연관된 서비스 품질 표시에 기초하여 상기 글로벌 그룹내의 상기 거래들의 서비스 순서의 우선순위를 결정하는 단계를 더 포함하는 것을 특징으로 하는 중재 방법
  20. 제 16항에 있어서,
    상기 중재 정책에 따라 멀티-쓰레드된 링크로부터 거래들을 중재하는 단계를 더 포함하는 것을 특징으로 하는 중재 방법.
  21. 제 16항에 있어서, 상기 중재 정책을 수행하는 메카니즘의 다운스트림의 컴포넌트로부터 상기 중재 정책을 수행하는 메카니즘에 의해 중재될 거래에 할당된 우선순위 레벨을 동적으로 감소시키는것을 통신하는 단계를 더 포함하는 것을 특징으로 하는 중재 방법.
  22. 제 16항에 있어서,
    상기 공유되는 자원이 상기 거래들을 서비스할 준비가 되지 않았을때, 상기 공유되는 자원에 의해 서비스되는 상기 중재 프로세스 거래들을 필터링하는 단계를 더 포함하는 것을 특징으로 하는 중재 방법.
  23. 중재 정책을 수행함으로써 다수의 기능 블럭들 사이에서 공유되는 자원으로 거래들을 중재하기 위한 수단;
    상기 다수의 기능 블럭들로부터 상기 거래들을 상기 공유되는 자원에 의해 서비스되기 위한 글로벌 거래 그룹들로 그룹화하기 위한 수단 - 제 1 글로벌 그룹내의 모든 거래들은 다음 글로벌 거래 그룹내의 거래들을 서비스하기 전에 상기 공유되는 자원에 의해 서비스됨 - ; 및
    거래들이 중재될 때 상기 기능 블럭들의 물리적인 토폴로지에서 발생된 변경 들에 관계없이 상기 제 1 글로벌 그룹에 포함된 거래들의 조합에 대하여 실질적으로 유사한 중재 결과들을 유지하기 위한 수단을 포함하는 중재 장치.
  24. 제 23항에 있어서,
    가장 이전에 서비스된 인자에 기초하여 상기 글로벌 그룹내의 상기 거래들의 서비스 순서의 우선순위를 결정하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
  25. 제 23항에 있어서,
    상기 제 1 기능 블럭으로부터의 둘 또는 그이상의 거래들이 둘 또는 그이상의 기능 블럭들로부터의 거래들을 포함하는 글로벌 거래 그룹내에서 순차적인 순서로 서비스 되도록 로킹하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
  26. 제 23항에 있어서,
    상기 거래들과 연관된 서비스 품질 표시에 기초하여 상기 글로벌 그룹내의 상기 거래들의 서비스 순서의 우선순위를 결정하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
  27. 제 23항에 있어서,
    상기 중재 정책에 따라 멀티-쓰레드된 링크로부터 거래들을 중재하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
  28. 제 23항에 있어서,
    상기 중재 정책을 수행하는 메카니즘의 다운스트림의 컴포넌트로부터 상기 중재 정책을 수행하는 상기 메카니즘에 의해 중재될 거래에 할당된 우선순위 레벨을 동적으로 감소시키는 것을 통신하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
  29. 제 23항에 있어서,
    상기 공유되는 자원이 상기 거래들을 서비스할 준비가 되지 않았을때, 상기 공유되는 자원에 의해 서비스되는 상기 거래들의 중재 프로세스를 필터링하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
  30. 제 23항에 있어서, 제 1항의 중재 장치는 시스템내의 칩상에 위치되는 것을 특징으로 하는 중재 장치.
  31. 제 23항의 중재 장치를 나타내는 정보가 저장된 기계-판독가능한 매체.
  32. 제 23항에 있어서,
    상기 중재 정책을 실행하는 메카니즘 외부의 컴포넌트로부터 상기 제 1 기능 블럭으로부터의 개별 거래량이 상기 제 1 글로벌 그룹에 포함되는지를 동적으로 결정하는 것을 통신하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
  33. 제 23항에 있어서,
    상기 제 1 글로벌 거래 그룹의 일부로서 포함되기에 적합한 모든 기능 블럭으로부터 제공되는 거래 없이 상기 제 1 글로벌 그룹의 구성을 완료하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
  34. 제 23항에 있어서,
    파이프라인 레지스터 포인트들이 상기 중재 정책을 실행하는 메카니즘내에 존재하는지의 여부와 관계없이 상기 제 1 글로벌 그룹에 포함된 거래들의 조합에 대하여 실질절으로 유사한 중재 결과들을 유지하기 위한 수단을 더 포함하는 것을 특징으로 하는 중재 장치.
KR1020057019847A 2003-04-18 2004-04-08 기능 블럭들 사이에서 중재를 위한 다양한 방법들 및장치들 KR100943104B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20060008908A true KR20060008908A (ko) 2006-01-27
KR100943104B1 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100739716B1 (ko) * 2005-08-11 2007-07-13 삼성전자주식회사 공유 자원들의 네트워킹을 제어하는 방법 및 장치
KR20200121903A (ko) * 2019-03-08 2020-10-26 모빌아이 비젼 테크놀로지스 엘티디. 공유 자원에 대한 우선순위 기반 액세스 관리

Families Citing this family (81)

* 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
US8504992B2 (en) 2003-10-31 2013-08-06 Sonics, Inc. Method and apparatus for establishing a quality of service model
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
US8407433B2 (en) * 2007-06-25 2013-03-26 Sonics, Inc. Interconnect implementing internal controls
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
WO2007071889A1 (en) * 2005-12-22 2007-06-28 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
US7664901B2 (en) * 2007-03-27 2010-02-16 Arm Limited Data processing apparatus and method for arbitrating access to a shared resource
US8452907B2 (en) * 2007-03-27 2013-05-28 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
JP4706030B2 (ja) * 2007-06-19 2011-06-22 富士通株式会社 キャッシュ制御装置及び制御方法
US8108648B2 (en) * 2007-06-25 2012-01-31 Sonics, Inc. Various methods and apparatus for address tiling
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 삼성전자주식회사 버스 중재 장치 및 방법
US8744602B2 (en) 2011-01-18 2014-06-03 Apple Inc. Fabric limiter circuits
US8649286B2 (en) * 2011-01-18 2014-02-11 Apple Inc. Quality of service (QoS)-related fabric control
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
US20180373573A1 (en) 2015-07-24 2018-12-27 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
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
US10891414B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Hardware-software design flow 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
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
US11336287B1 (en) 2021-03-09 2022-05-17 Xilinx, Inc. Data processing engine array architecture with memory tiles
US11520717B1 (en) 2021-03-09 2022-12-06 Xilinx, Inc. Memory tiles in data processing engine array
US20230057903A1 (en) 2021-08-20 2023-02-23 Xilinx, Inc. Controlling a data processing array using an array controller
US11848670B2 (en) 2022-04-15 2023-12-19 Xilinx, Inc. Multiple partitions in a data processing array

Family Cites Families (32)

* 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
US6092158A (en) 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100739716B1 (ko) * 2005-08-11 2007-07-13 삼성전자주식회사 공유 자원들의 네트워킹을 제어하는 방법 및 장치
US8127030B2 (en) 2005-08-11 2012-02-28 Samsung Electronics Co., Ltd. Method and apparatus for controlling network of shared resources
KR20200121903A (ko) * 2019-03-08 2020-10-26 모빌아이 비젼 테크놀로지스 엘티디. 공유 자원에 대한 우선순위 기반 액세스 관리
US11275606B2 (en) 2019-03-08 2022-03-15 Mobileye Vision Technologies Ltd. Priority based management of access to shared resources
US11868801B2 (en) 2019-03-08 2024-01-09 Mobileye Vision Technologies Ltd. Priority based management of access to shared resources

Also Published As

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

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
US7986706B2 (en) Hierarchical pipelined distributed scheduling traffic manager
US10261926B2 (en) Semaphore for multi-core processor
CN107395665A (zh) 一种区块链业务受理及业务共识方法及装置
CN107360206A (zh) 一种区块链共识方法、设备及系统
US20020141256A1 (en) Apparatus and method for efficiently sharing memory bandwidth in a network processor
CN107003962A (zh) 高速缓存一致代理到一致结构的低开销分层连接
WO1998037530A2 (en) Apparatus and method for managing digital resources by controlling tokens associated with digital resources
US20240160447A1 (en) Ticket Locks with Enhanced Waiting
US8478920B2 (en) Controlling data stream interruptions on a shared interface
US20170010986A1 (en) Adaptive Resource Management in a Pipelined Arbiter
US9727499B2 (en) Hardware first come first serve arbiter using multiple request buckets
US10289331B2 (en) Acceleration and dynamic allocation of random data bandwidth in multi-core processors
CN113902128A (zh) 改善边缘设备利用效率的异步联邦学习方法、装置及介质
US8156265B2 (en) Data processor coupled to a sequencer circuit that provides efficient scalable queuing and method
CN101196835B (zh) 用于在线程之间通信的方法和装置
CN101196833A (zh) 用于存储器利用的方法和装置
US10942775B2 (en) Modified central serialization of requests in multiprocessor systems
US8468536B2 (en) Multiple level linked LRU priority
EP4055486A1 (en) Enabling atomic memory accesses across coherence granule boundaries in processor-based devices
US9626306B2 (en) Global event chain in an island-based network flow processor
US9396081B1 (en) Method, apparatus and system for managing queue operations of a test bench environment
US20110320778A1 (en) Centralized serialization of requests in a multiprocessor system

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