KR20150065803A - 고-효율 원자적 연산들을 사용하는 방법 및 장치 - Google Patents

고-효율 원자적 연산들을 사용하는 방법 및 장치 Download PDF

Info

Publication number
KR20150065803A
KR20150065803A KR1020157011304A KR20157011304A KR20150065803A KR 20150065803 A KR20150065803 A KR 20150065803A KR 1020157011304 A KR1020157011304 A KR 1020157011304A KR 20157011304 A KR20157011304 A KR 20157011304A KR 20150065803 A KR20150065803 A KR 20150065803A
Authority
KR
South Korea
Prior art keywords
shared resource
master
access
master device
devices
Prior art date
Application number
KR1020157011304A
Other languages
English (en)
Inventor
즈신 티안
윤펭 허
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150065803A publication Critical patent/KR20150065803A/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
    • 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
    • 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/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • 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/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access
    • G06F2213/1602Memory access type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/36Arbitration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법이 기재된다. 방법은, 제 1 마스터 디바이스로부터 공유 리소스에 액세스하기 위한 요청을 수신하는 단계; 및 공유 리소스의 가용성을 결정하는 단계를 포함한다. 공유 리소스가 이용가능하면, 성공한 응답이 제 1 마스터 디바이스에 리턴되어 공유 리소스에 대한 제 1 마스터 디바이스에 의해 액세스를 설정한다. 공유 리소스가 이용가능하지 않다면, 실패한 응답이 제 1 마스터 디바이스에 리턴된다. 리소스의 불가용성 동안, 공유 리소스가 이용가능해지는 때가 자동적으로 모니터링된다. 일단 이용가능하면, 제 1 마스터 디바이스는 자동적으로 통보를 받는다.

Description

