KR20090051238A - 배리어 동작들의 방송 제약 방법 및 장치 - Google Patents

배리어 동작들의 방송 제약 방법 및 장치 Download PDF

Info

Publication number
KR20090051238A
KR20090051238A KR1020097006527A KR20097006527A KR20090051238A KR 20090051238 A KR20090051238 A KR 20090051238A KR 1020097006527 A KR1020097006527 A KR 1020097006527A KR 20097006527 A KR20097006527 A KR 20097006527A KR 20090051238 A KR20090051238 A KR 20090051238A
Authority
KR
South Korea
Prior art keywords
data transfer
slab
bus transaction
bus
devices
Prior art date
Application number
KR1020097006527A
Other languages
English (en)
Other versions
KR101056153B1 (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 KR20090051238A publication Critical patent/KR20090051238A/ko
Application granted granted Critical
Publication of KR101056153B1 publication Critical patent/KR101056153B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)
  • Small-Scale Networks (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Crystals, And After-Treatments Of Crystals (AREA)

Abstract

약하게 오더링된 프로세싱 시스템은 강하게 오더링된 데이터 전송 버스 트랜잭션들을 실행 동기화 버스 트랜잭션 또는 "메모리 배리어" 버스 트랜잭션으로 만든다. 전역적 관측가능성을 보장하는 슬래브 디바이스는 메모리 배리어 프로토콜의 "옵트 아웃(opt out)"일 수 있다. 다양한 실시예들에서, 옵트-아웃 결정은 신호를 어서팅하는 각각의 슬래브 디바이스에 의해 동적으로 구성되거나, 슬래브 디바이스들을 검사(polling)하고 전역적 관측가능성 레지스터에서 해당 비트들을 설정함으로써 POST(Power-On Self Test) 동안 시스템-와이드를 설정하거나, 또는 슬래브 디바이스만이 메모리 배리어 프로토콜에 참여하는 비순차적(out-of-order) 데이터 전송 동작들을 수행할 수 있도록 시스템 설계자들에 의해 배선연결될 수 있다.

Description

배리어 동작들의 방송 제약 방법 및 장치{METHOD AND APPARATUS FOR CONDITIONAL BROADCAST OF BARRIER OPERATIONS}
본 발명은 전반적으로 컴퓨터 분야에 관한 것으로, 특히 메모리 배리어 버스 동작들을 제약적으로 방송하는 방법 및 장치에 관한 것이다.
컴퓨터들 및 다른 일렉트로닉 시스템들 및 디바이스들은 광범위한 분야들에서 계산 업무들(computational tasks)을 수행한다. 이러한 시스템들 및 디바이스들은 다양한 독립적인 특정기능 회로들 또는 모듈들, 이를 테면, 프로세서들, 수학 보조프로세서들(co-processors), 비디오 및 그래픽 엔진들, DMA 제어기들, GPS 수신기들, 전용 압축 또는 암호화 회로들, 및 이와 유사한 것들을 통합시킴으로써 직접적 계산(straight computation)을 능가하는 기능이 점차적으로 통합된다. 이러한 디바이스들과 메모리 사이, 및 디바이스들 자체들 간의 높은-대역폭 데이터 전송은 원하는 성능 레벨을 달성하는 데 있어 중요하다. 데이터 통신 버스는 프로세싱 시스템의 디바이스들 또는 모듈들 간의 공유형 통신(shared communication) 링크를 제공하는 공지된 구조이다.
공유형 버스상의 디바이스들의 2가지 공통 로직은 "마스터(master)" 및 "슬래브(slave)" 디바이스들을 포함한다. 마스터 디바이스들은 버스 트랙잭 션(transaction)을 초기화하며, 버스로의 액세스를 위해, 그리고 일부 시스템에서는 버스 대역폭의 공유를 위해 공통적으로 서로 중재된다. 슬래브 디바이스들은 마스터 디바이스들에 의해 초기화되는 데이터 전송 버스 트랜잭션에 응답하여, 버스 트랜잭션 기록에 응답하는 마스터 디바이스로부터 데이터를 허용하고 버스 트랜잭션 판독에 응답하는 마스터 디바이스에 데이터를 제공한다. 대부분의 슬래브 디바이스들은 공유형 버스상에서 해당 버스 트랜잭션이 이루어지는 순서로 데이터 전송 동작들을 실행한다.
다수의 경우, 시스템 성능은 데이터 전송 동작들, 이를 테면 예를 들어 메모리 액세스들이 비순차적으로(out of order) 수행되게 함으로써 최적화될 수 있다. 예를 들어, 메모리 동작들의 시퀀스는 새로운 페이지가 개방되기 이전에, 메모리의 동일한 페이지에 대한 모든 동작들이 실행되도록 재정렬될 수 있다. 일반적으로 메모리 동작들이 재정렬되게 허용되는 프로세싱 시스템들은 "약하게 오더링된(weakly-ordered)" 프로세싱 시스템들로 지칭된다.
반대로, 해당 버스 트랜잭션들과 동일한 순서로 메모리 동작들이 수행될 것을 요구하는 프로세싱 시스템들은 "강하게 오더링된(strongly-ordered)" 프로세싱 시스템들로 지칭된다. 메모리 동작들이 순서대로 실행되는 경우 임의의 시간에서 메모리 상태들이 메모리 프로세서(들)에 대해 나타난다면, 강하게 오더링된 시스템들에서의 슬래브 디바이스들은 실제로 버스 트랜잭션 순서를 벗어나게 메모리 동작들을 수행할 수 있다는 것이 주목된다. 이러한 특징들은 "전역적 관측가능성(global observability)"으로 공지되어 있다. 항상 수신된 순서로 데이터 전송 동작들을 실행하는 간단한 슬래브 디바이스들은 본질적으로 전역적으로 관측가능하다(globally observable). 비순차적으로 데이터 전송 동작들을 실행할 수 있는 다른 슬래브 디바이스들은 데이터 전송 동작 어드레스들을 "스누핑(snoop)"하며, 버스 트랜잭션 순서로 동일한 어드레스에 대한 데이터 전송 동작들을 실행한다. 이러한 형태의 슬래브 디바이스들 또한 전역적으로 관측가능하다. 버스 트랜잭션 순서와 상관없이 데이터 전송 동작들을 실행하는 슬래브 디바이스들은 전역적으로 관측가능하지 않다.
소정의 경우, 약하게 오더링된 프로세싱 시스템에서도, 데이터 전송 동작 순서는 정확한 동작을 보장해야 한다. 예를 들면, 애플리케이션은 프로세서가 메모리 위치로부터 판독되기 이전에, 프로세서가 메모리에 데이터를 기록할 것을 요구할 수 있다. 이러한 동작들의 재정렬(reordering)은 판독 동작에서 부정확한 데이터 복귀를 야기시킬 수 있다.
다양한 종래의 기술들은 약하게 오더링된 프로세싱 시스템에서 오더링된(ordered) 데이터 전송 동작들을 실행하는데 이용된다. 한가지 기술은 그 이전에 모든 데이터 전송 동작들이 실행될 때까지 특정한 데이터 전송 버스 트랜잭션을 간단히 지연시키는 것이다. 이전의 예에서, 프로세서는 기록 동작 데이터가 메모리 위치에 기록되었다는 것을 보증하는 표시를 수신할 때까지, 판독 요청 송출을 지연시킬 수 있다. 명확하게 데이터 전송 동작을 순서화시키기 위한 프로그램 실행 중단은 성능에 악영향을 미친다.
약하게 오더링된 프로세싱 시스템에서 오더링된 데이터 전송 동작들을 실행 하는 또 다른 기술은 버스 프로토콜의 일부로서 실행 동기화 버스 트랜잭션을 한정하는 것으로, 이는 "메모리 배리어(memory barrier)"로 공지되어 있다. 메모리 배리어는 메모리 배리어의 송출 이전에 마스터 디바이스에 의해 송출된 모든 데이터 전송 버스 트랜잭션들이 실행되게 하거나, 또는 메모리 배리어 이후에 마스터 디바이스에 의해 송출되는 임의의 데이터 전송 버스 트랜잭션이 실행되었다는 것을 나타내는 버스 트랜잭션이다. 임의의 메모리 배리어는 마스터 및 슬래이브 디바이스들 간에 임의의 데이터 전송을 수반하지 않는 버스 트랜잭션이다. 메모리 배리어 동작은 마스터 디바이스에 의해 명시적으로 초기화될 수 있다. 대안적으로 또는 부가적으로, 메모리 배리어 동작은 마스터 디바이스에 의해 초기화되는 강하게 오더링된 데이터 전송 동작에 응답하여 버스 제어기에 의해 발생될 수 있다. 이전 예에서, 메모리 배리어 트랜잭션은 판독 버스 트랜잭션을 송출하기 이전에 프로세서에 의해 송출될 수 있다. 메모리 배리어는 판독 동작이 실행되기 이전에 기록 동작(및 앞서 송출된 임의의 다른 데이터 전송 동작)이 실행되게 한다. 메모리 배리어들은 본 출원의 양도인에게 양도되었으며 2005년 10월 19일자로 출원된 "Enforcing Strongly-Ordered Requests In A Weakly-Ordered Processing System"란 명칭의 공동-계류중인 미국 특허 출원 시리얼 번호 11/253,307호에 초기화되어 있고, 이는 본 발명에 참조로 통합된다.
메모리 배리어는 다중 슬래브 디바이스들을 갖는 프로세싱 시스템들에서는 불충분할 수 있다. 이러한 시스템들에서, 오더링 제약을 강화시키기 위해, 메모리 배리어 트랜잭션은 강하게 오더링된 데이터 전송 버스 트랜잭션 또는 메모리 배리 어 동작을 송출하는 마스터 디바이스에 의해 액세스될 수 있는 슬래브 디바이스 마다 전송되어야 한다. 메모리 배리어의 긍정응답(acknowledgment)은 강하게 오더링된 데이터 전송 버스 트랜잭션, 또는 메모리 배리어 동작에 이은 버스 트랜잭션이 송출되기 이전에 각각의 슬래브 디바이스들로부터 수신되어야 한다. 따라서, 메모리 배리어에 의해 부과되는 지연은 응답에 대해 가장느린 슬래브 디바이스에 의해 결정된다. 이는 특히 느린 슬래브 디바이스가 메모리 배리어와 상관없이 버스 트랜잭션 순서로 데이터 전송 동작을 실행하는 경우, 성능에 악영향을 미칠 수 있다.
본 출원의 양수인에게 양도되었으며, 본 발명에 전체로서 참조되어 통합되는 2005년 10월 20일자로 "Minimizing Memory Barriers When Enforcing Strongly-Ordered Requests in a Weakly-Ordered Processing System"이란 명칭으로 출원된 공동-계류중인 미국 특허 출원 시리얼 제 11/254,939호는 메모리 배리어들을 동적으로 최소화시키는 시스템 및 방법을 초기화한다. 각각의 슬래브 디바이스와 관련되는 상태 레지스터는 현재의 슬래브가 데이터 전송 버스 트랜잭션들을 수신할 수 있는 각각의 마스터 디바이스로부터 계류중인(pending)(실행되지 않음) 데이터 전송 동작을 포함하는지 여부를 퍼-마스터 베이시스(per-master basis) 상에 표시한다. 특정 슬래브 디바이스가 특정 마스터 디바이스로부터 임의의 계류중인 데이터 전송 동작들을 포함하지 않는다는 것을 나타내면, 마스터 디바이스로부터 메모리 배리어는 슬래브 디바이스로 전파될 필요가 없다. 이런 방식에서, 메모리 배리어들은 버스 트랜잭션 오더링이 요구되는 것이 필요한 경우에만 전파된다. 즉, 메모리 배리어는 강하게 오더링된 데이터 전송 버스 트랜잭션 또는 메모리 배리어 동작 을 요구하는 마스터 디바이스로부터 계류중인(이전에 송출된) 데이터 전송 동작들을 포함하는 슬래브 디바이스들로만 지향된다.
대부분의 종래의 시스템들은 본질적으로 전역적 관측가능성을 제공하는 적어도 소정의 슬래브 디바이스들을 포함한다. 이러한 슬래브 디바이스들과 관련하여, 메모리 배리어 트랜잭션이 슬래브 디바이스로 지향되는지 또는 지향되지 않는지 여부를 결정하기 위해, 슬래브 디바이스가 특정 마스터로부터 계류중인 데이터 전송 동작을 포함하는지 여부를 동적으로 모니터링할 필요는 없다.
본 발명에 초기화되는 하나 이상의 실시예들에 따라, 전역적 관측가능성을 보장하는 슬래브 디바이스는 "옵트-아웃(opt out)" 메모리 배리어 프로토콜일 수 있다. 다양한 실시예들에서, 옵트-아웃 결정은 신호를 어서팅(asserting)하는 각각의 슬래브 디바이스에 의해 동적으로 이루어지거나, 이들의 전역적 관측가능성을 확인하도록 슬래브 디바이스들의 상태 레지스터들을 조사함으로써(polling), POST(Power-On Self Test) 동안 시스템-와이드(system-wide)를 설정하거나, 소프트웨어에 의해 설정되거나, 또는 시스템 설계자들에 의해 배선연결(hardwired)되어, 비순차적(out-of-order) 데이터 전송 동작들을 실행할 수 있는 슬래브 디바이스들만이 메모리 배리어 프로토콜에 참여할 수 있다. 이러한 옵트-아웃 결정은 시스템 성능을 개선시키며 필요에 따라 메모리 배리어 동작들만이 슬래브 디바이스들로 전파되게 함으로써 전력 소모를 감소시켜, 전역적으로 관측가능한 슬래브 디바이스로부터 메모리 배리어 긍정응답(acknowledgment)과 관련된 지연이 소거된다.
일 실시예는 약하게 오더링된 시스템과 관련된다. 시스템은 다수의 슬래브 디바이스들, 및 각각 하나 이상의 슬래브 디바이스들로 데이터 전송 버스 트랜잭션들을 지향시키도록 구성되는 2개 이상의 마스터 디바이스들을 포함한다. 또한, 시스템은 마스터 및 슬래브 디바이스들 간의 데이터 전송 버스 트랜잭션을 실행하고, 또한 마스터 디바이스로부터의 강하게 오더링된 데이터 전송 버스 트랜잭션 요청에 응답하여 실행 동기화 버스 트랜잭션을 전역적으로 관측가능하지 않은 하나 이상의 슬래브 디바이스들로 지향시키도록 구성된 버스 상호접속부를 더 포함한다.
또 다른 실시예는 약하게 오더링된 프로세싱 시스템에서 2개 이상의 슬래브 디바이스들로 하나 이상의 마스터 디바이스들로부터의 데이터 전송 버스 트랜잭션들을 지향시키도록 동작하는 버스 상호접속부에 관한 것이다. 버스 상호접속부는 데이터 전송 버스 트랜잭션 요청들을 대기시키도록 동작하는 버스 레지스터, 및 버스 레지스터로부터 데이터 전송 버스 트랜잭션 송출(issuance)을 제어하도록 동작하며 마스터 디바이스로부터의 강하게 오더링된 데이터 전송 버스 트랜잭션 요청에 응답하여 전역적으로 관측가능하지 않은 하나 이상의 슬래브 디바이스들로 실행 동기화 버스 트랜잭션을 송출하도록 동작하는 제어기를 포함한다.
또 다른 실시예는 하나 이상의 마스터 디바이스들 및 2개 이상의 슬래브 디바이스들을 포함하는 약하게 오더링된 프로세싱 시스템에서 강하게 오더링된 데이터 전송 버스 트랜잭션을 실행하는 방법에 관한 것이다. 슬래이브 디바이스들이 전역적으로 관측가능하다는 표시가 유지된다. 실행 동기화 버스 트랜잭션은 마스터 디바이스로부터 강하게 오더링된 데이터 전송 버스 트랜잭션 요청에 응답하여 전역적으로 관측가능하지 않은 하나 이상의 슬래브 디바이스로 송출된다.
도 1은 약하게 오더링된 프로세싱 시스템의 기능 블록도이다.
도 2는 약하게 오더링된 프로세싱 시스템에서 버스 상호접속부의 기능 블록도이다.
도 3은 약하게 오더링된 프로세싱 시스템에 대한 버스 상호접속부에서 제어기의 일 실시예에 대한 기능 블록도이다.
도 4는 약하게 오더링된 프로세싱 시스템에 대한 버스 상호접속부에서 제어기의 또 다른 실시예에 대한 기능 블록도이다.
첨부되는 도면들과 관련하여 하기에 초기화되는 상세한 설명은 본 발명의 다양한 실시예들의 설명을 위한 것으로 본 발명이 실행될 수 있는 실시예만을 나타내고자 하는 것은 아니다. 특히, 설명을 위해, 실시예들은 2개 이상의 메모리 제어기들에 메모리 액세스 요청들을 송출하는 하나 이상의 프로세서들, 및 버스 상호접속부를 포함하는 프로세싱 시스템과 관련하여 초기화된다. 그러나, 본 발명은 공유형 버스 시스템에서 슬래브 디바이스들에 대해 데이터 전송 버스 트랜잭션들을 송출하는 임의의 마스터 디바이스들에 적용될 수 있으며, 프로세서들 및 메모리 제어기들로 제약되지 않는다.
도 1은 약하게 오더링된 프로세싱 시스템의 기능 블록도이다. 프로세싱 시 스템(100)은 컴퓨터 또는 휴대용 전자 디바이스, 내장형 시스템, 분산형 시스템, 또는 이와 유사한 것을 포함하는 다른 계산(computional) 시스템에 배치될 수 있다. 프로세싱 시스템(100)은 집적회로, 이산 부품들(components), 또는 이들의 임의의 조합으로 구현될 수 있다. 본 발명의 실시예들의 설명을 위해 필요한 프로세싱 시스템(100)의 단지 일부분들만이 도 1에 도시된다. 당업자들은 각각의 특정 분야를 위한 프로세싱 시스템(100)을 구현하는 최상의 방법을 인식할 것이다.
도 1에 도시된 프로세싱 시스템(100)은 공유형 버스(106)를 통해 메모리 디바이스들(104a-104c)과 통신하는 프로세서들(102a-102c)을 포함한다. 임의의 특정 분야에 요구되는 프로세서들 및 메모리 디바이스들의 실제 개수는 요구되는 계산 능력(computing power) 및 전체 설계 제약들에 따라 변할 수 있다. 버스 상호접속부(108)는 점-대-점(point-to-point) 스위칭 접속들을 이용하여 프로세서들(102a-102c)과 메모리 디바이스들(104a-104c) 사이에서 버스 트랜잭션들을 관리하는데 이용될 수 있다. 버스 상호접속부(108)의 적어도 일 실시예에서, 2개 이상의 버스 트랜잭션이 동시에 이루어질 수 있도록 다중의 다이렉트 링크들(direct links)이 제공될 수 있다.
하나 이상의 프로세서들(102a-102c)은 운영 체제 또는 다른 소프트웨어의 제어 하에 명령들을 실행하도록 구성될 수 있다. 명령들은 하나 이상의 메모리 디바이스들(104a-104c)에 상주할 수 있다. 또한, 데이터는 메모리 디바이스들(104a-104c)에 저장될 수 있고 일정 명령들을 실행하도록 프로세서들(102a-102c)에 의해 검색될 수 있다. 이러한 명령들의 실행으로 발생되는 새로운 데이터는 메모리 디 바이스들(104a-104c)에 다시 기록될 수 있다. 각각의 메모리 디바이스(104a-104c)는 업계에 공지된 것처럼 메모리 제어기(미도시) 및 저장 매체(미도시)를 포함할 수 있다.
각각의 프로세서(102a-102c)에는 버스 상호접속부(108)와의 통신을 위해 버스(106) 상에 전용 채널(106a-106c)이 제공될 수 있다. 유사하게, 버스 상호접속부(108)는 각각의 메모리 디바이스(104a-104c)와의 통신을 위해 버스 상의 전용 채널(106d-106f)을 이용할 수 있다. 예를 들어, 제 1 프로세서(102a)는 버스(106) 상의 전용 채널(106a)을 통해 데이터 전송 버스 트랜잭션 요청을 전송함으로써 타겟 메모리 디바이스(104b)를 액세스할 수 있다. 버스 상호접속부(108)는 데이터 전송 버스 트랜잭션 요청의 어드레스로부터 타겟 메모리 디바이스(104b)를 결정하고, 버스(106) 상의 적절한 채널(106e)을 통해 타겟 메모리 디바이스(104b)로 데이터 전송 버스 트랜잭션을 송출한다. 데이터 전송 버스 트랜잭션은 기록 트랜잭션, 판독 트랜잭션, 또는 데이터 전송과 관련된 임의의 다른 버스 트랜잭션일 수 있다. 발신(originating) 프로세서(102a-102c)는 버스(106) 상에 페이로드(payload)를 갖는 적절한 어드레스를 배치하고 기록 인에이블 신호를 어서팅함으로써 기록 트랜잭션을 타겟 메모리 디바이스(104a-104c)에 송출할 수 있다. 발신 프로세서(102a-102c)는 버스(106) 상에 적절한 어드레스를 배치하고 판독 인에이블 신호를 어서팅함으로써 판독 트랜잭션을 타겟 메모리 디바이스(104a-104c)에 송출할 수 있다. 판독 요청에 응답하여, 타겟 메모리 디바이스(104a-104c)는 발신 프로세서(102a-102c)에 다시 페이로드를 전송한다. 또한 발신 프로세서(102a-102c)는 데이터 전 송 버스 트랜잭션, 이를 테면 메모리 배리어 트랜잭션이 아닌 버스 트랜잭션들을 송출할 수도 있다.
프로세싱 시스템(100)의 적어도 일 실시예에서, 프로세서들(102a-102c)은 각각의 메모리 액세스 요청을 갖는 속성(attribute)을 전송할 수 있다. 상기 속성은 데이터 전송 버스 트랜잭션의 성질을 나타내는 임의의 파라미터일 수 있다. 상기 속성은 어드레스 채널을 통해 어드레스와 함께 전송될 수 있다. 대안적으로, 상기 속성은 측파대(sideband) 시그널링 또는 소정의 다른 방법을 이용하여 전송될 수 있다. 상기 속성은 데이터 전송 트랜잭션 요청이 강하게 오더링되었는지 또는 강하게 오더링되지 않았는지를 나타내는데 이용될 수 있다. "강하게 오더링된(strongly-ordered)" 요청은 비순차적으로 실행될 수 없는 데이터 전송 버스 트랜잭션 요청으로 간주된다.
버스 상호접속부(108)는 프로세서들(102a-102c)로부터의 각각의 데이터 전송 버스 트랜잭션 요청에 대한 속성을 모니터할 수 있다. 속성이 강하게 오더링된 데이터 전송 버스 트랜잭션 요청을 나타내면, 강하게 오더링된 데이터 전송 버스 트랜잭션이 지향되는 슬래브 디바이스를 제외하고, 버스 상호접속부(108)는 트랜잭션에 대한 오더링 제약이 마스터로부터의 버스 트랜잭션들을 허용하는 각각의 슬래브 디바이스에 대해 가해지게 하여, 데이터 전달 버스 트랜잭션들의 비순차적 실행을 가능케한다. 예로써, 제 1 프로세서(102a)로부터 타겟 메모리 디바이스(104a)로의 데이터 전송 버스 트랜잭션 요청이 상기 속성에 포함될 수 있다. 버스 상호접속부(108)는 상기 속성으로부터 트랜잭션이 강하게 오더링되는지 여부를 결정할 수 있다. 버스 상호접속부(108)가 트랜잭션이 강하게 오더링되었다고 결정할 경우, 버스 상호접속부(108)는 타겟 메모리 디바이스(104a)와 달리, 제 1 프로세서(102a)가 액세스를 가능케하여 버스 트랜잭션 순서를 따르지 않는 데이터 전송 버스 트랜잭션들이 실행될 수 있는 각각의 메모리 디바이스로 메모리 배리어를 전송한다. 또한, 버스 상호접속부(108)는 메모리 배리어없이 강하게 오더링된 데이터 전송 버스 트랜잭션을 타겟 메모리(104a)로 전송하며, 이는 타겟 메모리 디바이스(104a)는 데이터 전송 버스 트랜잭션과 관련된 속성으로 인해 강하게 오더링된 요청을 절대적으로 처리하기 때문이다. 대안적으로, 프로세서(102a)는 강하게 오더링된 데이터 전달 버스 트랜잭션을 송출하기 이전에 메모리 배리어 버스 트랜잭션을 송출할 수 있다.
도 2는 약하게 오더링된 프로세싱 시스템에서 예시적인 버스 상호접속부(108)를 나타내는 기능 블록도이다. 버스 상호접속부가 실제로 구현되는 방식은 디자인 사항과 관련될 수 있다. 당업자들은 다양한 디자인들의 상호교환성, 및 각각의 특정 분야에 대해 본 발명에서 초기화되는 기능을 구현하는 최상의 방법을 인식할 것이다.
도 2를 참조로, 버스 레지스터(202)는 버스(106)로부터 정보를 수신 및 저장하는데 이용될 수 있다. 버스 레지스터(202)는 선입선출(FIFO) 메모리와 같은 임의의 형태의 저장 디바이스일 수 있다. 버스 레지스터(202)에 의해 수신 및 저장된 정보는 임의의 버스 관련 정보일 수 있으나, 보다 특정하게는 각각의 데이터 전송 버스 트랜잭션 요청, 및 기록 동작의 경우 페이로드에 대한 어드레스 및 속성을 포함할 수 있다. 또한, 버스 레지스터(202)는 마스터 디바이스에 의해 송출된 메모리 배리어 동작과 같은 논-데이터(non-data) 전송 버스 트랜잭션의 경우 속성을 저장할 수 있다. 각각의 데이터 전송 버스 트랜잭션 요청에 대한 어드레스가 디코더(204)에 제공된다. 디코더(204)는 버스 레지스터(202)에서 각각의 데이터 전송 버스 트랜잭션 요청에 대한 타겟 메모리 디바이스를 결정하는데 이용될 수 있다. 이러한 결정은 버스 스위치(206)를 제어하는데 이용된다. 버스 스위치(206)는 버스 레지스터(202)로부터 타겟 메모리 디바이스에 대한 버스(106)의 적절한 채널로 각각의 데이터 전송 버스 트랜잭션을 디멀티플렉싱하는데 이용된다. 제어기(208)는 버스 레지스터(202)로부터 방출되는 데이터 전송 버스 트랜잭션의 타이밍을 제어하는데 이용될 수 있다.
도 3은 약하게 오더링된 프로세싱 시스템에 대해 버스 상호접속부(108)에서 제어기(208)의 일 실시예에 대한 기능 블록도이다. 제어기(208)는 디코더(204)로부터 수신되는 정보를 기초로 메모리 동작들에 대한 오더링 제약이 이루어지게 한다. 정보는 제 1 입력 레지스터(302)에 저장될 수 있는 각각의 버스 트랜잭션에 대한 속성을 포함할 수 있다. 또한, 정보는 타겟 메모리 디바이스와 달리, 발신 프로세서가 액세스 가능하다는 것을 각각의 메모리 디바이스가 식별하는 데이터를 포함할 수 있다. 각각의 프로세서에 의해 액세스가능한 특정 메모리 디바이스들은 디자인 단계 동안 미리구성되어, 디코더(204)로 배선연결 또는 프로그램될 수 있다. 임의의 이벤트에서, 제 2 입력 레지스터(304)는 이러한 정보를 저장하는데 이용될 수 있다. 제 1 및 제 2 입력 레지스터들(302, 304)은 도 3에 도시된 개별 레 지스터들 또는 대안적으로 단일 레지스터일 수 있다. 제어기(208)의 일부 실시예들에서, 디코더(204)로부터의 정보는 다른 버스 상호접속 기능들을 공유하는 레지스터들에 저장될 수 있다. 각각의 레지스터는 FIFO 또는 임의의 다른 적절한 저장 매체일 수 있다.
제어기(208)는 버스 레지스터(202)로부터 방출된 데이터 전송 버스 트랜잭션들의 타이밍을 제어함으로써 데이터 전송 동작들에 대한 오더링 제약이 이루어지게 한다. 먼저 프로세스는 강하게 오더링된 메모리 데이터 전송 버스 트랜잭션이 버스 레지스터(202)로부터 방출될 준비가 되었다는 것을 나타내는 속성과 관련하여 초기화된다. 이 경우, 제 1 입력 레지스터(302)로부터 메모리 배리어 발생기(306)로 인에이블링(enabling) 신호로서 속성이 제공된다. 동시에, 제 2 입력 레지스터(304)에 저장된 데이터가 메모리 배리어 발생기(306)의 입력에 제공된다. 앞서 도시된 것처럼, 제 2 입력 레지스터(304)에 저장된 데이터는 타겟 메모리 디바이스 와 달리, 발신 프로세서가 액세스 가능하다는 것을 각각의 메모리 디바이스가 식별하는 데이터를 포함한다. 메모리 배리어 발생기(306)가 속성에 의해 인에이블링되면, 이러한 정보는 데이터에 의해 식별되는 각각의 메모리 디바이스에 대한 메모리 배리어를 생성하는데 이용된다. 각각의 메모리 배리어는 식별된 메모리 디바이스들로 지향되며 강하게 오더링된 요청이 초기화되는 발신 프로세서를 식별하는 속성을 가지는 메모리 배리어 트랜잭션을 송출함으로써 적절한 메모리 디바이스에 제공될 수 있다. 대안적으로, 메모리 배리어들은 측파대(sideband) 시그널링을 이용하는 또는 다른 적절한 수단에 의해 적절한 메모리 디바이스들에 제공될 수 있다. 또한 메모리 배리어 발생기(306)는 앞서 초기화된 것과 유사한 방식으로, 버스 레지스터(202)에 저장되는 마스터 디바이스로부터의 메모리 배리어 버스 트랜잭션 요청들에 응답하여 메모 배리어 버스 트랜잭션들을 발생시킬 수 있다.
하나 이상의 실시예들에 따라, 메모리 배리어 발생기(306)는 불필요한 메모리 배리어들을 억제하는데 이용될 수 있다. 예를 들어, 발신 프로세서에 의해 액세스가능한 메모리 디바이스에 대한 메모리 배리어는 불필요하며, 메모리 디바이스가 본질적으로 전역적으로 관측가능한 경우 억제될 수 있다. 전역적으로 관측가능한 슬래브 디바이스들은 다수의 방식으로 식별될 수 있다.
제어기(208)의 일 실시예에서, 논리적인 전역적 관측가능성 레지스터(307)는 시스템에서 각각의 슬래브 디바이스에 대한 비트(bit)를 포함한다. 전역적 관측가능성 레지스터 비트 상태는 관련된 슬래브 디바이스가 전역적으로 관측가능한지 여부를 나타내어, 메모리 배리어 트랜잭션으로부터 제외될 수 있다. 전역적 관측가능성 레지스터(307)는 메모리 배리어 발생기(306)에 대한 입력(input)이다. 전역적 관측가능성 레지스터(307)는 POST(Power On Self Test) 동안, 이를 테면 각각의 슬래브 디바이스들 내에서 구성 상태 레지스터들(CSRs)을 판독함으로써, 버스 트랜잭션들의 전역적 관측가능성에 대한 능력 및 이들의 반응(behavior) 을 확인하는 슬래브 디바이스들의 폴(poll)이 뒤따르는 시스템 소프트웨어에 의한 물리적 레지스터 세트를 포함할 수 있다.
ASIC 또는 시스템 온 칩(SOC) 환경에서 특히 바람직할 수 있는 일 실시예에서, 논리적인 전역적 관측가능성 레지스터(307)는 해당 슬래브 디바이스의 공지된 전역적 관측가능성을 표시하는 예정된 상태로 설계자에 의해 배선연결될 수 있다. 이는 POST 소프트웨어의 실행 시간 및 복잡성을 감소시킬 수 있다.
또 다른 실시예에서, 논리적인 전역적 관측가능성 레지스터(307)의 하나 이상의 비트들은 슬래브 디바이스로부터 다이나믹한 이진 신호를 포함할 수 있다. 이는 슬래브 디바이스가 전역적 관측가능성의 주기를 표시하게 한다. 예를 들어, 슬래브 디바이스는 버퍼에서 데이터 전송 동작들을 대기시킬 수 있고, 버스 트랜잭션 순서를 벗어난 동작들을 실행시킬 수 있다. 계류중인 데이터 전송 동작들이 버퍼에 상주할 때, 슬래브 디바이스들은 전역적 관측가능성 부족을 표시하여, 프로세서가 강하게 오더링된 데이터 전송 버스 트랜잭션 또는 메모리 배리어 동작을 송출할 경우 메모리 배리어 버스 트랜잭션이 슬래브 디바이스로 지향될 것이 요구된다. 그러나, 버퍼가 비어 있다면, 슬래브 디바이스는 적어도 다음 발생되는 데이터 전송 버스 트랜잭션에 대한 전역적 관측가능성을 보증할 수 있다(즉, 슬래브 디바이스는 모든 데이터 전송 동작들이 실행되기 이전에 미리 송출되는 것을 보증한다). 이 경우, 슬래브 디바이스는 메모리 배리어 트랜잭션들을 수신할 필요가 없는 이진 신호를 통해 표시될 수 있고, 버퍼가 비어있는 동안에만 이러한 표시를 유지할 수 있다.
임의의 주어진 구현에 있어서, 논리적인 전역적 관측가능성 레지스터(307)는 특정 분야에서 요구될 경우 또는 원하는 경우, 시스템 소프트웨어, 배선연결된(hardwired) 비트들, 또는 슬래브 디바이스들로부터의 다이나믹 신호들에 의해 하나 이상의 물리적 레지스터들의 세트의 임의의 혼합을 포함할 수 있다.
도 1-3을 참조로, 전역적 관측가능성 레지스터 비트들이 메모리 배리어들을 억제하는데 이용될 수 있는 방식을 설명하기 위한 예가 제공된다. 본 예에서, 프로세싱 시스템은 제 1 프로세서(102a)가 제 1, 제 2 및 제 3 메모리 디바이스들(104a, 104b, 104c)을 액세스할 수 있도록 구성될 수 있다. 강하게 오더링된 데이터 전송 버스 트랜잭션이 제 1 프로세서(102a)에 의해 제 1 메모리 디바이스(104a)로 송출될 때(또는 대안적으로 제 1 프로세서(102a)에 의해 송출된 메모리 배리어 동작이 버스 레지스터(202)의 출력에 있을 때), 제 1 입력 레지스터(302)로부터의 해당 속성은 메모리 배리어 발생기(306)를 인에이블시킨다. 제 2 입력 레지스터(304)로부터 메모리 배리어 발생기(306)로 제공되는 데이터는 타겟 메모리 디바이스 이외에, 제 1 프로세서(104a)가 액세스될 수 있는 메모리 디바이스들을 식별한다. 이 경우, 데이터는 제 2 및 제 3 메모리 디바이스들(104b, 104c)을 식별한다. 메모리 배리어 발생기(306)는 어떤 메모리 디바이스(104b, 104c)가 전역적으로 관측가능한지 여부를 결정하기 위해 제 2 및 제 3 메모리 디바이스들(104b, 104c)에 해당하는 논리적인 전역적 관측가능성 레지스터(307)의 비트들(307b, 307c)을 검사한다. 일례로, 비트(307b)는 전역적 관측가능성을 표시하고 비트(307c)는 전역적 관측가능성을 표시하지 않는다. 따라서, 메모리 배리어 버스 트랜잭션은 제 3 메모리 디바이스(104c)로 송출되며, 제 2 메모리 디바이스(104b)에 대한 메모리 배리어가 억제된다.
도 3을 참조로, 제어기(208)에서의 로직(308)은 메모리 배리어 긍정응 답(acknowledgement)을 위해 메모리 디바이스들로부터의 피드백을 모니터하는데 이용될 수 있다. "메모리 배리어 긍정응답(memory barrier acknowledgement)"은 강하게 오더링된 데이터 전송 버스 트랜잭션을 요구하는 또는 메모리 배리어에 선행되는 메모리 배리어 동작을 송출하는 프로세서로부터의 각각의 데이터 전송 동작이 실행되었다는 것을 나타내는 메모리 디바이스로부터의 신호이다. 제 2 입력 레지스터(304)로부터의 데이터 및 논리적인 전역적 관측가능성 레지스터(307)의 비트들은 로직(308)에 의해 메모리 배리어 긍정응답에 대해 메모리 디바이스들이 모니터되어야 하는지를 결정하기 위해 사용된다. 로직(308)이 필요한 모든 메모리 배리어 긍정응답들이 수신되었다고 결정되면, 로직(308)은 버스 레지스터(202)로부터 해당 데이터 전송 버스 트랜잭션(또는 메모리 배리어 동작이 마스터 디바이스에 의해 직접 송출될 경우 다음 계류중인 데이터 전송 버스 트랜잭션)을 방출하는데 이용되는 트리거를 생성한다. 특히, 제 1 입력 레지스터(302)로부터의 속성이 선택 멀티플렉서(310)의 입력에 제공된다. 멀티플렉서(310)는 상기 속성이 데이터 전송 버스 트랜잭션이 강하게 오더링되었다는 것을 나타낼 때, 로직(308)에 의해 생성된 트리거를 버스 레지스터(202)와 결합시키는데 이용된다. 또한 멀티플렉서(310)로부터의 해제 신호 출력은 버스 스위치(206)(도 2 참조)의 타이밍을 동기화시키기 위해 디코더와 결합된다.
일단 데이터 전송 버스 트랜잭션은 버스 레지스터로부터 해제되면, 데이터 전송 버스 트랜잭션은 버스 스위치(206)(도 2 참조)를 통해 타겟 메모리 디바이스로 라우팅된다. 강하게 오더링된 데이터 전송 버스 트랜잭션 또는 마스터 디바이 스-송출 메모리 배리어 동작이 선택 입력에 인가될 때, 타겟 메모리 디바이스로부터 데이터 전송 긍정응답이 수신될 때까지, 제어기(208)의 제 2 멀티플렉서(312)는 제 1 및 제 2 레지스터들(302, 304)로부터 데이터 해제를 지연시키는데 이용된다. 앞서 언급한 바와 같이, 버스 트랜잭션에 포함된 속성은 타겟 메모리 디바이스에 대한 오더링 제약이 이루어지게 한다. 즉, 타겟 메모리 디바이스는 강하게 오더링된 데이터 전송 동작을 실행하기 이전에 발신 프로세서에 의해 송출된 모든 계류중인 데이터 전동 동작들을 실행한다. 데이터 전송 긍정응답은 강하게 오더링된 데이터 전송 동작의 수행에 이어, 타겟 메모리 디바이스에 의해 발생된다. 데이터 전송 긍정응답은 제어기(208)에서 멀티플렉서(312)로 다시 공급되며, 멀티플렉서(312)는 버스 레지스터(202)에서 다음 데이터 전송 버스 트랜잭션에 해당하는 제 1 및 제 2 레지스터들(302, 304)로부터 새로운 데이터를 해제하는 트리거를 생성하는데 이용된다. 새로운 데이터가 버스 레지스터(202)의 해당 데이터 전송 버스 트랜잭션이 강하게 오더링되었거나 또는 마스터 디바이스-송출 메모리 배리어 동작을 포함한다는 것을 나타내는 속성을 포함할 경우, 동일한 프로세서가 반복된다. 그렇지 않다면, 데이터 전송 버스 트랜잭션은 버스 레지스터(202)로부터 즉시 해제될 수 있다.
제어기(208)는 제 1 입력 레지스터(302)에서의 해당 속성이 요청이 강하게 오더링되지 않았거나 또는 마스터 디바이스-송출 메모리 배리어 동작이 아니라는 것을 나타낼 때, 버스 레지스터(202)로부터 데이터 전송 버스 트랜잭션을 즉시 해제하도록 구성된다. 이 경우, 상기 속성은 메모리 배리어 발생기(306) 디스에이블 시킨다. 또한, 상기 속성은 멀티플렉서(310)가 데이터 전송 버스 트랜잭션을 방출하도록 버스 레지스터(202)를 내부적으로 생성된 트리거와 결합되는 상태로 만든다. 데이터 전송 버스 트랜잭션은 버스 스위치(206)(도 2 참조)를 통해 타겟 메모리 디바이스와 결합되며 버스 레지스터(202)로부터 해제된다. 다음 데이터 전송 버스 트랜잭션에 해당하는 데이터는 제어기(208)에서 제 2 멀티플렉서(312)로부터 내부적으로 생성된 트리거 출력에 의해 제 1 및 제 2 레지스터들(302, 304)로부터 방출된다.
도 4는 약하게 오더링된 프로세싱 시스템에 대한 버스 상호접속부에서 제어기의 또 다른 실시예를 나타내는 기능 블록도이다. 본 실시예에서, 강하게 오더링된 데이터 전송 버스 트랜잭션은 제어기(208)에 의해 버스 레지스터(202)로부터 방출되며, 동시에 메모리 배리어들은 적절한 메모리 디바이스들에 제공된다. 특히, 제 1 입력 레지스터(302)는 데이터 전송 버스 트랜잭션에 대한 속성을 메모리 배리어 발생기(306)에 제공하는데 이용된다. 상기 속성이 해당 데이터 전송 버스 트랜잭션이 강하게 오더링되었다는 것을 나타낼 경우, 메모리 배리어 발생기(306)는 인에이블된다. 메모리 배리어 발생기(306)가 인에이블될 때, 제 2 입력 레지스터(304)로부터의 데이터는 타겟 메모리 디바이스 이외에, 발신 프로세서에 의해 액세스 가능한 각각의 메모리 디바이스를 식별하는데 이용된다. 식별된 각각의 메모리 디바이스에 대해, 메모리 배리어 발생기(306)는 논리적인 전역적 관측가능성 레지스터(307)의 해당 비트를 검사한다. 다음 타겟 메모리 디바이스 이외에, (이 때) 전역적으로 관측가능하다는 것을 나타내지 않는 각각의 메모리 디바이스에 대 해 각각의 메모리 디바이스에 대한 메모리 배리어가 생성된다.
메모리 배리어 발생기(306)가 인에이블되면, 제어기(208)의 로직(314)은 강하게 오더링된 데이터 전송 버스 트랜잭션이 타겟 메모리 디바이스에 의해 실행될 때까지, 순차적인 데이터 전송 버스 트랜잭션들이 버스 레지스터(202)로부터 방출되는 것을 방지하는데 이용될 수 있다. 지연(316)은 트리거가 게이트 오프되기(gated off) 이전에, 내부적으로 발생된 트리거가 속성에 의해 버스 레지스터(202)로부터 강하게 오더링된 데이터 전송 버스 트랜잭션을 해제하게 하는데 이용될 수 있다. 이런 방식으로, 데이터 전송 버스 트랜잭션이 발신 프로세서에 의해 액세스가능한, 남아있는 전역적으로 관측가능하지 않은 메모리 디바이스들에 대해 메모리 배리어들과 동시적으로 타겟 메모리 디바이스에 제공될 수 있다.
로직(318)은 메모리 디바이스로부터의 데이터 전송 긍정응답 및 메모리 배리어 긍정응답에 대해 메모리 디바이스들로부터의 피드백을 모니터하는데 이용될 수 있다. 제 2 입력 레지스터(304)로부터의 데이터 및 논리적인 전역적 관측가능성 레지스터(307)의 비트들은 메모리 배리어 확인들을 위해 메모리 디바이스들이 모니터될 필요가 있는지를 결정하기 위해 로직(318)에 의해 이용된다. 로직(318)이 다양한 데이터 전송 및/또는 메모리 배리어 긍정응답들을 수신했다고 결정하면, 로직(318)은 버스 레지스터(202)의 다음 데이터 전송 버스 트랜잭션에 해당하는 제 1 및 제 2 입력 레지스터들(302, 304)로부터 새로운 데이터가 방출되도록 트리거를 생성한다. 트리거는 제 1 입력 레지스터(202)로부터의 속성에 의해 적절한 상태가 되는 멀티플렉서(320)를 통해 결합된다. 새로운 데이터가 버스 레지스터(202)의 해당 데이터 전송 버스 트랜잭션이 강하게 오더링되었다는 것을 나타내는 속성을 포함하면, 동일한 프로세서가 반복된다. 그렇지 않다면, 데이터 전송 버스 트랜잭션은 로직(314)을 통해 내부적으로 발생된 트리거를 사용하여 버스 레지스터(202)로부터 즉시 방출될 수 있다. 또한, 내부적으로 발생된 트리거는 버스 레지스터(202)의 다음 데이터 전송 버스 트랜잭션을 위해 제 1 및 제 2 입력 레지스터들(302, 304)로부터 데이터를 방출하도록 멀티플렉서(320)를 통해 결합될 수 있다.
본 발명은 공유형 버스 시스템의 버스 상호접속부(108) 내의 제어기(208)와 관련하여 초기화되었지만, 당업자들은 본 발명이 이러한 구현으로 제약되지 않는다는 것을 쉽게 인식할 것이다. 특히, 각각의 슬래브 디바이스에 대한 전역적 관측가능성 표시기는 각각의 마스터 디바이스로 전파 또는 각각의 마스터 디바이스에 의해 액세스 가능하여, 메모리 배리어 버스 트랜잭션이 요구되는지 여부를 결정하며, 메모리 배리어 버스 트랜잭션이 요구되면, 이를 슬래브 디바이스로 지향되게 한다.
본 발명은 본 발명의 특정 특징들, 양상들 및 실시예들과 관련하여 초기화되었지만, 본 발명의 넓은 범주내에서 다양한 변형, 변조 및 다른 실시예들이 가능하며, 모든 변형, 변조 및 실시예들은 본 발명의 범주에 포함되는 것으로 간주된다. 따라서, 본 실시예들은 모든 양상들에서 본 발명에 포함되는 첨부되는 청구항들의 의미 및 등가적 범위내에서 한정되지 않으며 예시되는 모든 변화들로서 해석된다.

Claims (31)

  1. 약하게 오더링된 프로세싱 시스템으로서,
    다수의 슬래브 디바이스들;
    하나 이상의 슬래브들로 데이터 전송 버스 트랜잭션들을 지향시키도록 구성된 적어도 하나의 마스터 디바이스; 및
    마스터 및 슬래브 디바이스들 사이에서 데이터 전송 버스 트랜잭션을 구현하고, 상기 마스터 디바이스로부터의 실행 동기화 버스 트랜잭션 요청에 응답하여 전역적 관측가능하지 않은(globally observable) 하나 이상의 슬래브 디바이스들로 실행 동기화 버스 트랜잭션을 지향시키도록 구성된 버스 상호접속부
    를 포함하는 약하게 오더링된 프로세싱 시스템.
  2. 제 1 항에 있어서,
    상기 버스 상호접속부는 각각이 상기 슬래브 디바이스와 대응하며 상기 슬래브 디바이스가 전역적 관측가능성을 유지하는지 여부를 나타내는 다수의 비트들을 포함하는 논리적인 전역적 관측가능성 레지스터를 포함하는 약하게 오더링된 프로세싱 시스템.
  3. 제 2 항에 있어서,
    상기 전역적 관측가능성 레지스터는 시스템 초기화 동안 시스템 소프트웨어 에 의한 하나 이상의 물리적 레지스터들 세트를 포함하는 약하게 오더링된 프로세싱 시스템.
  4. 제 3 항에 있어서,
    상기 시스템 소프트웨어는 이들의 전역적 관측가능성을 확인하기 위해 슬래브 디바이스들의 구성 레지스터들을 조사(poll)하는 약하게 오더링된 프로세싱 시스템.
  5. 제 2 항에 있어서,
    상기 논리적인인 전역적 관측가능성 레지스터의 하나 이상의 비트들은 배선연결되는(hard-wired) 약하게 오더링된 프로세싱 시스템.
  6. 제 2 항에 있어서,
    상기 논리적인인 전역적 관측가능성 레비스터의 하나 이상의 비트들은 상기 슬래브 디바이스들로부터의 다이나믹 이진 신호들을 포함하는 약하게 오더링된 프로세싱 시스템.
  7. 제 6 항에 있어서,
    상기 슬래브 디바이스는 데이터 전송 동작들을 실행하기 이전에 데이터 전송 동작들을 버퍼링하며, 상기 슬래브 디바이스는 버퍼가 비었을 때, 다이나믹 이진 신호를 통해 상기 논리적인인 전역적 관측가능성 레지스터에 대해 전역적으로 관측가능하다는 것을 표시하는 약하게 오더링된 프로세싱 시스템.
  8. 제 1 항에 있어서,
    상기 마스터 디바이스들로부터의 데이터 전송 버스 트랜잭션 요청들은 상기 데이터 전송 버스 트랜잭션이 강하게 오더링되었는지를 나타내는 속성을 포함하는 약하게 오더링된 프로세싱 시스템.
  9. 제 1 항에 있어서,
    상기 실행 동기화 버스 트랜잭션을 수신하는 각각의 슬래브 디바이스는 상기 강하게 오더링된 데이터 전송 버스 트랜잭션을 송출하는 적어도 상기 마스터 디바이스로부터 앞서 수신된 모든 데이터 전송 동작들을 실행하는 약하게 오더링된 프로세싱 시스템.
  10. 제 1 항에 있어서,
    상기 강하게 오더링된 데이터 전송 버스 트랜잭션이 지향되는 상기 슬래브 디바이스는 상기 강하게 오더링된 데이터 전송 버스 트랜잭션을 실행하기 이전에, 상기 강하게 오더링된 데이터 전송 버스 트랜잭션을 송출하는 적어도 상기 마스터 디바이스로부터 이전에 수신된 모든 데이터 전송 동작들이 실행되었다는 것을 상기 마스터 디바이스들에 나타내는 약하게 오더링된 프로세싱 시스템.
  11. 제 1 항에 있어서,
    상기 버스 상호접속부는 상기 강하게 오더링된 데이터 전송 버스 트랜잭션 요청을 송출하는 상기 마스터 디바이스가 데이터 전송 버스 트랜잭션들을 지향시킬 수 있는 전역적으로 관측가능하지 않은 슬래브 디바이스들에만 상기 실행 동기화 버스 트랜잭션을 지향시키는 약하게 오더링된 프로세싱 시스템.
  12. 제 1 항에 있어서,
    상기 버스 상호접속부는 상기 강하게 오더링된 데이터 전송 버스 트랜잭션 요청에 응답하여 전역적으로 관측가능하지 않은 하나 이상의 슬래브 디바이스들로 실행 동기화 버스 트랜잭션을 지향시키도록 추가로 구성되는 약하게 오더링된 프로세싱 시스템.
  13. 약하게 오더링된 프로세싱 시스템에서 하나 이상의 마스터 디바이스들로부터 2개 이상의 슬래브 디바이스들로 데이터 전송 버스 트랜잭션들을 지향시키도록 동작하는 버스 상호접속부로서,
    데이터 전송 버스 트랜잭션 요청들이 대기되도록 동작하는 버스 레지스터; 및
    제어기
    를 포함하며, 상기 제어기는 상기 버스 레지스터로부터 데이터 전송 버스 트 랜잭션들의 송출을 제어하도록 동작하며, 상기 마스터 디바이스로부터의 실행 동기화 버스 트랜잭션 요청에 응답하여 전역적으로 관측가능하지 않은 하나 이상의 슬래브 디바이스들로 실행 동기화 버스 트랜잭션을 송출하도록 동작하는, 버스 상호접속부.
  14. 제 13 항에 있어서,
    상기 제어기는 슬래브 디바이스들이 전역적으로 관측가능하다는 것을 나타내는 논리적인인 전역적 관측가능성 레지스터를 포함하는 버스 상호접속부.
  15. 제 14 항에 있어서,
    상기 논리적인인 전역적 관측가능성 레지스터는 시스템 소프트웨어에 의한 물리적 레지스터 세트를 포함하는 버스 상호접속부.
  16. 제 15 항에 있어서,
    상기 시스템 소프트웨어는 상기 전역적 관측가능성 레지스터를 세팅하기 이전에, 이들의 전역적 관측가능성을 확인하기 위해 상기 슬래브 디바이스들에서 상태 레지스터들 조사하는 버스 상호접속부.
  17. 제 14 항에 있어서,
    상기 논리적인인 전역적 관측가능성 레지스터의 하나 이상의 비트들은 시스 템 설계자들에 의해 배선연결되는 버스 상호접속부.
  18. 제 14 항에 있어서,
    상기 논리적인인 전역적 관측가능성 레지스터의 하나 이상의 비트들은 슬래브 디바이스들로부터의 다이나믹 이진 신호들을 포함하는 버스 상호접속부.
  19. 제 18 항에 있어서,
    상기 슬래브 디바이스는 실행에 앞서 데이터 전송 동작들을 버퍼링하도록 동작하며, 상기 슬래브 디바이스는 상기 버퍼가 비었을 때 다이나믹 이진 신호를 통해 전역적 관측가능성을 나타내는 버스 상호접속부.
  20. 제 12 항에 있어서,
    상기 제어기에 논리적인으로 접속되며 계류중인 데이터 전송 버스 트랜잭션이 상기 슬래브 디바이스로 지향되었는지를 확인하도록 동작하며, 강하게 오더링된 데이터 전송 버스 트랜잭션들을 검출하도록 동작하는 디코더를 더 포함하는 버스 상호접속부.
  21. 제 14 항에 있어서,
    상기 버스 레지스터로부터 데이터 전송 버스 트랜잭션들을 수신하는 버스 스위치를 더 포함하며, 상기 버스 스위치는 상기 디코더의 제어하에 상기 데이터 전 송 버스 트랜잭션들이 상기 슬래브 디바이스들로 지향되게 동작하는 버스 상호접속부.
  22. 제 13 항에 있어서,
    상기 제어기는 강하게 오더링된 데이터 전송 버스 트랜잭션 요청에 응답하여 실행 동기화 버스 트랜잭션을 전역적으로 관측가능하지 않은 하나 이상의 슬래브 디바이스들로 송출하도록 동작하는 버스 상호접속부.
  23. 하나 이상의 마스터 디바이스들 및 2개 이상의 슬래브 디바이스들을 포함하는 약하게 오더링된 프로세싱 시스템에서 강하게 오더링된 데이터 전송 버스 트랜잭션을 실행하는 방법으로서,
    상기 슬래브 디바이스들이 전역적으로 관측가능하다는 표시를 유지하는 단계; 및
    상기 마스터 디바이스로부터 실행 동기화 버스 트랜잭션 요청에 응답하여 실행 동기화 버스 트랜잭션을 전역적으로 관측가능하지 않은 하나 이상의 슬래브 디바이스들로 송출하는 단계
    를 포함하는, 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
  24. 제 23 항에 있어서,
    상기 마스터 디바이스로부터 수신된 각각의 데이터 전송 버스 트랜잭션 요청 의 속성을 디코딩함으로써 강하게 오더링된 데이터 전송 버스 트랜잭션을 검출하는 단계를 더 포함하는 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
  25. 제 23 항에 있어서,
    상기 실행 동기화 버스 트랜잭션은 강하게 오더링된 데이터 전송 버스 트랜잭션 요청을 송출하는 마스터 디바이스가 데이터 전송 버스 트랜잭션들을 지향시킬 수 있는 전역적으로 관측가능하지 않은 슬래브 디바이스들로만 송출되는 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
  26. 제 23 항에 있어서,
    상기 슬래브 디바이스들이 전역적으로 관측가능하다는 표시를 유지하는 단계는 논리적인인 전역적 관측가능성 상태 레지스터를 유지하는 단계를 포함하며, 각각의 슬래브 디바이스에는 하나의 비트가 대으되는 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
  27. 제 26 항에 있어서,
    각각의 슬래브 디바이스의 전역적 관측가능성을 확인하기 위해 초기화 동안 슬래브 디바이스들의 상태 레지스터들을 조사하는 단계; 및
    물리적인 전역적 관측가능성 상태 레지스터를 설정하는 단계
    를 더 포함하는 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
  28. 제 26 항에 있어서,
    상기 슬래브 디바이스들이 전역적으로 관측가능하다는 표시를 유지하는 단계는 상기 슬래브 디바이스들의 전역적 관측가능성을 표시하는 하나 이상의 슬래브 디바이스들로부터 다이나믹 이진 신호를 수신하는 단계를 포함하는 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
  29. 제 23 항에 있어서,
    실행 동기화 버스 트랜잭션을 수신하는 각각의 슬래브 디바이스에 대해, 상기 강하게 오더링된 데이터 전송 버스 트랜잭션 요청을 송출하는 적어도 상기 마스터 디바이스로부터 계류중인 모든 데이터 전송 동작들을 실행하는 단계를 더 포함하는 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
  30. 제 23 항에 있어서,
    강하게 오더링된 데이터 전송 버스 트랜잭션을 수신하는 슬래브 디바이스에 대해, 상기 강하게 오더링된 데이터 전송 버스 트랜잭션을 실행하기 이전에, 상기 강하게 오더링된 데이터 전송 버스 트랜잭션 요청을 송출하는 적어도 상기 마스터 디바이스로부터 계류중인 모든 데이터 전송 동작들을 실행하는 단계를 더 포함하는 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
  31. 제 23 항에 있어서,
    강하게 오더링된 데이터 전송 버스 트랜잭션 요청을 수신하는 단계를 더 포함하는 강하게 오더링된 데이터 전송 버스 트랜잭션 실행 방법.
KR1020097006527A 2006-08-31 2007-08-31 배리어 동작들의 조건부 브로드캐스트를 위한 방법 및 장치 KR101056153B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/468,894 US7783817B2 (en) 2006-08-31 2006-08-31 Method and apparatus for conditional broadcast of barrier operations
US11/468,894 2006-08-31
PCT/US2007/077336 WO2008028101A1 (en) 2006-08-31 2007-08-31 Method and apparatus for conditional broadcast of barrier operations

Publications (2)

Publication Number Publication Date
KR20090051238A true KR20090051238A (ko) 2009-05-21
KR101056153B1 KR101056153B1 (ko) 2011-08-11

Family

ID=38943823

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097006527A KR101056153B1 (ko) 2006-08-31 2007-08-31 배리어 동작들의 조건부 브로드캐스트를 위한 방법 및 장치

Country Status (9)

Country Link
US (1) US7783817B2 (ko)
EP (1) EP2062147B1 (ko)
JP (1) JP4891405B2 (ko)
KR (1) KR101056153B1 (ko)
CN (1) CN101506783B (ko)
AT (1) ATE507530T1 (ko)
DE (1) DE602007014226D1 (ko)
TW (1) TW200819989A (ko)
WO (1) WO2008028101A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US7500045B2 (en) * 2005-03-23 2009-03-03 Qualcomm Incorporated Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system
US7917676B2 (en) * 2006-03-10 2011-03-29 Qualcomm, Incorporated Efficient execution of memory barrier bus commands with order constrained memory accesses
US8352682B2 (en) 2009-05-26 2013-01-08 Qualcomm Incorporated Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
GB2474446A (en) * 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US8285937B2 (en) * 2010-02-24 2012-10-09 Apple Inc. Fused store exclusive/memory barrier operation
US8577986B2 (en) * 2010-04-02 2013-11-05 Microsoft Corporation Mapping RDMA semantics to high speed storage
US9350806B2 (en) * 2012-09-07 2016-05-24 International Business Machines Corporation Zero copy data transfers without modifying host side protocol stack parameters
US9489307B2 (en) * 2012-10-24 2016-11-08 Texas Instruments Incorporated Multi domain bridge with auto snoop response

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190435A (ja) 1990-11-26 1992-07-08 Hitachi Ltd マルチプロセッサシステムのメモリアクセス順序保証方式
US5778438A (en) 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5893165A (en) 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US6047334A (en) 1997-06-17 2000-04-04 Intel Corporation System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
US6088771A (en) 1997-10-24 2000-07-11 Digital Equipment Corporation Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US6370632B1 (en) 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
US6038646A (en) 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6247102B1 (en) * 1998-03-25 2001-06-12 Compaq Computer Corporation Computer system employing memory controller and bridge interface permitting concurrent operation
US6073210A (en) 1998-03-31 2000-06-06 Intel Corporation Synchronization of weakly ordered write combining operations using a fencing mechanism
US6816934B2 (en) * 2000-12-22 2004-11-09 Hewlett-Packard Development Company, L.P. Computer system with registered peripheral component interconnect device for processing extended commands and attributes according to a registered peripheral component interconnect protocol
US6167492A (en) 1998-12-23 2000-12-26 Advanced Micro Devices, Inc. Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
US6275913B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc. Method for preserving memory request ordering across multiple memory controllers
US6708269B1 (en) * 1999-12-30 2004-03-16 Intel Corporation Method and apparatus for multi-mode fencing in a microprocessor system
US6609192B1 (en) 2000-06-06 2003-08-19 International Business Machines Corporation System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US6963967B1 (en) 2000-06-06 2005-11-08 International Business Machines Corporation System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture
JP3999943B2 (ja) * 2001-03-13 2007-10-31 株式会社東芝 マルチバンクアクセス制御装置及びマルチバンクアクセス制御方法
US7398376B2 (en) * 2001-03-23 2008-07-08 International Business Machines Corporation Instructions for ordering execution in pipelined processes
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
KR100624610B1 (ko) * 2001-08-24 2006-09-19 인텔 코오퍼레이션 데이터 무결성을 관리하는 범용 입출력 아키텍쳐 프로토콜및 관련 방법
US20030131175A1 (en) 2001-12-24 2003-07-10 Heynemann Tom A. Method and apparatus for ensuring multi-threaded transaction ordering in a strongly ordered computer interconnect
US6976115B2 (en) 2002-03-28 2005-12-13 Intel Corporation Peer-to-peer bus segment bridging
US7490218B2 (en) 2004-01-22 2009-02-10 University Of Washington Building a wavecache
WO2005121948A1 (en) 2004-06-02 2005-12-22 Sun Microsystems, Inc. Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor
US7644409B2 (en) 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7725618B2 (en) 2004-07-29 2010-05-25 International Business Machines Corporation Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment
US7454570B2 (en) 2004-12-07 2008-11-18 International Business Machines Corporation Efficient memory update process for on-the-fly instruction translation for well behaved applications executing on a weakly-ordered processor
US9026744B2 (en) 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US7500045B2 (en) * 2005-03-23 2009-03-03 Qualcomm Incorporated Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system
US7917676B2 (en) 2006-03-10 2011-03-29 Qualcomm, Incorporated Efficient execution of memory barrier bus commands with order constrained memory accesses
JP2009269935A (ja) 2008-04-30 2009-11-19 Sumitomo Metal Mining Co Ltd 金色系金属光沢を有する銀膜

Also Published As

Publication number Publication date
ATE507530T1 (de) 2011-05-15
EP2062147A1 (en) 2009-05-27
JP2010501962A (ja) 2010-01-21
EP2062147B1 (en) 2011-04-27
WO2008028101A1 (en) 2008-03-06
CN101506783B (zh) 2011-04-20
DE602007014226D1 (de) 2011-06-09
KR101056153B1 (ko) 2011-08-11
CN101506783A (zh) 2009-08-12
JP4891405B2 (ja) 2012-03-07
TW200819989A (en) 2008-05-01
US20080059683A1 (en) 2008-03-06
US7783817B2 (en) 2010-08-24

Similar Documents

Publication Publication Date Title
KR101056153B1 (ko) 배리어 동작들의 조건부 브로드캐스트를 위한 방법 및 장치
US6952749B2 (en) Multiprocessor interrupt handling system and method
US7478189B2 (en) Deadlock avoidance in a bus fabric
US20030110336A1 (en) Method and apparatus for interrupt redirection for arm processors
US6675251B1 (en) Bridge device for connecting multiple devices to one slot
KR19980032140A (ko) 트랜잭션 및 수신지 id를 가진 공유 버스 시스템
JP2008532143A (ja) より高い周波数アービターを介してサイクルあたり複数のバスアービトレーションを有するスイッチマトリクスシステム
US8990456B2 (en) Method and apparatus for memory write performance optimization in architectures with out-of-order read/request-for-ownership response
EP3292474B1 (en) Interrupt controller
JPH0981508A (ja) 通信方法及び装置
US5519872A (en) Fast address latch with automatic address incrementing
JPH06266615A (ja) 順次データ転送型メモリ及び順次データ転送型メモリを用いたコンピュータシステム
CN114746853A (zh) 存储器与分布式计算阵列之间的数据传输
CN1996276A (zh) 多处理器***中的数据传输
US6874049B1 (en) Semaphores with interrupt mechanism
US6490644B1 (en) Limiting write data fracturing in PCI bus systems
US9858222B2 (en) Register access control among multiple devices
US7130946B2 (en) Configuration and method having a first device and a second device connected to the first device through a cross bar
JP2014170361A (ja) 情報処理装置、バス分割方法、及びバス分割プログラム
JPH06214945A (ja) コンピュータシステム及び情報の高速転送方法
US10713188B2 (en) Inter-process signaling system and method
US5809534A (en) Performing a write cycle to memory in a multi-processor system
JPH1185673A (ja) 共有バスの制御方法とその装置
US7149827B1 (en) Methods and apparatus for tristate line sharing
JP2000132527A (ja) プロセッサ間通信制御装置

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
FPAY Annual fee payment

Payment date: 20140730

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8