고-효율 원자적 연산들을 사용하는 방법 및 장치{METHOD AND APPARATUS USING HIGH-EFFICIENCY ATOMIC OPERATIONS}
[0001] 본 실시예들은 일반적으로 데이터 통신들에 관한 것으로, 더 상세하게는, 데이터를 버퍼링하는 것에 대한 흐름(flow) 제어를 제공하는 방법들 및 장치에 관한 것이다.
[0002] 원자적 연산(Atomic operation)들은 멀티-코어 프로세서 아키텍처들에서 종종 이용된다. 일반적으로, 원자적 연산은, 연산들이 오직 2개의 가능한 결과들, 즉 성공 또는 실패를 갖는 단일 연산으로서 시스템의 나머지 부분에 보이도록 결합되는 연산들의 세트이다.
[0003] 원자적 연산들을 이용하는 2개의 종래의 방법들은, "록(lock)" 및 "배타적(exclusive)" 방식들을 각각 포함한다. 일반적으로, 록 연산은, 한번에 하나의 마스터(master)만이 버스에 액세스하게 한다. 공유 변수들을 이용하는 멀티-코어 애플리케이션들에 대해, 록 방식은, 활성 마스터가 버스와 종결(finish)될 때까지 다른 마스터들이 대기할 필요가 있기 때문에 비효율적일 수도 있다.
[0004] 배타적 방식은, 연산들 동안 다수의 마스터들이 버스를 공유하게 한다. 이것은, 다수의 프로세싱 쓰레드들에 의해 공유될 수도 있는 세마포어(semaphore) 변수들에 대해 특히 유용하다. 종래에, 배타적 연산은, 메모리에 대한 판독 액세스를 수행하는 제 1 마스터를 수반한다. 그 후, 동일한 위치에 대한 기입 액세스는 동일한 마스터에 의해 행해진다. 판독 액세스 이후로 위치 어드레스가 변하지 않는다면, 기입 액세스는 성공한다. 제 2 마스터는, 제 1 마스터의 판독 사이클과 기입 사이클 사이의 간격 동안 판독을 개시할 수도 있다. 실패가 발생하는 이벤트에서, 제 2 마스터는, 리소스가 이용가능할 때까지 요청들을 전송함으로써 공유 리소스를 폴링(poll)한다. 일단 이용가능하면, 리소스에 대한 배타적 액세스를 위한 요청이 반복된다.
[0005] 배타적 방식은, 배타적 방식의 의도된 애플리케이션들에 대해 잘 동작하지만, 리소스 가용성(availability)을 결정하기 위한 반복적인 폴링이 버스 트래픽 및 컨텍스트(context) 스위칭을 증가시키며, 대응하게, 버스에 따른 이용가능한 시그널링 대역폭을 감소시키고, 시스템 지연시간(latency)을 증가시킨다.
[0006] 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법이 기재된다. 방법은, 제 1 마스터 디바이스로부터 공유 리소스에 액세스하기 위한 요청을 수신하는 단계, 및 공유 리소스의 가용성을 결정하는 단계를 포함한다. 공유 리소스가 이용가능하면, 성공한 응답이 제 1 마스터 디바이스에 리턴(return)되어 공유 리소스에 대해 제 1 마스터 디바이스에 의한 액세스를 설정한다. 공유 리소스가 이용가능하지 않으면, 실패한 응답이 제 1 마스터 디바이스에 리턴된다. 리소스의 불가용성(unavailability) 동안, 공유 리소스는, 공유 리소스가 이용가능해지는 때에 대해 자동적으로 모니터링된다. 일단 공유 리소스가 이용가능해지면, 제 1 마스터 디바이스는 자동적으로 통보를 받는다.
[0007] 본 실시예들은, 예로서 예시되며, 첨부된 도면들의 도해(figure)들에 의해 제한되도록 의도되지 않는다.
도 1은, 멀티-프로세서 시스템의 일 실시예를 도시한다.
도 2는, 도 1의 시스템을 사용하는 원자적 연산을 구현하는 연산 흐름 및 고-레벨 커맨드를 도시한다.
도 3은, 마스터 디바이스의 관점에서, 도 2의 커맨드 및 연산 흐름의 일 실시예에 대응하는 세부 단계들을 포함하는 흐름도를 도시한다.
도 4a는, 슬레이브(slave) 디바이스의 관점에서, 도 2의 커맨드 및 연산 흐름에 대응하는 방법 중 일 실시예에 대응하는 세부 단계들을 포함하는 흐름도의 일부를 도시한다.
도 4b는, 도 4a와 유사한 흐름도의 일부를 도시한다.
[0013] 본 실시예들에 따른, 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법이 기재된다. 방법은, 제 1 마스터 디바이스로부터 공유 리소스에 액세스하기 위한 요청을 수신하는 단계, 및 공유 리소스의 가용성을 결정하는 단계를 포함한다. 공유 리소스가 이용가능하면, 성공한 응답이 제 1 마스터 디바이스에 리턴되어 공유 리소스에 대해 제 1 마스터 디바이스에 의한 배타적 액세스를 설정한다. 공유 리소스가 이용가능하지 않으면, 실패한 응답이 제 1 마스터 디바이스에 리턴된다. 리소스의 불가용성 동안, 공유 리소스는, 공유 리소스가 이용가능한 때에 대해 자동적으로 모니터링된다. 일단 이용가능하면, 제 1 마스터 디바이스는 자동적으로 통보를 받는다. 자동적인 모니터링 및 통보를 제공함으로써, 마스터 디바이스들로부터의 폴링 및 관련된 컨텍스트 스위칭이 현저히 감소되며, 시스템 성능을 개선할 수도 있다.
[0014] 다음의 설명에서, 특정한 컴포넌트들, 회로들, 및 프로세스들의 예들과 같은 다수의 특정한 세부사항들이 본 발명의 철저한 이해를 제공하기 위해 기재된다. 또한, 다음의 설명에서, 그리고 설명의 목적들을 위하여, 특정한 명명법(nomenclature)이 본 실시예들의 철저한 이해를 제공하기 위해 기재된다. 그러나, 이들 특정한 세부사항들이 본 실시예들을 실시하는데 요구되지 않을 수도 있음이 당업자들에 명백할 것이다. 다른 예시들에서, 잘-알려진 회로들 및 디바이스들은, 본 발명을 불명료하게 하는 것을 회피하기 위해 블록도 형태로 도시된다. 본 명세서에 사용되는 바와 같이, 용어 "커플링된"은, 직접 접속되거나 하나 또는 그 초과의 개재(intervening) 컴포넌트들 또는 회로들을 통해 접속됨을 의미한다. 본 명세서에 설명된 다양한 버스들을 통해 제공되는 신호들 중 임의의 신호는, 다른 신호들과 시-분할(time-multiplex)될 수도 있고, 하나 또는 그 초과의 공통 버스들을 통해 제공될 수도 있다. 부가적으로, 회로 엘리먼트들 또는 소프트웨어 블록들 사이의 상호접속은, 버스들로서 도시되거나 단일 신호 라인들로서 도시될 수도 있다. 대안적으로, 버스들 각각은 단일 신호 라인일 수도 있고, 대안적으로, 단일 신호 라인들 각각은 버스들일 수도 있으며, 단일 라인 또는 버스는, 컴포넌트들 사이의 통신을 위한 무수한 물리적 또는 로직 메커니즘들 중 임의의 하나 또는 그 초과의 메커니즘을 표현할 수도 있다. 본 실시예들은, 본 명세서에 설명된 특정한 예들로 제한되는 것으로서 해석되어서는 안되며, 오히려, 첨부된 청구항들에 의해 정의되는 모든 실시예들을 그들의 범위들 내에 포함하는 것으로 해석되어야 한다.
[0015] 더 상세하게는, 그리고 일반적으로 도 1을 참조하면, 멀티-마스터 시그널링 시스템(100)은, 공유 버스(106)를 통하여 슬레이브 디바이스(104)에 상호접속하는 복수의 마스터 디바이스들(102A-102N)을 이용한다. 일 실시예에서, 마스터 디바이스들(102A-102N)은, 하나 또는 그 초과의 집적 회로 칩들 상에 배치될 수도 있는 집적 회로 프로세서들로서 구현된다. 일 실시예에서, 슬레이브 디바이스(104)는, 메모리 제어기(108)를 이용하여 하나 또는 그 초과의 메모리 디바이스들(110)에 대한 액세스를 조정(arbitrate)하는 메모리 시스템으로서 구현된다. 높은 이용도 및 효율성을 유지하면서 메모리에 대한 공유 액세스를 허용하기 위해, 세마포어 타입 및 비-세마포어 타입 원자적 연산들을 위한 새로운 방식들이 지원되며, 더 완전히 후술된다.
[0016] 도 1을 추가적으로 참조하면, 디바이스(102A)와 같은 각각의 마스터 디바이스는, 요청/응답 로직(114) 및 대기 큐(standby queue)(116)를 이용하는 스케줄러(112)를 포함한다. 요청/응답 로직(114)은, 연산을 수행하기 위한 배타적 액세스를 조절하기 위해 마스터 디바이스(102A)와 슬레이브 디바이스(104) 사이에 디스패칭(dispatch)되는 요청들/응답들 또는 커맨드들 형태의 메시지들을 생성하고 수신한다. 마스터 디바이스(102A) 내의 코어 회로(118)는, 배타적 액세스의 결과로서 슬레이브 디바이스(104)에 기입되거나 슬레이브 디바이스(104)로부터 리트리브(retrieve)되는 데이터를 생성하고 그리고/또는 데이터를 프로세싱하기 위한 계산 리소스들을 제공한다. 대기 큐(116)는, 마스터와 슬레이브 사이의 배타적 액세스가 보장(secure)될 수 있을 때까지, 주어진 원자적 트랜잭션에 대한 커맨드들 및 데이터를 일시적으로 저장한다.
[0017] 도 1을 계속 참조하면, 슬레이브 디바이스(104)는, 변하는 시간들에서 배타적 트랜잭션들을 조절하기 위해 다수의 마스터 디바이스들(102A-102N)과 통신하는 스케줄링 인터페이스(120)를 포함한다. 스케줄링 인터페이스(120)는, 예컨대 선입 선출(first-in-first-out) 기반 상에서, 다양한 마스터 디바이스들로부터의 요청들을 수신하고 저장하기 위한 버퍼와 같은 요청 큐(122)를 포함한다. 응답 로직(124)은, 요청 큐(122)에 커플링되어 배타적 액세스에 대한 슬레이브 디바이스(104)의 가용성을 검출한다. 일 실시예에서, 응답 로직(124)은, 메모리가 액세스에 대해 이용가능한 경우 제 1 값(예컨대 1)을, 그리고 메모리 시스템(104)이 마스터 디바이스들 중 하나와의 연산에 로킹(lock)된 경우 제 2 점감된(decremented) 값(예컨대 0)을 나타내는 카운터를 포함한다. 또한, 제어기(108)는, 더 완전히 후술되는 바와 같이, 다양한 마스터 디바이스들에 대한 메시지들을 생성하고 다양한 마스터 디바이스들로 메시지들을 전송하기 위한 응답 생성기(126)를 포함한다.
[0018] 도 1을 추가적으로 참조하면, 스케줄링 인터페이스(120)는, 프로세스 중(in-process)인 다양한 연산들 그리고/또는 프로세싱을 위해 제어기(108)에 의해 큐잉(queue)된 다양한 연산들을 추적(track)하고 처리하기 위한 프로세싱 리소스들을 제공하는 코어 로직(128)에 커플링된다. 상술된 바와 같이, 일 실시예에서, 마스터 디바이스들 각각에 의해 교번적으로 배타적이게 액세스되는 공유 리소스는 메모리이다. 그 결과, 메모리 인터페이스(130)는, 제어기(108)와 하나 또는 그 초과의 메모리 디바이스들(110) 사이의 액세스들을 수행하기 위해 제공된다. 몇몇 실시예들에서, 제어기(108) 및 메모리 디바이스(110)는, 별개의 집적 회로 디바이스들로서 구현된다. 다른 실시예들에서, 제어기 기능은, 마스터 디바이스들(102A-102N) 각각에서의 회로들로 분산되고 포함될 수도 있다.
[0019] 도 2는, 다수의 마스터 디바이스들과 공유 슬레이브 디바이스 사이의 연산들의 시퀀스를 나타내는 흐름도를 도시한다. 공유 리소스에 대한 배타적 액세스는, 단일 트랜잭션을 수행하기 위한 커맨드들의 시퀀스를 수반하는 세마포어 타입 원자적 연산의 사용을 통해 조정된다. 원자적 연산들은, 공유 리소스에 대한 배타적 액세스를 갖지 않는 마스터 디바이스들로부터의 폴링을 감소시킨다. 그 결과, 감소된 폴링 및 연관된 컨텍스트 스위칭은 상호접속의 시그널링 대역폭을 개선하며, 그에 의해 시스템 성능을 개선한다.
[0020] 도 2를 추가적으로 참조하고, 일 예로서 메모리 시스템 컨텍스트를 사용하면, (202)에서, 공유 슬레이브 디바이스(예컨대 메모리)에 대한 배타적 액세스를 소망하는 제 1 마스터 디바이스(예컨대 프로세서)는, 제 1 요청 "획득 액세스"를 슬레이브 디바이스에 송출한다. (204)에서, 슬레이브 디바이스가 다른 마스터 디바이스와의 배타적 연산에 대해 이용가능하면, (206)에서, "성공" 신호가 슬레이브 디바이스로부터 제 1 마스터 디바이스에 송출된다. 이것은, 제 1 마스터 디바이스와 슬레이브 디바이스 사이에서 일련의 판독 및/또는 기입 데이터 트랜잭션들을 수행하기 위한 로킹된 조건을 2개의 디바이스들 사이에 설정한다.
[0021] 도 2를 계속 참조하면, 제 1 마스터가 배타적 액세스를 갖는 동안, (208)에서, 제 2 마스터 디바이스가 슬레이브 디바이스에 배타적 액세스 요청을 송출한다면, (210)에서, 제 1 마스터 디바이스와의 로킹된 조건은 슬레이브 디바이스가 제 2 마스터 디바이스에 "실패" 응답을 응답하는 것을 야기한다. 그 후, 제 2 마스터 디바이스는, 연산을 수행하기 위해, 메모리가 이용가능할 때까지 연산 대기 모드로 진입한다. (212)에서, 제 1 마스터 디바이스가 "해제(release)" 커맨드를 송출한 경우, 가용성이 발생한다. 해제 커맨드에 응답하여 슬레이브 디바이스는, (214)에서, 제 1 마스터 디바이스로부터 해제되고, (216)에서, (앞서 실패한 요청이 슬레이브 디바이스 큐에서 가장 높은 우선순위 연산이라고 가정하면) 제 2 마스터 디바이스에 대해 자동적으로 "웨이크(WAKE)" 커맨드를 생성 및 송출한다. 일단 제 2 마스터 디바이스가 웨이크 커맨드를 수신하면, 배타성을 확정(confirm)하기 위하여, (218)에서 새로운 획득 요청이 송출되어, (220)에서, 슬레이브에 의해 송출되는 대응하는 성공 커맨드를 이용하여 슬레이브 디바이스와 로킹된 상태를 설정한다. 이러한 포인트에서, (222)에서 슬레이브 디바이스는 제 2 마스터 디바이스에 로킹된다.
[0022] 도 3은, 세마포어 타입 원자적 연산들과 관련되는 도 2에서 상술된 방법에 대응하는 방법 단계들의 일 실시예를 마스터 디바이스의 관점에서 더 상세히 도시한다. 마스터 디바이스가, 슬레이브 디바이스에 의해 제어되는 메모리로부터 데이터를 판독(또는 메모리에 데이터를 기입)할 필요가 있는 경우, 마스터 디바이스는, (302)에서, 요청/응답 로직(114)이 "획득" 액세스 커맨드를 생성하게 하기 위한 명령들을 실행시키고, (304)에서, 슬레이브 디바이스에 요청을 송신한다. 요청 송신은, 도 4a로 전달되는 버블(bubble) "A"에 의해 표현된다. 커맨드가 세마포어 타입 연산이라고 (306)에서 결정된다면, (308)에서, 마스터 디바이스는 슬레이브와 추가적인 동작들을 취하기 이전에 응답을 대기한다. 커맨드가 비-세마포어 타입의 커맨드라면, 모든 다른 연산들 및 피연산자(operand)들은 커맨드와 함께 패킷화(packetize)되고, (310)에서, 슬레이브에 디스패칭된다.
[0023] 이제 도 4a를 참조하면, 단계(402)에서, 슬레이브 디바이스 스케줄링 인터페이스(120)는, 제 1 마스터 IC로부터 "획득" 커맨드를 (버블 A를 통하여) 수신한다. 그 후, (404)에서, 요청이 세마포어 타입 연산을 수반하는지에 대한 결정이 이루어진다. 그렇지 않다면, 슬레이브는, (406)에서, 요청 큐(122)에서 배타적 커맨드들을 큐잉하고, (408)에서, 차례로, 배타적 커맨드들을 원자적으로 실행시킨다. 연산이 세마포어 타입 연산이라면, (410)에서, 메모리의 가용성을 표시하는 변수 값이 액세스되고, (412)에서, 변수의 현재 값이 검출된다.
[0024] 도 4b를 참조하면, (414)에서, 검출된 변수의 값은 (도 4a와 도 4b를 연결시키는 버블 "B"를 통하여) 응답 로직(124)에 의해 평가된다. 일 실시예에서, "0"보다 큰 값은 리소스의 가용성을 표시하며, 이는, (416)에서, 이전의 값으로부터 점감된 새로운 변수 값을 기입하는 것을 초래한다. 그 후, (418)에서, 성공한 응답이 버블 "C"를 통하여 제 1 마스터 IC에 리턴된다.
[0025] 변수 값이 임계치를 초과하지 않고, 그에 따라, 리소스가 이용가능하지 않음을 표시하는 이벤트에서, 실패한 응답이 응답 생성기(126)에 의해 생성되며, (420)에서, 버블 "D"를 통하여 요청 마스터에 리턴된다. (422)에서, 리소스는 응답 로직(124)에 의해 자동적으로 모니터링되고, (424)에서, 변수 값이 임계치를 초과하게 되는 경우, 자동적인 통보(응답)가 버블 "E"를 통하여 요청 마스터에 전송된다.
[0026] 비-세마포어타입 원자적 연산들은, 연산 정보 전부를 하나의 액세스 내로 패킷화하는 것을 수반한다. 어떠한 자동적인 검출 또는 통보 메커니즘들도 적용되지 않는다.
[0027] 도 3을 다시 참조하면, 세마포어 타입 연산들에 대해 마스터 디바이스는, 수신된 메시지들을 평가하고, (322)에서, 버블들 C, D, 또는 E를 통하여 "실패" 응답이 수신되었는지를 결정하는 연산 대기 모드에서 대기한다. 대기 모드는, 대기 큐(116)(도 1)에 의해 활성화되며, 이는, 마스터가 슬레이브에 대한 액세스를 취득(gain)할 수 있을 때까지 원래의(original) 액세스 요청을 버퍼에 일시적으로 저장한다. 비-실패(non-fail) 응답(성공 또는 웨이크)이 리턴되고, 요청/응답 로직(114)(도 1)에 의해 수신되는 경우, (324)에서, 수신된 메시지가 성공인지에 대한 추가적인 결정이 수행된다. 그렇다면, (326)에서, 마스터 디바이스와 슬레이브 디바이스 사이의 링크는 로킹되고, 판독 및/또는 기입 연산들의 시퀀스가 발생하여 원자적 트랜잭션을 수행한다. 성공 응답이 수신되지 않으면, "웨이크" 응답이 가정되고, (302)에서, 마스터 디바이스는, 록 조건을 개시하기 위해, 슬레이브 디바이스에 디스패칭하기 위한 후속 "획득" 커맨드를 생성하며, 이는, 상술된 단계들을 통하여 후속 "성공" 응답의 수신을 통해 확정된다.
[0028] 따라서, 제안된 방식들은 가용성을 결정하기 위한 액세스들의 개수를 최소화하고 폴링 연산들을 감소시키는 원자적 연산들을 제공한다. 이것은, 버스 및 연관된 컨텍스트 스위칭 활동들에 액세스하면서 수반되는 오버헤드를 대응하게 감소시킨다.
[0029] 전술된 명세서에서, 본 실시예들은 그들의 특정한 예시적인 실시예들을 참조하여 설명되었다. 그러나, 다양한 변형들 및 변경들이 첨부된 청구항들에서 기재된 바와 같은 본 개시의 광범위한 사상 및 범위를 벗어나지 않으면서 그 실시예들에 대해 행해질 수도 있음이 명백할 것이다. 따라서, 본 명세서 및 도면들은 제한적인 의미보다는 예시적인 의미로 고려되어야 한다.

Claims (21)

  1. 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법으로서,
    제 1 마스터 디바이스로부터 상기 공유 리소스에 액세스하기 위한 요청을 수신하는 단계;
    상기 공유 리소스의 가용성(availability)을 결정하는 단계;
    상기 공유 리소스가 이용가능하면, 성공한 응답을 상기 제 1 마스터 디바이스에 리턴(return)하여, 상기 공유 리소스에 대해 상기 제 1 마스터 디바이스에 의한 액세스를 설정하는 단계; 및
    상기 공유 리소스가 이용가능하지 않으면,
    실패한 응답을 상기 제 1 마스터 디바이스에 리턴하는 단계;
    상기 공유 리소스가 이용가능해지는 때에 대해 자동적으로 모니터링하는 단계; 및
    상기 공유 리소스가 이용가능해지는 경우 상기 제 1 마스터 디바이스에 자동적으로 통보(notify)하는 단계
    를 포함하는, 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법.
  2. 제 1 항에 있어서,
    상기 가용성을 결정하는 단계는,
    상기 공유 리소스가 액세스에 대해 이용가능한지를 표현하는 값을 갖는 변수를 식별하는 단계; 및
    상기 변수에 대한 현재 값을 검출하는 단계를 포함하는, 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법.
  3. 제 2 항에 있어서,
    상기 자동적으로 모니터링하는 단계는,
    상기 변수 값이 미리결정된 임계값에 도달하는 경우를 검출하는 단계를 포함하는, 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법.
  4. 제 2 항에 있어서,
    상기 변수는 세마포어(semaphore) 변수를 포함하는, 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법.
  5. 제 1 항에 있어서,
    복수의 마스터 디바이스들 각각으로부터 상기 공유 리소스에 대한 액세스를 위한 요청을 수신하는 단계; 및
    상기 요청들을 큐잉(queue)하는 단계를 더 포함하는, 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법.
  6. 제 5 항에 있어서,
    상기 자동적으로 통보하는 단계는, 상기 요청들의 큐잉의 순서화(ordering)에 기초하는, 공유 리소스에 대한 다수의 마스터 디바이스들 사이의 액세스를 제어하는 방법.
  7. 디바이스로서,
    연산을 수행하기 위해 공유 리소스에 대한 배타적(exclusive) 액세스를 요청하는 커맨드를 생성하기 위한 요청 로직 ― 상기 공유 리소스는 다수의 디바이스들에 의해 공유됨 ―; 및
    상기 공유 리소스로부터의 실패 응답 신호에 응답하여, 상기 연산에 관하여 대기(standby) 모드에 진입하고, 상기 공유 리소스로부터의 웨이크(wake) 응답의 수신 시 까지 상기 대기 모드를 유지하기 위한 대기 로직을 포함하는, 디바이스.
  8. 제 7 항에 있어서
    상기 디바이스는 집적 회로 프로세서로서 구현되는, 디바이스.
  9. 제 7 항에 있어서,
    시그널링 버스에 커플링하기 위한 인터페이스를 더 포함하며,
    상기 시그널링 버스는, 상기 다수의 디바이스들 및 상기 공유 리소스에 또한 커플링되는, 디바이스.
  10. 제 7 항에 있어서,
    상기 대기 로직은, 상기 공유 리소스에 배타적 액세스를 재-요청함으로써 상기 웨이크 응답의 수신에 응답하는, 디바이스.
  11. 디바이스로서,
    공유 리소스와 마스터 디바이스 사이의 트랜잭션(transaction)을 조정(arbitrate)하기 위한 인터페이스;
    상기 공유 리소스에 대한 액세스를 위한 상기 마스터 디바이스로부터의 착신(incoming) 요청을 수신하기 위한 모니터;
    상기 공유 리소스의 가용성을 결정하기 위한 조정 로직; 및
    주어진 마스터 디바이스가 상기 공유 리소스에 대한 액세스를 취득(gain)하는 것의 성공 또는 실패를 표시하는 신호들을 생성하기 위한 응답 로직을 포함하며,
    상기 인터페이스는, 다수의 마스터 디바이스들로부터의 제 2 마스터 디바이스에 대한 웨이크 신호를 자동적으로 생성하고, 상기 제 2 마스터 디바이스는, 상기 공유 리소스의 결정된 가용성에 기초하여 요청 큐에서 식별되는, 디바이스.
  12. 제 11 항에 있어서,
    상기 모니터는, 상기 다수의 마스터 디바이스들로부터의 공유 리소스에 대한 액세스를 위한 착신 요청들을 수신하는, 디바이스.
  13. 제 12 항에 있어서,
    상기 모니터는, 요청 큐를 포함하는, 디바이스.
  14. 제 13 항에 있어서,
    상기 요청 큐에서의 착신 요청들을 순서화하기 위한 로직을 더 포함하는, 디바이스.
  15. 제 11 항에 있어서,
    메모리 시스템으로서 구현되는, 디바이스.
  16. 제 11 항에 있어서,
    상기 공유 리소스는 메모리를 포함하는, 디바이스.
  17. 제 11 항에 있어서,
    상기 조정 로직은, 상기 공유 리소스가 액세스에 대해 이용가능한지를 표시하는 값을 생성하는 카운터 회로를 포함하는, 디바이스.
  18. 시스템으로서,
    복수의 마스터 디바이스들;
    상기 복수의 마스터 디바이스들에 커플링되는 버스; 및
    상기 버스에 커플링되고, 상기 복수의 마스터 디바이스들에 의해 공유되는 리소스를 포함하는 슬레이브 디바이스를 포함하며,
    상기 슬레이브 디바이스는,
    상기 공유 디바이스와 상기 복수의 마스터 디바이스들로부터의 제 1 마스터 디바이스 사이의 배타적 트랜잭션을 조정하기 위한 인터페이스;
    상기 복수의 마스터 디바이스들 중 적어도 일부로부터 상기 공유 리소스에 대한 액세스를 위한 착신 요청들을 모니터링하기 위한 요청 큐;
    상기 공유 리소스의 가용성을 결정하기 위한 조정 로직;
    상기 복수의 마스터 디바이스들로부터의 주어진 마스터 디바이스가 상기 공유 리소스에 대한 액세스를 취득하는 것의 성공 또는 실패를 표시하는 신호들을 생성하기 위한 응답 로직을 포함하며,
    상기 주어진 마스터 디바이스는, 상기 공유 리소스에 액세스하기 위한 요청을 상기 슬레이브 디바이스에 전송하고,
    상기 인터페이스는, 상기 공유 리소스의 결정된 가용성에 기초하여 상기 요청 큐에서 식별된 제 2 마스터 디바이스를 위한 웨이크 신호를 자동적으로 생성하는, 시스템.
  19. 제 18 항에 있어서,
    상기 복수의 마스터 디바이스들은 다수의 프로세서들을 포함하는, 시스템.
  20. 제 18 항에 있어서,
    상기 슬레이브 디바이스는 메모리 시스템을 포함하는, 시스템.
  21. 제 18 항에 있어서,
    상기 공유 리소스는 메모리를 포함하는, 시스템.
KR1020157011304A 2012-10-04 2012-10-04 고-효율 원자적 연산들을 사용하는 방법 및 장치 KR20150065803A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/082523 WO2014053074A1 (en) 2012-10-04 2012-10-04 Method and apparatus using high-efficiency atomic operations

Publications (1)

Publication Number Publication Date
KR20150065803A true KR20150065803A (ko) 2015-06-15

Family

ID=50434354

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157011304A KR20150065803A (ko) 2012-10-04 2012-10-04 고-효율 원자적 연산들을 사용하는 방법 및 장치

Country Status (6)

Country Link
US (1) US20150234759A1 (ko)
EP (1) EP2904765B1 (ko)
JP (1) JP6129976B2 (ko)
KR (1) KR20150065803A (ko)
CN (1) CN104854845B (ko)
WO (1) WO2014053074A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101639946B1 (ko) 2015-04-13 2016-07-14 엘에스산전 주식회사 듀얼 포트 메모리 시스템의 접근 제어 방법
CN105404555A (zh) * 2015-12-29 2016-03-16 重庆安碧捷科技股份有限公司 医疗多线程共享资源分配处理方法及***
US10176131B1 (en) * 2017-09-27 2019-01-08 Xilinx, Inc. Controlling exclusive access using supplemental transaction identifiers
CN108197046A (zh) * 2017-12-30 2018-06-22 盛科网络(苏州)有限公司 一种实现原子操作的***及方法
CN109445950A (zh) * 2018-09-30 2019-03-08 青岛海尔科技有限公司 Ocf资源的互斥访问方法及***、服务端、介质、设备
US11068303B2 (en) 2019-02-19 2021-07-20 International Business Machines Corporation Adjusting thread balancing in response to disruptive complex instruction
US10942775B2 (en) 2019-03-01 2021-03-09 International Business Machines Corporation Modified central serialization of requests in multiprocessor systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134579A (en) * 1997-08-15 2000-10-17 Compaq Computer Corporation Semaphore in system I/O space
US20020078119A1 (en) * 2000-12-04 2002-06-20 International Business Machines Corporation System and method for improved complex storage locks
KR20050083840A (ko) * 2002-10-28 2005-08-26 데블랩스 에이비 네트워크에서 공유자원의 사용방법 및 장치
KR20060004919A (ko) * 2003-04-24 2006-01-16 인터내셔널 비지네스 머신즈 코포레이션 공유형 리소스의 액세스 방법과 그 장치 및 프로그램 제품
KR20080005455A (ko) * 2005-05-04 2008-01-11 콸콤 인코포레이티드 경합하는 애플리케이션들 간의 무선 장치에서의 자원 조정

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53105139A (en) * 1977-02-24 1978-09-13 Nec Corp Dynamic main memory controller
JPS60169969A (ja) * 1984-02-15 1985-09-03 Fuji Electric Co Ltd マルチプロセツサシステム
JPH04128957A (ja) * 1990-09-20 1992-04-30 Fujitsu Ltd マルチプロセッサシステムにおける共有資源の排他制御方法
CA2057446C (en) * 1991-04-04 1998-02-17 Brian Neil Baker Shared memory access and data structure access control
JPH04361340A (ja) * 1991-06-07 1992-12-14 Fujitsu Ltd メモリ排他制御方式
JP2852149B2 (ja) * 1991-10-31 1999-01-27 日本電気アイシーマイコンシステム株式会社 セマフォビット回路
JP2861943B2 (ja) * 1996-05-29 1999-02-24 日本電気株式会社 セマフォに関するプロセス制御方法
JPH1145193A (ja) * 1997-07-28 1999-02-16 Toshiba Corp ソフトウエア開発支援方法およびソフトウエア開発支援装置および記録媒体
US7007108B2 (en) * 2003-04-30 2006-02-28 Lsi Logic Corporation System method for use of hardware semaphores for resource release notification wherein messages comprises read-modify-write operation and address
US8607241B2 (en) * 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US7944829B2 (en) * 2005-03-28 2011-05-17 Netlogic Microsystems, Inc. Mechanism for managing access to resources in a heterogeneous data redirection device
US7984202B2 (en) * 2007-06-01 2011-07-19 Qualcomm Incorporated Device directed memory barriers
EP2037635A1 (en) * 2007-09-13 2009-03-18 Deutsche Thomson OHG Method for managing network resources in a network and network resource management apparatus
US8396014B2 (en) * 2008-06-25 2013-03-12 Intel Corporation Techniques for management of shared resources in wireless multi-communication devices
CN102025528B (zh) * 2009-09-23 2013-12-18 中兴通讯股份有限公司 地址管理方法、装置和***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134579A (en) * 1997-08-15 2000-10-17 Compaq Computer Corporation Semaphore in system I/O space
US20020078119A1 (en) * 2000-12-04 2002-06-20 International Business Machines Corporation System and method for improved complex storage locks
KR20050083840A (ko) * 2002-10-28 2005-08-26 데블랩스 에이비 네트워크에서 공유자원의 사용방법 및 장치
KR20060004919A (ko) * 2003-04-24 2006-01-16 인터내셔널 비지네스 머신즈 코포레이션 공유형 리소스의 액세스 방법과 그 장치 및 프로그램 제품
KR20080005455A (ko) * 2005-05-04 2008-01-11 콸콤 인코포레이티드 경합하는 애플리케이션들 간의 무선 장치에서의 자원 조정

Also Published As

Publication number Publication date
EP2904765A4 (en) 2016-07-13
EP2904765B1 (en) 2019-05-08
CN104854845A (zh) 2015-08-19
US20150234759A1 (en) 2015-08-20
EP2904765A1 (en) 2015-08-12
WO2014053074A1 (en) 2014-04-10
CN104854845B (zh) 2019-07-23
JP6129976B2 (ja) 2017-05-17
JP2015530679A (ja) 2015-10-15

Similar Documents

Publication Publication Date Title
EP2904765B1 (en) Method and apparatus using high-efficiency atomic operations
CN108595353B (zh) 一种基于PCIe总线的控制数据传输的方法及装置
CN103729329B (zh) 核间通信装置及方法
US10261926B2 (en) Semaphore for multi-core processor
US20080256280A1 (en) Splitting One Hardware Interrupt To Multiple Handlers
EP0344216A1 (en) METHOD AND ARRANGEMENT FOR IMPLEMENTING MULTI-LOCKING INDICATORS IN A MULTIPROCESSOR DATA PROCESSING SYSTEM.
JP4184614B2 (ja) バスシステム及びその実行順序の調整方法
JPH0679305B2 (ja) 保留バスを用いて割り込みに応じる装置及び方法
US9135195B2 (en) Prediction of electronic component behavior in bus-based systems
JP4584935B2 (ja) 動作モデルベースマルチスレッドアーキテクチャ
CN115840621A (zh) 一种多核***的交互方法及相关装置
US9195625B2 (en) Interconnect controller for a data processing device with transaction tag locking and method therefor
CN117009266A (zh) 一种握手协议总线仲裁模块及片上***
US10713188B2 (en) Inter-process signaling system and method
JP5239769B2 (ja) リクエスト順序制御システム、リクエスト順序制御方法およびリクエスト順序制御プログラム
WO2007039933A1 (ja) 演算処理装置
US20140143512A1 (en) Accessing additional memory space with multiple processors
JP2000250853A (ja) バス調整制御装置
JPH0844662A (ja) 情報処理装置
JP6992295B2 (ja) 電子装置
JPH0844661A (ja) 情報処理装置
TWI332615B (en) A fine-grained bandwidth control arbiter and the method thereof
JPH0830549A (ja) バス制御装置
US8688880B2 (en) Centralized serialization of requests in a multiprocessor system
JPS6145348A (ja) バス優先権制御方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application