KR102341933B1 - 트랜잭션 메모리 지원 - Google Patents

트랜잭션 메모리 지원 Download PDF

Info

Publication number
KR102341933B1
KR102341933B1 KR1020167026270A KR20167026270A KR102341933B1 KR 102341933 B1 KR102341933 B1 KR 102341933B1 KR 1020167026270 A KR1020167026270 A KR 1020167026270A KR 20167026270 A KR20167026270 A KR 20167026270A KR 102341933 B1 KR102341933 B1 KR 102341933B1
Authority
KR
South Korea
Prior art keywords
memory
lock address
processing
lock
transaction
Prior art date
Application number
KR1020167026270A
Other languages
English (en)
Other versions
KR20160130781A (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 KR20160130781A publication Critical patent/KR20160130781A/ko
Application granted granted Critical
Publication of KR102341933B1 publication Critical patent/KR102341933B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

비대칭 다중프로세서 시스템(2)은, 트랜잭션 메모리 비아 제어기(14, 16)를 지원하는 복수의 프로세서 코어들(4, 6)과, 트랜잭션 메모리 비아 하드웨어를 지원하지 않는 한 개 이상의 프로세서 코어(8)를 구비한다. 제어기들은, 그들의 관련된 처리 소자가 현재 로크 어드레스에 기억된 로크 값에 의해 보호된 메모리 트랜잭션을 실행하고 있는지 여부를 판정하고, 그들의 처리 소자가 이와 같은 트랜잭션을 실행하고 있는 경우에는, 소정의 조건을 만족할 때까지 배타적 액세스를 위한 로크 어드레스의 해제를 지연시킴으로써, 로크 어드레스에 대한 배타적 액세스를 위한 요구의 수신에 응답한다. 처리 소자가 이와 같은 보호된 메모리 트랜잭션을 실행하고 잇지 않으면, 배타적 액세스를 위해 로크 어드레스가 무조건으로 해제된다. 소정의 조건은, 요구가 수신된 이후에 임계 지연이 초과된 것이거나, 및/또는 요구가 이전에 수신되고 임계 횟수 동안 거부된 것일 수 있다. 트랜잭션 개시 명령을 실행하고 있는 프로세서가 아직 계류중인 메모리 트랜잭션을 실행하지 않고 있는 경우에는, 로크 어드레스를 기억하는 아키텍처 레지스터(76)로부터 로크 어드레스를 판독하는 역할을 하는 이와 같은 트랜잭션 개시 명령의 실행을 통해 이 요구가 발생해도 된다. 프로세서가 이미 메모리 트랜잭션을 실행하고 있으면, 로크 값이 이미 검사된 것으로 가정되므로, 트랜잭션 개시 명령이 로크 어드레스 레지스터(76) 내부에 유지된 로크 어드레스에 기억된 로크 값을 액세스할 필요가 없다.

Description

트랜잭션 메모리 지원{TRANSACTIONAL MEMORY SUPPORT}
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 특히, 본 발명은, 메모리 내부에 공유된 데이터 값들을 기억하는 복수의 처리 소자(processing element)들을 갖는 데이터 처리 시스템 내부에서의 트랜잭션 메모리에 대한 지원에 관한 것이다.
메모리 내부에 기억된 데이터 값들을 공유하는 복수의 처리 소자들을 갖는 데이터 처리 시스템을 제공하는 것이 알려져 있다. 처리 소자들 사이의 정합성(consistency)을 제어하기 위해, 메모리 어드레스 공간의 영역들과 관련된 로크(lock)들을 설치하여, 처리 소자들 중에서 한 개가 이 영역에 대해 액세스를 행하고자 하면, 먼저 이 영역과 관련된 로크 값이 세트되지 않은 것을 확인하는 것이 알려져 있다. 로크 값이 세트된 경우에, 이것은 다른 처리 소자가 이미 이 영역 내부에서 트랜잭션을 행하고 있으므로, 현재의 액세스를 중단하고 나중에 재시도해야 한다는 것을 표시한다. 테스트 결과, 로크가 현재 세트되어 있지 않다는 것이 밝혀진 경우에는, 액세스 요구를 하고 있는 처리 소자가 로크 값을 세트하고, 액세스를 행한 후, 로크 값을 리셋할 수 있다.
로크들의 사용은 처리 소자들 사이에서 데이터 값들을 공유하기 위한 안전한 메카니즘을 제공하지만, 로크들이 거친 레벨의 그래뉼래러티(granularity)로 세트되어, 사실상 로크된 영역 내부의 동일한 데이터 값들에 영향을 미치지 않는 메모리 액세스들이 실제로 어려움이 없이 병렬로 진행될 수도 있을 때 이들 메모리 액세스들이 병렬로 실행되는 것이 금지될 수도 있기 때문에, 성능에 악영향을 미칠 수 있다. 역으로, 로크들이 너무 미세한 입도(fine-grained)를 갖는 경우에는, 이들 로크들을 기억하고 관리하는 것과 관련된 오버헤드의 레벨이 부담이 된다.
상기한 문제를 해소하는 한가지 방법은 일리젼(elision) 메카니즘을 제공하는 것이다. 이와 같은 메카니즘을 사용하면, 처리 소자가 데이터 값들을 액세스할 수 있고 이 처리 소자가 유지하는 데이터 값들의 로컬 복사본에 대해 메모리 트랜잭션을 예측적으로(speculatively) 행할 수 있다. 이와 같은 메모리 트랜잭션을 행할 때, 처리 소자는 시스템 내부의 다른 처리 소자들에게 그것이 특정한 영역의 메모리 어드레스들에 대한 메모리 액세스를 행하고 있다는 것을 통지한다. 다른 처리 소자가 그 자신의 예측 처리의 일부로서 이 영역 내부의 메모리 어드레스들을 포함하는 메모리 트랜잭션을 현재 행하고 있는 경우에는, 이 다른 처리 소자가 이 예측 처리(메모리 트랜잭션)를 중단하여, 요청자가 해당 메모리 영역에 대한 액세스를 취득하여 더 최근의 예측 연산을 행할 수 있다.
계류중인 메모리 트랜잭션의 중단은 교착(deadlock) 상황이 발생할 가능성을 증가시키는 것을 알 수 있다. 따라서, 실행에 대한 대비책(fall back) 경로가 발생하고 처리 작업량(processing workload) 내에서 진행이 이루어지도록 보장하기 위한 메카니즘이 제공된다. 처리 소자들 사이에 경합이 발생하면 전술한 로크 메카니즘을 대비책 경로로서 이용함으로써 이것이 달성될 수도 있다. 이와 같은 로크 메카니즘의 사용은, 경합이 발생할 때 중단되는 예측 메모리 트랜잭션에 근거한 관리에 비해 성능을 감소시킬 수 있지만, 교착를 극복하도록 보장하는 한가지 방법을 제공한다. 따라서, 일리젼 메카니즘이 제공될 때에도, 메모리 트랜잭션의 개시시에 처리 소자들은, 이 메모리 영역 그 자체를 로크하려고 의도하고 있지 않더라고 해당 메모리 영역이 로크되었는지 확인하기 위해 검사를 하고, 보통 예측 메모리 트랜잭션에 근거하여 처리를 진행하게 된다. 이 영역이 로크되어 있는 것을 처리 소자가 발견하면, 메모리 트랜잭션을 진행하지 않고 나중에 그것을 재시도할 수도 있다. 더구나, 처리 소자는 이 처리 소자가 예측 메모리 트랜잭션을 행하고 있는 메모리 영역을 보호하고 있는 로크 어드레스를 감시하고, 이 로크 어드레스가 다른 처리 소자에 의해 충돌하면서 액세스되는 경우에는, 그것의 예측 메모리 트랜잭션을 중단하게 된다. 따라서, 이 로크를 이용할 필요가 있는 처리 소자는, 다른 식으로 로크 값이 세트되는 것을 금지하고 이 영역에 대한 배타적 액세스가 얻어지는 것을 금지할 수 있는 방식으로, 계류중인 메모리 트랜잭션들이 완료되는 것을 기다릴 필요가 없이 로크 값을 세트할 수 있다.
일면에 따르면, 본 발명은, 데이터를 처리하고 원자(atomic) 메모리 트랜잭션에 대한 하드웨어 지원을 포함하는 장치로서,
프로그램 명령들의 시퀀스를 실행하도록 각각 구성된 복수의 처리 소자들과,
상기 복수의 처리 소자들에 의해 공유된 데이터 값들을 기억하도록 구성된 메모리를 구비하고,
상기 복수의 처리 소자들 중에서 적어도 한 개는 상기 메모리 내부의 로크 어드레스에 대한 액세스를 감시하도록 구성된 제어기를 갖는 트랜잭션 메모리 지원 처리 소자이고, 상기 제어기는, 상기 복수의 처리 소자들 중에서 다른 한 개로부터 수신된 요구에 응답하여,
(i) 상기 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하고 있을 때에는, 소정의 조건을 만족할 때까지 배타적 액세스를 위한 상기 로크 어드레스의 해제를 지연시키고,
(ii) 상기 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하지 않고 있을 때에는, 상기 소정의 조건에 무관하게 배타적 액세스를 위한 상기 로크 어드레스를 해제함으로써,
상기 로크 어드레스에 대한 배타적 액세스를 획득하도록 구성된 데이터 처리장치를 제공한다.
본 발명은, 처리 소자들 중에서 한 개에 의해 예측적으로 행해지고 있는 메모리 트랜잭션을 보호하고 있는 로크 어드레스를 감시하는 동안, 요청자에 의한 배타적 이용을 위해 이 로크 어드레스를 즉시 해제함으로써 이 로크 어드레스에 대한 배타적 액세스를 취득하려는 요구에 무조건으로 응답하지 않는 것이 적절한 상황이 존재한다는 것을 인식하고 있다. 요청자에 의한 배타적 액세스를 위해 로크 어드레스를 무조건으로 해제하는 간단한 접근방법은, 성능 및 우선순위 면에서 피어(peer)인 처리 소자들을 포함하는 균일 시스템에서는 적절할 수 있지만, 다른 상황에서는 다른 접근방식이 채용된다. 본 발명은, 처리 소자가 이 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하고 있을 때, 로크 어드레스가 요청자에 의한 배타적 액세스를 위해 해제되기 전에 소정의 조건을 만족해야만 한다는 것을 제공한다. 역으로, 처리 소자가 요구가 행해진 로크 어드레스에 의해 보호된 메모리 트랜잭션에서 실행되고 있지 않을 때에는, 소정의 조건에 무관하게 로크 어드레스가 배타적 액세스를 위해 무조건으로 해제된다.
일부 실시예에서, 제어기는 수신된 요구에 대한 요구 거부 응답을 반환함으로써 로크 어드레스의 해제를 지연시키도록 구성된다. 다른 실시예에서, 제어기는 수신된 요구에 대한 응답의 반환을 지연시킴으로써 로크 어드레스의 해제를 지연시키도록 구성된다.
로크 어드레스를 해제하기 전에 만족해야 하는 소정의 조건의 한가지 예시적인 형태는, 트랜잭션 메모리 지원 처리 소자가 로크 어드레스를 해제하지 않고 로크 어드레스에 대한 소정 수의 액세스 요구를 수신한 것이 될 수 있다. 따라서, 다수의 요구가 행해지고 거부될 때까지 해제가 행해지지 않게 된다.
로크 어드레스를 해제하기 전에 만족해야 하는 소정의 조건의 또 다른 예는, 요구가 수신된 이후에 소정 시간이 경과한다는 것, 즉 소정 기간 동안 해제가 지연되는 것이 될 수 있다.
로크 어드레스를 해제하기 전에 소정의 조건을 만족할 때까지 대기하는 것은, 로크 어드레스가 해제되기 전에 계류중인 메모리 트랜잭션이 완료하는 추가적인 시간을 제공한다. 로크 어드레스가 해제되고 이 로크 어드레스에 의해 보호된 메모리 트랜잭션이 완료하지 않으면, 메모리 트랜잭션이 중단되어도 된다.
본 발명은, 복수의 처리 소자들이 일리젼(elision), 캐시 스누핑 등의 더욱 진보된 트랜잭션 메모리 기술을 지원하는 제어기를 갖지 않는 적어도 한 개의 트랜잭션 메모리 미지원 처리 소자를 구비한 실시예에서 사용되어도 된다. 일례로서, 시스템은 한 개 이상의 간단한 저전력 프로세서 코어와 함께, 다수의 복잡한 고성능 프로세서 코어들을 구비해도 된다. 고성능 프로세서 코어는 더 복잡한 데이터 값 공유 및 트랜잭션 메모리 지원을 위한 메카니즘을 포함하는 한편, 단순한 저전력 코어는 정합성을 확보하기 위해 과도의 로크 메카니즘에 의존한다. 이와 같은 시스템 내부에서, 저전력 프로세서 코어가 고성능 프로세서 코어들에 의해 사용되고 있는 메모리 영역을 액세스하려고 시도하면, 저전력 프로세서 코어가 보통 이들 고성능 프로세서 코어에 대해 메모리 트랜잭션의 즉각적인 중단을 강제하여 전체 시스템의 성능을 저전력 프로세서 코어의 레벨까지 열화시키게 된다. 그러나, 본 발명을 이용하면, 소정의 조건이 만족할 때까지, 고성능 프로세서 코어가 저전력 프로세서 코어에 대한 로크 어드레스의 해제(로크 값이 세트되는 것의 허용)를 보류함으로써, 고성능 프로세서 코어들의 성능의 열화가 줄어들 수 있도록 한다.
이와 같은 비대칭 다중프로세싱 장치는, 에너지 효율적으로 다양한 다른 처리 작업량들에 대체할 수 있는 시스템을 제공하는데 있어서 유용하다.
일부 실시예에서, 소정의 조건은, 트랜잭션 메모리 지원 처리 소자(예를 들어, 고성능 코어인 처리 소자들 중에서 한 개로부터 요구가 수신되어, 이 형태에 부합하지 않는 처리 소자들로부터 수신된 요구가 적어도 당분간 작용하지 않는 것이 될 수도 있다.
메모리 트랜잭션의 개시시에 로크 어드레스/값에 대한 액세스를 이용하는 프로그램 명령들의 실행과 관련된 오버헤드는, 프로세서의 황성설정을 명시하는 파라미터들을 유지하는 아키텍처 레지스터들 내부에 로크 어드레스를 기억하는 전용의 로크 어드레스 레지스터가 설치된 시스템에서는 줄어든다. 따라서, 트랜잭션 개시 명령이 이 처리 소자의 명령 디코더에 의해 디코드될 때, 이것을 사용하여, 처리 소자가 이미 메모리 트랜잭션을 실행하고 있는지 아닌지를 판정하고, 처리 소자가 아직 메모리 트랜잭션을 실행하고 있지 않으면, 로크 어드레스 레지스터에서 로크를 판독하고 이 로크 어드레스에 기억된 로크 값을 액세스한다. 역으로, 처리 소자가 메모리 트랜잭션을 이미 실행하고 있으면, 시스템이 로크 어드레스에 기억된 로크 값을 액세스할 필요가 없이 트랜잭션 개시 명령 이후의 추가적인 처리를 진행해도 된다.
이와 같은 특징은, 프로그램 코드가 보통 트랜잭션 개시 명령을 사용한 메모리 트랜잭션을 행하는 프로그램 명령들 앞에 붙여지므로, 예를 들어 종래의 로크 메카니즘을 사용하는 처리 소자에 의해, 해당 메모리 영역에 대한 로크 값이 세트되는지 여부를 적어도 검사하게 된다는 것을 인식하고 있다. 네스티드(nested) 코드 내에서, 이것은 프로세서가 이미 메모리 트랜잭션을 행하고 있으며 이미 로크 어드레스를 제어할 때 중복되는(redundant) 이와 같은 검사 및 액세스가 행해지도록 하며, 후속의 메모리 트랜잭션이 불필요하게 로크 어드레스 값을 재검사하여 시간 및 에너지를 소모한다. 더구나, 프로세스당 기준으로 로크 어드레스를 기억하는 아키텍처 레지스터를 설치함으로써, 트랜잭션 개시 명령을 마주칠 때, 명령 지정된 위치가 아니라, 아키텍처 레지스터 내부의 이와 같은 고정된 위치에 대해 로크 어드레스의 룩업(lookup)이 행해짐으로써, 소프트웨어 메카니즘을 통한 로크 어드레스를 제공하는 것과 관련된 오버헤드가 줄어들 수도 있다.
또 다른 일면에 따르면, 본 발명은, 데이터를 처리하고 원자 메모리 트랜잭션에 대한 하드웨어 지원을 포함하는 장치로서,
프로그램 명령들의 시퀀스를 각각 실행하는 복수의 처리 수단과,
상기 복수의 처리 수단에 의해 공유된 데이터 값들을 기억하는 메모리 수단을 구비하고,
상기 복수의 처리 수단 중에서 적어도 한 개는, 상기 메모리 수단 내부의 로크 어드레스에 대한 액세스를 감시하고 상기 복수의 처리 수단 중에서 다른 한 개로부터 수신된 요구에 응답하여
(i) 트랜잭션 메모리 지원 처리 수단이 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하고 있을 때에는, 소정의 조건을 만족할 때까지 배타적 액세스를 위한 상기 로크 어드레스의 해제를 지연시키고,
(ii) 상기 트랜잭션 메모리 지원 처리 수단이 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하지 않고 있을 때에는, 상기 소정의 조건에 무관하게 배타적 액세스를 위한 상기 로크 어드레스를 해제함으로써, 상기 로크 어드레스에 대한 배타적 액세스를 획득하는 제어수단을 갖는 트랜잭션 메모리 지원 처리 수단인 데이터 처리장치를 제공한다.
또 다른 일면에 따르면, 본 발명은, 원자 메모리 트랜잭션에 대한 하드웨어 지원을 사용하여 데이터를 처리하는 방법으로서,
복수의 처리 소자들을 사용하여 프로그램 명령들의 시퀀스를 실행하는 단계와,
상기 복수의 처리 소자들에 의해 공유된 데이터 값들을 메모리 내부에 기억하는 단계를 포함하고,
상기 복수의 처리 소자들 중에서 적어도 한 개는 상기 메모리 내부의 로크 어드레스에 대한 액세스를 감시하고, 상기 복수의 처리 소자들 중에서 다른 한 개로부터 수신된 요구에 응답하여,
(i) 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하고 있을 때에는, 소정의 조건을 만족할 때까지 배타적 액세스를 위한 상기 로크 어드레스의 해제를 지연시키고,
(ii) 상기 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하지 않고 있을 때에는, 상기 소정의 조건에 무관하게 배타적 액세스를 위한 상기 로크 어드레스를 해제함으로써,
상기 로크 어드레스에 대한 배타적 액세스를 획득하는 트랜잭션 메모리 지원 처리 소자인 데이터 처리방법을 제공한다.
로그 어드레스가 현재 진행중인 메모리 트랜잭션을 보호하고 있는 경우에, 소정의 조건이 만족하는 경우에만, 요구에 응답하여 로크 어드레스를 해제하는 역할을 하는 메카니즘과 별개로, 이와 같은 목적을 위한 전용의 로크 어드레스 레지스터 내부에 로크 어드레스를 기억하기 위한 장소로서의 역할을 하는 아키텍처 레지스터의 제공에 이용된다. 따라서, 본 발명은, 데이터를 처리하고 원자 메모리 트랜잭션에 대한 하드웨어 지원을 제공하는 장치로서,
프로그램 명령들의 시퀀스를 실행하도록 각각 구성된 복수의 처리 소자들과,
상기 복수의 처리 소자들에 의해 공유된 데이터 값들을 기억하도록 구성된 메모리를 구비하고,
상기 복수의 처리 소자들 중에서 적어도 특정한 한 개는,
상기 복수의 처리 소자들 중에서 상기 적어도 한 개의 환경설정을 명시하는 파라미터들을 유지하도록 구성되고, 상기 메모리의 영역에 대한 배타적 액세스를 제어하는 역할을 하는 로크 어드레스를 기억하는 전용의 로크 어드레스 레지스터를 포함하는 한 개 이상의 아키텍처 레지스터들과,
메모리 트랜잭션의 개시를 표시하는 트랜잭션 개시 명령을 디코드하도록 구성되고,
(i) 상기 복수의 처리 소자들 중에서 상기 특정한 한 개가 메모리 트랜잭션을 실행하지 않고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스의 판독을 제어하는 한 개 이상의 제어신호를 발생하고,
(ii) 상기 복수의 처리 소자들 중에서 상기 특정한 한 개가 메모리 트랜잭션을 이미 실행하고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스를 판독하지 않고 추가적인 처리를 진행하도록 구성된 명령 디코더 회로를 구비한, 데이터 처리장치를 제공한다.
또 다른 일면에 따르면, 본 발명은, 데이터를 처리하고 원자 메모리 트랜잭션에 대한 하드웨어 지원을 제공하는 장치로서,
프로그램 명령들의 시퀀스를 각각 실행하는 복수의 처리 수단과,
상기 복수의 처리 수단에 의해 공유된 데이터 값들을 기억하는 메모리 수단을 구비하고,
상기 복수의 처리 수단 중에서 적어도 특정한 한 개는,
상기 복수의 처리 수단 중에서 상기 적어도 한 개의 환경설정을 명시하는 파라미터들을 유지하고, 상기 메모리 수단의 영역에 대한 배타적 액세스를 제어하는 역할을 하는 로크 어드레스를 기억하는 전용의 로크 어드레스 레지스터 수단을 포함하는 한 개 이상의 아키텍처 레지스터 수단과,
메모리 트랜잭션의 개시를 표시하는 트랜잭션 개시 명령을 디코드하고,
(i) 상기 복수의 처리 수단 중에서 상기 특정한 한 개가 메모리 트랜잭션을 실행하지 않고 있는 경우에는, 상기 로크 어드레스 레지스터 수단으로부터 상기 로크 어드레스의 판독을 제어하는 한 개 이상의 제어신호를 발생하고,
(ii) 상기 복수의 처리 수단 중에서 상기 특정한 한 개가 메모리 트랜잭션을 이미 실행하고 있는 경우에는, 상기 로크 어드레스 레지스터 수단으로부터 상기 로크 어드레스를 판독하지 않고 추가적인 처리를 진행하는 명령 디코더 수단을 구비한, 데이터 처리장치를 제공한다.
또 다른 일면에 따르면, 본 발명은, 원자 메모리 트랜잭션에 대한 하드웨어 지원을 사용하여 데이터를 처리하는 방법으로서,
복수의 처리 소자들을 사용하여 프로그램 명령들의 시퀀스를 실행하는 단계와,
상기 복수의 처리 소자들에 의해 공유된 데이터 값들을 메모리 내부에 기억하는 단계를 포함하고,
상기 복수의 처리 소자들 중에서 적어도 특정한 한 개는,
상기 복수의 처리 소자들 중에서 상기 적어도 한 개의 환경설정을 명시하는 파라미터들을, 상기 메모리의 영역에 대한 배타적 액세스를 제어하는 역할을 하는 로크 어드레스를 기억하는 전용의 로크 어드레스 레지스터를 포함하는 한 개 이상의 아키텍처 레지스터들 내부에 유지하는 단계와,
메모리 트랜잭션의 개시를 표시하는 트랜잭션 개시 명령을 디코드하고,
(i) 상기 복수의 처리 소자들 중에서 상기 특정한 한 개가 메모리 트랜잭션을 실행하지 않고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스의 판독을 제어하는 한 개 이상의 제어신호를 발생하고,
(ii) 상기 복수의 처리 소자들 중에서 상기 특정한 한 개가 메모리 트랜잭션을 이미 실행하고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스를 판독하지 않고 추가적인 처리를 진행하는 단계를 수행하는 데이터 처리방법을 제공한다.
이하, 다음의 첨부도면을 참조하여 본 발명의 실시예를 설명한다.
도 1은 메모리 내부의 데이터 값들을 공유하는 복수의 처리 소자들을 구비한 데이터 처리장치를 개략적으로 나타낸 것이다.
도 2는 요구에 응답하여 다른 처리 소자로부터 수신된 로크 어드레스에 대한 배타적 액세스를 취득하는 제어기의 거동을 개략적으로 나타낸 흐름도이다.
도 3은 요구를 허락하기 전에 만족되어야 하는 소정의 조건의 제 1 형태를 나타낸 흐름도이다.
도 4는 요구를 허락하기 전에 만족되어야 하는 소정의 조건의 제 2 예를 나타낸 흐름도이다.
도 5는 메모리 트랜잭션을 개시하는 트랜잭션 개시 명령에 의해 액세스된 아키텍처 레지스터들 내부의 로크 어드레스 레지스터를 포함하는 데이터 처리 시스템을 개략적으로 나타낸 도면이다.
도 6은 트랜잭션 개시 명령의 처리를 개략적으로 나타낸 흐름도이다.
도 1은 메모리(10) 내부에 기억된 데이터 값들을 공유하는 복수의 처리 소자들(4, 6, 8)을 구비한 데이터 처리 시스템(2)을 개략적으로 나타낸 것이다. 처리 소자들 4, 6은 프로그램 명령들을 실행하기 위한 프로세서 코어들의 형태를 갖고 관련된 캐시 메모리들(10, 12) 및 일리젼 기술에 따라 데이터 값들의 공유를 제어하는 제어기들(14, 16)을 각각 갖는 트랜잭션 메모리 지원 처리 소자들이다. 프로세서 코어들 4, 6은 보통 더 많은 에너지를 소모하지만 에너지를 덜 소모하는 저성능 프로세서 코어들보다 높은 명령 처리 스루풋을 갖는 고성능 프로세서 코어들이다.
또한, 데이터 처리 시스템(2) 내부에는, 프로세싱 명령들의 스트림을 실행하는 비교적 저전력 및 저속의 프로세서 코어의 형태를 갖는 트랜잭션 메모리 미지원 처리 소자(8)가 더 포함되어 있다. 이와 같은 트랜잭션 메모리 미지원 처리 소자(8)는 캐시 메모리와 제어기를 포함하지 않는다. 따라서, 메모리(10) 내부에 기억된 공유된 데이터 값들에 대한 액세스를 관리하기 위해서는, 트랜잭션 메모리 미지원 처리 소자(8)는, 메모리(10)의 영역 내부에 유지된 데이터 값들에 대한 배타적인 액세스를 취득하기 원할 때마다, 로크 값들의 사용에 의존해야만 한다.
이 데이터 처리 시스템(2)은 비대칭 다중프로세서 시스템으로 볼 수 있다. 다양한 프로세서 코어들 4, 6, 8 각각은 프로그램 명령들의 스트림을 실행한다. 이들 명령은 동일한 프로세스 내부에서 유래하거나 다른 프로세스에서 유래한다. 특정한 프로세스는 메모리(10) 내부의 로크 어드레스에 기억된 로크 값과 관련되어도 된다. 로크 어드레스는 프로세서 코어의 환경설정을 정의하고 로크 어드레스를 기억하는 전용의 아키텍처 레지스터들 중에서 한 개 내부에 유지된다.
프로세서 코어들 4, 6의 형태를 갖는 트랜잭션 메모리 지원 처리 소자들은, 그들 각각의 제어기(14, 160을 이용하여, 그들의 캐시 메모리들(10, 12) 내부에 기억된 데이터 값들 사이의 정합성을 관리하고, 각각의 코어들 4, 6에 의해 공유된 데이터 값들에 행해지고 있는 예측 메모리 트랜잭션들이 부적절하게 서로 간섭하는 것을 방지한다. 프로세서 코어들 4, 6 중에서 한 개가 메모리 트랜잭션을 행하고 있을 때, 이것은 판독 및 기록되고 있는 데이터 값들의 예측 복사본들을 그 자신의 캐시 메모리(10, 12) 내부에 유지한다. 메모리 트랜잭션이 완료하면, 이들 데이터 값들이 비예측(non-speculative)이 되어, 필요에 따라 메모리(10)에 다시 기록되거나 다른 처리 소자에게 전달될 수 있다. 그러나, 메모리 트랜잭션 중에 이 메모리 트랜잭션과 관련하여 로컬하게 유지되고 있는 예측 데이터 값들을 액세스하기 위한 요구가 수신되면, 메모리 트랜잭션이 중단되고, 이 액세스에 대한 요청자는 이들 데이터 값들을 액세스할 권리를 취득한다.
일반적인 트랜잭션 메모리 지원을 생각하면, 메모리 어드레스 공간의 중요한 부분이 종래에는 특정한 로크 어드레스에 위치한 로크 값인 로크에 의해 보호된다. (트랜잭션 메모리 소트(sort)의) 트랜잭션은 장애시에 상태가 롤백될 수 있도록 상태(메모리 및 레지스터들)를 예측적으로 유지하는 것으로 구성된다. 장애는 다양한 다른 이유로 인해 일어날 수 있지만, 특히 데이터에 대한 충돌하는 액세스들로 인해 발생한다. 충돌을 검출하기 위해, 트랜잭션들은 판독 세트, 즉 트랜잭션 실행 상태에 있는 동안 처리 소자(PE)에 의해 판독된 어드레스들과, 기록 세트, 즉 트랜잭션 실행 상태에 있는 동안의 대응하는 기록 어드레스들을 유지한다. 트랜잭션 중에 기록된 값들은 다른 처리 소자들에게 보이지 않으며, 이들 값은 캐시 내부에 예측적으로 기억된다. PE(예를 들어, PE0)가 (예를 들면, PE 상의) 다른 트랜잭션의 판독 또는 기록 세트에 있는 라인에 기록하는 경우에, PE1 상의 트랜잭션이 중단된다. (예를 들어, PE0 상의) 트랜잭션이 (예를 들면, PE1 상의) 다른 트랜잭션의 기록 세트에 있는 라인을 판독하면, PE1 상의 트랜잭션이 중단되고, PE0가 (PE1의 캐시에 있는 예측 값이 아니고) 이 어드레스에 대한 전체 시스템(system-wide)의 비예측 값을 수신하게 된다. 다른 옵션이 존재하지만, 이와 같은 요청자가 접근을 얻게 되는 것은 보통 기존의 캐시 코히런시 프로토콜을 사용하여 작업할 때 구현된다.
(트랜잭션 메모리 소트의) 트랜잭션을 사용하여 (로크 일리젼으로 불리는 개념을 통해) 중요한 부분을 보호할 때, 보통 로크 어드레스만을 판독하게 되는데, 즉 로크 값을 세트하지 않는다. 로크가 이미 세트된 경우에는, 트랜잭션이 로크의 전통적인 이용을 가정해야 하므로 트랜잭션이 안전하게 진행될 수 없고, 계속 진행하고자 하는 경우에는, 로크의 소유자와 경쟁할 것이다.
로크가 아직 세트되지 않는 경우에는, 즉 그것의 로크 값이 로크되지 않은 상태에 있는 경우에는, 로크 어드레스의 판독 처리가 상호 배제를 확보하는데 충분하다. 다른 트랜잭션 판독이 동일한 보호된 메모리 영역에 진입하면, 로크 어드레스의 2개의 판독이 괜찮으므로, "진정한(true)" 데이터의 충돌이 발생하지 않는 한, 이들 두 개의 트랜잭션은 동시에 진행할 수 있다. 복수의 처리 소자들은 (트랜잭션 메모리 소트의) 트랜잭션을 개시함으로써 중요한 부분에 예측적으로 진입할 수 있다. 처리 소자가 트랜잭션으로(transactionally) 앞으로 진행하고 있지 않았거나 또는 처리 소자가 트랜잭션 메모리를 지원하지 않기 때문에, 처리 소자가 비트랜잭션으로(non-transactionally) 중요한 부분에 진입하는 경우에는, 종래와 같이 로크를 취해야(세트해야)하는데, 즉 로크를 얻어 세트할 수 있을 때까지 스핀(spin)해야만 한다.
로크 어드레스에 있는 로크된 상태로 로크 값을 세트하는 처리는 다른 처리 소자들로부터의 로크 어드레스를 배타적으로 요청한다. 그들의 판독/기록 세트에 이 로크 어드레스를 갖는 트랜잭션은 중단될 필요가 있다.
도 1의 예시적인 실시예로 되돌아가면, 트랜잭션 메모리 지원 처리 소자들 4, 6은 그들의 제어기(14, 160을 사용하여 메모리 트랜잭션들이 서로 간섭하지 않도록 보장하기 때문에, 이들 처리 소자가 동작하고 있는 메모리 영역과 관련된 로크 값을 그 자체가 세트하지 않는다. 그러나, 메모리 트랜잭션이 중단되는 경우에 요구될 수 있는 대비책 실행 메카니즘에 대한 지원을 제공하기 위해, 또는 그들 자신의 제어기를 갖지 않는 처리 소자들(예를 들면, 트랜잭션 메모리 미지원 처리 소자(8))을 지원하기 위해, 제어기들(14, 16)은 이것들이 메모리 트랜잭션을 행하고 있는 메모리(10) 내부의 영역에 대한 로크 값을 기억하는 로크 어드레스에 대한 액세스 요구를 감시하고, 트랜잭션을 개시하기 전에 로크 값이 세트되지 않는지 검사한다. 이 로크 값을 액세스하기 위한 요구가 검출되면, 제어기(14, 16)는 다른 처리 소자가 예측 메모리 트랜잭션과 충돌하고 있는 것으로 판정하고, 보통 예측 메모리 트랜잭션을 즉시 중단하고 로크 어드레스에 대한 액세스를 해제하는 응답을 반환할 것이다. 그러나, 본 발명에 따르면, 제어기(14, 16)는 이와 같은 통상적인 거동을 수정하고, 그 대신에 소정의 조건이 만족할 때까지 수신된 요구에 응답하여 배타적 액세스를 위한 로크 어드레스의 해제를 지연시킨다.
이와 같은 지연은 해당 프로세서 코어 4,6 내부의 계류중인 예측 메모리 트랜잭션이 완료되도록 허용함으로써, 수신된 요구의 영향을 줄인다. 이것은, 예를 들어, 그것의 공유된 데이터 값들에 대한 로크 값들에만 의존하는 저전력 및 저성능의 트랜잭션 메모리 미지원 처리 소자(8)가 고성능 트랜잭션 메모리 지원 처리 소자들(4, 6)에 의해 행해지는 처리를 과도하게 인터럽트하고 방해하는 것을 방지하는데 유용하다. 결국, 트랜잭션 메모리 미지원 처리 소자(8)는, 이와 같이 구성하지 않은 경우에는 정상적인 진행을 하지 못하도록 원치 않게 차단되는 그것의 트랜잭션을 행하는 것이 허용된다. 그러나, 본 발명은, 트랜잭션 메모리 미지원 처리 소자(8)가 그것이 충돌하는 모든 다른 처리 활동들을 즉시 중단하는 것이 부적절할 수도 있다는 것을 인식하였다.
요구에 응답하여 배타적 액세스를 위한 로크 어드레스의 해제 전에 만족해야 하는 소정의 조건은 다양한 다른 형태를 취할 수 있다. 이들 형태는, 요구가 결국 허락되기 전에 소정의 임계 횟수 동안 이 요구가 거부되는 것을 포함해도 된다. 다른 형태는, 요구에 대한 응답이 소정의 임계 기간 동안 지연되는 것일 수도 있다. 예를 들어, 요구의 소스의 신원(identity)에 근거한 조건과 같이, 다른 조건 뿐만 아니라, 이들 조건들의 조합이 적용될 수도 있는데, 예를 들면, 트랜잭션 메모리 지원 처리 소자로부터 수신된 요구는 요구의 허락과 함께 즉시 응답되는 반면에, 트랜잭션 메모리를 지원하는 않는 다른 소스로부터의 요구는 그것이 허락되기 전에 추가적인 조건을 겪게 된다. 처리 소자가 이 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하고 있지 않을 때 소정의 조건이 로크 어드레스의 게이트 해제에 적용되지 않는데, 즉 이 경우에는, 해제가 소정의 조건에 무관하다.
도 2는 액세스 요구에 응답하는 제어기들(14, 16) 중에서 한 개의 동작을 개략적으로 나타낸 흐름도이다. 스텝 18에서는 액세스 요구가 수신되는 것을 처리가 대기한다. 액세스 요구가 수신되면, 스텝 20은 액세스 요구가 로크 어드레스에 대한 것인지 여부를 판정한다. 액세스 요구가 로크 어드레스에 대한 것인 경우에는, 스텝 22로 처리를 진행하고, 이 요구를 수신한 프로세서 내부에 계류중인 메모리의 동일한 영역에 대해 현재 충돌하는/중첩하는 메모리 트랜잭션이 존재하는지 아닌지를 판정한다. 계류중인 트랜잭션이 존재하지 않으면, 스텝 24로 처리를 직접 진행하여, 요청자에게 요구가 허락됨으로써, 도 1에서 처리될 때 적어도 요구를 수신한 프로세서에 의해 로크 어드레스에 대한 배타적 액세스를 취득할 수 있는 허락이 주어진다(다른 프로세서(들)는 그들 자신의 유사한 검사를 행해도 된다).
스텝 22에서 판정 결과, 요구를 수신한 프로세서 내부에 계류중인 트랜잭션이 존재하는 경우에, 스텝 26은 더 이상 처리를 진행하기 전에 소정의 조건을 만족하는지 여부를 판정하는 역할을 한다. 일 실시예에서, 소정의 조건이 만족할 때, 스텝 28로 처리를 진행하여, 스텝 24로 처리를 진행하기 전에 계류중인 메모리 트랜잭션이 중단된다. 다른 실시예에서는, 도 2의 점선 박스에 나타낸 것과 같이, 소정의 조건은 이 요청자로부터의 요구가 이미 특정한 횟수 이미 거부된 것이며, 이 조건을 만족하지 않으면, 계류중인 메모리 트랜잭션의 중단이 없이 요구 거부 응답이 스텝 30에서 반환되고, 그 대신에 요청자에 의존하여 원하는 경우에는 요구를 반복한다.
스텝 20에서의 판정의 결과, 액세스 요구가 로크 어드레스에 대한 것이 아닌 경우에는, 스텝 30으로 처리를 진행하여, 요구를 수신한 프로세서가 수신한 요구와 관련되는 메모리 어드레스를 유지하고 있는지 아닌지에 대한 판정이 행해진다. 프로세서가 이 메모리 어드레스를 유지하지 않고 있는 경우에는, 스텝 24에서 액세스 요구가 허락된다. 스텝 30에서의 판정 결과, 프로세서가 해당 메모리 어드레스를 유지하는 경우에는, 스텝 32는 메모리 어드레스가 예측적으로, 즉 로컬 제어기(14, 16)에 의해 관리되는 메모리 트랜잭션의 일부로서 유지되어 있는지 아닌지를 판정한다. 메모리 어드레스가 예측적으로 유지된 경우에는, 스텝 34에서 전체 계류중인 메모리 트랜잭션이 중단되고, 스텝 24에서 액세스 요구가 허락된다. 메모리 어드레스가 예측적으로 유지되지 않은 경우에, 스텝 36은 메모리 어드레스가 더티인지 아닌지 판정하고, 스텝 24에서 허락 응답의 반환 이후에 요청자에 의해 어드레스가 배타적으로 유지되려고 할 때, 스텝 40에서 요구를 수신한 프로세서로부터 메모리 어드레스가 소거되기 전에, 스텝 38에서 필요한 경우에는 라이트 백(write back)을 행한다.
도 3은 소정의 조건이 만족하는지 여부에 대한 판정의 한가지 형태를 개략적으로 나타낸 것이다. 스텝 42에서, 요구가 트랜잭션 메모리 지원 처리 소자로부터 수신된 것인지 여부에 대한 판정이 행해진다. 트랜잭션 메모리 지원 처리 소자(즉, 수신자의 피어)로부터 요구가 수신된 경우에는, 스텝 44로 직접 처리를 진행하여, 조건이 만족하는 것으로 설정된다. 트랜잭션 메모리 지원 처리 소자로부터 요구가 수신되지 않은 경우에, 스텝 46은 지연 타이머를 초기화한다. 그후, 요구를 수신한 처리 소자가 그것의 메모리 트랜잭션을 완료하거나, 스텝 46에서의 초기화 이후에 지연 시간이 소정의 임계값을 초과할 때까지 스텝 48 및 50을 통해 처리가 순환된다. 이들 조건들 중에서 어느 한 개가 만족하면, 스텝 44에서 소정의 조건이 만족하는 것으로 설정된다.
도 4는 소정의 조건이 만족하는 것으로 설정되는 방법의 또 다른 실시예를 제공한다. 스텝 52에서는, 요구가 트랜잭션 메모리 지원 처리 소자로부터 수신된 것인지에 대해 판정이 행해진다. 트랜잭션이 이와 같은 트랜잭션 메모리 지원 처리 소자로부터 수신된 경우에는, 그것이 즉시 허락된 것으로 표시되고, 거부 계수값을 제로값으로 설정하는 스텝 54와 소정의 조건이 만족하는 것으로 설정되는 스텝 56을 거쳐 처리가 진행한다. 스텝 52에서의 판정에서 요구가 트랜잭션 메모리 지원 처리 소자 이외로부터 수신된 경우에, 스텝 58은 거부 계수값이 임계 계수값에 도달하였는지 아닌지 판정한다. 거부 계수값이 임계 계수값에 도달한 경우에는, 스텝 54에서의 처리가 거부 계수값을 제로값으로 설정하고, 스텝 56이 소정의 조건이 만족되는 것으로 설정한다. 그러나, 거부 계수값이 임계 계수값에 아직 도달하지 않은 경우에는, 스텝 60으로 처리를 진행하여 거부 계수값을 증분하고, 스텝 62에서 요구 거부 발생의 진행단계를 취한다. 도 4의 처리는, 요구에 대해 소정의 조건이 만족되는 것으로 설정하고 배타적 액세스가 취득될 수 있기 전에, 소정의 횟수 동안 트랜잭션 메모리 미지원 처리 소자로부터 수신된 요구를 거부하는 역할을 한다.
도 5는 명령 파이프라인(66), 명령 디코더(68), 명령 실행회로(70), 범용 레지스터 뱅크(72) 및 아키텍처 레지스터들의 세트(74)를 갖는 프로세서를 구비한 데이터 처리 시스템(64)을 개략적으로 나타낸 것이다. 데이터 처리장치(64)는 도 1의 트랜잭션 메모리 지원 처리 소자들 4, 6 중에서 한 개이어도 된다. 명령 파이프라인(66)에 검색된 명령들은 명령 디코더(68)에 의해 디코드될 때까지 명령 파이프라인(66)을 따라 지나간다. 해당 명령을 실행하기 위해, 명령 디코더(68)는 명령 실행회로(70) 및 프로세서 내부의 다른 소자들의 동작을 제어하는 제어신호를 발생하는 역할을 한다. 실행된 명령들은 트랜잭션 개시 명령을 포함한다.
이와 같은 트랜잭션 개시 명령은 행하려고 하는 메모리 트랜잭션에 대응하여 실행될 프로그램 명령들의 시퀀스의 시작 부분에 포함된다. 이와 같은 트랜잭션 개시 명령은, 아키텍처 레지스터들(74) 중에서 한 개를 구성하는 로크 어드레스 레지스터(76) 내부에 기록된 로크 어드레스로부터 로크 값을 판독하는 역할을 한다. 이와 같은 판독은 프로세서가 아직 메모리 트랜잭션을 행하지 않고 있을 때에만 발생할 필요가 있다. 프로세서가 이미 메모리 트랜잭션을 행하고 있는 경우에는, 로크 값이 세트되어 있는지를 검사할 필요가 발생하는 경우에 제어기(14, 16)가 그것의 하드웨어 메카니즘을 사용하여 메모리 트랜잭션을 중단하게 되기 때문에, 이와 같은 검사가 이미 행해지므로, 반복할 필요가 없다. 그러나, 프로세서가 아직 메모리 트랜잭션을 실행하고 있지 않은 경우에는, 디코더의 동작은, 트랜잭션 개시 명령을 실행하여 적어도 로크 어드레스 레지스터(76) 내부에 유지된 로크 어드레스에 기억된 로크 값을 액세스하는 것이다. 프로세서가 현재 메모리 트랜잭션을 실행하고 있는지 여부에 대한 프로세서의 상태는, 메모리 트랜잭션이 현재 프로세서 내부에서 활성인지 여부를 표시하는 다른 아키텍처 상태 레지스터(78) 내부에 기억되어도 된다. 메모리 트랜잭션이 개시되면, 제어기(14, 16)는 이 상태를 표시하도록 아키텍처 상태 레지스터(78)의 값을 설정한다. 트랜잭션 개시 명령은, 필요할 때, 로크 값이 이미 세트되어 있는지 여부의 판정과 이 로크 값에 대한 배타적 액세스를 위한 요구의 발행을 기동하는 것과 같은 다른 동작을 할 수도 있다.
트랜잭션 개시 명령이 명령 디코더(68)에 의해 디코드되고, 아키텍처 상태 레지스터(78)로부터의 판정 결과 프로세서 내부에 이미 계류중인 메모리 트랜잭션이 존재하는 경우에는, 이들 검사가 이미 계류중인 메모리 트랜잭션을 개시한 트랜잭션 개시 명령에 의해 행해진 것으로 가정을 할 수 있기 때문에, 로크 어드레스에 기억된 로크 값에 대해 액세스를 할 필요가 없이 명령 스트림으로부터의 명령의 처리가 더 진행되는 것이 허용된다.
로크 어드레스 레지스터(76)에 의해 기억된 로크 어드레스는 현재 프로세서에 의해 실행되고 있는 특정한 프로그램 프로세스와 관련되어도 된다. 이 프로세스가 변경되면, 로크 어드레스 레지스터(76) 내부에 기억된 로크 어드레스가 적절히 변경된다. 따라서, 동일한 프로그램 프로세스를 실행하고 있을 때 서로 다른 프로세서들에 의해 유지된 로크 어드레스들이 일치하게 되는데, 이것은 이들 프로세서가 메모리(10) 내부의 데이터 값들을 공유하고 있는 경우에 자주 일어나는 상황이다.
도 6은 트랜잭션 개시 명령을 디코딩시에 명령 디코더(68)의 동작을 나타낸 흐름도이다. 스텝 80에서는, 트랜잭션 개시 명령이 디코드될 때까지 처리를 대기한다. 스텝 82에서는, 프로세서가 현재 메모리 트랜잭션을 행하고 있는지 여부에 대한 판정이 행해진다. 이것은 아키텍처 레지스터(74) 내부의 아키텍처 상태 레지스터(78)로부터 값을 판독함으로써 달성된다. 프로세서가 현재 메모리 트랜잭션을 행하고 있으면, 적어도 이와 같은 국면의 트랜잭션 개시 명령의 실행이 완료된 것으로 생각되어 처리가 종료한다.
스텝 82에서의 판정 결과, 프로세서가 현재 메모리 트랜잭션을 행하고 잇지 않은 경우에, 스텝 84는 로크 어드레스 레지스터(76)로부터 로크 어드레스를 판독하는 역항을 한다. 그후, 스텝 86은 로크 어드레스 레지스터(76)에서 판독된 어드레스에 기억된 로크 값을 액세스한다. 이와 같은 로크 값의 액세스는, 일부 실시예에서는, 로크 값을 세트하는 역할을 하거나, 적어도, 이 로크 어드레스에 대한 액세스를 감시하고 있었던 다른 프로세서들에게 이 트랜잭션 개시 명령을 실행한 프로세서의 동작을 통지하는 역할을 한다. 프로세스당 기준으로 아키텍처 레지스터 내부에 로크 어드레스를 기억하는 것은, 해당 프로세서가 룩업이 이미 행해졌다는 가정에 근거하여 메모리 트랜잭션을 이미 행하고 있는 경우에, 로크 값의 더욱 효율적인 룩업이 달성되도록 허용하고, 이와 같은 루프를 행함에 있어서 처리 노력의 억제를 허용한다. 이것은, 예를 들면, 프로세서가 트랜잭션 메모리 지원 처리 소자이고 그것의 제어기(14, 16)가 충돌이 발생한 경우에 메모리 트랜잭션들 사이의 충돌을 관리하는 역할을 하기 때문에, 네스티드 메모리 트랜잭션이 행해지고 로크 값에 대한 반복된 액세스가 필요하기 않은 경우일 수 있다.

Claims (20)

  1. 데이터를 처리하고 원자 메모리 트랜잭션에 대한 하드웨어 지원을 포함하는 장치로서,
    프로그램 명령들의 시퀀스를 실행하도록 각각 구성된 복수의 처리 소자들과,
    상기 복수의 처리 소자들에 의해 공유된 데이터 값들을 기억하도록 구성된 메모리를 구비하고,
    상기 복수의 처리 소자들 중에서 적어도 한 개는 상기 메모리 내부의 로크 어드레스에 대한 액세스를 감시하도록 구성된 제어기를 갖는 트랜잭션 메모리 지원 처리 소자이고, 상기 제어기는, 상기 복수의 처리 소자들 중에서 다른 한 개로부터 수신된 요구에 응답하여,
    (i) 상기 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하고 있을 때에는, 소정의 조건을 만족할 때까지 배타적 액세스를 위한 상기 로크 어드레스의 해제를 지연시키고,
    (ii) 상기 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하지 않고 있을 때에는, 상기 소정의 조건에 무관하게 배타적 액세스를 위한 상기 로크 어드레스를 해제함으로써,
    상기 로크 어드레스에 대한 배타적 액세스를 획득하도록 구성된 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 제어기는 상기 수신된 요구에 대한 요구 거부 응답을 반환함으로써 상기 로크 어드레스의 해제를 지연시키도록 구성된 데이터 처리장치.
  3. 제 1항에 있어서,
    상기 제어기는 상기 수신된 요구에 대한 응답의 반환을 지연시킴으로써 상기 로크 어드레스의 해제를 지연시키도록 구성된 데이터 처리장치.
  4. 제 1항, 제 2항 또는 제 3항 중 어느 한 항에 있어서,
    상기 소정의 조건의 적어도 일부는, 상기 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스를 해제하지 않고 상기 로크 어드레스에 대한 소정 수의 액세스 요구들을 수신한 것인 데이터 처리장치.
  5. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 소정의 조건의 적어도 일부는, 상기 트랜잭션 메모리 지원 처리 소자가 소정 시간 동안 상기 로크 어드레스의 해제를 지연시킨 것인 데이터 처리장치.
  6. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 메모리 트랜잭션이 완료하기 전에 상기 로크 어드레스가 해제된 경우에, 상기 제어기는 로크 값에 의해 보호된 상기 메모리 트랜잭션을 중단하도록 구성된 데이터 처리장치.
  7. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복수의 처리 소자들은 상기 제어기를 갖지 않는 적어도 한 개의 트랜잭션 메모리 미지원 처리 소자를 구비한 데이터 처리장치.
  8. 제 7항에 있어서,
    상기 트랜잭션 메모리 미지원 처리 소자는, 로크 값에 의해 보호된 메모리 트랜잭션의 실행의 개시 전에 로크 취득 프로그램 명령들의 시퀀스를 실행하도록 구성된 데이터 처리장치.
  9. 제 7항에 있어서,
    상기 트랜잭션 메모리 미지원 처리 소자는 상기 트랜잭션 메모리 지원 처리 소자보다 낮은 소비전력 및 낮은 명령 처리 성능을 갖는 데이터 처리장치.
  10. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복수의 처리 소자들은 비대칭 다중프로세서 장치를 구성하는 데이터 처리장치.
  11. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    복수의 트랜잭션 메모리 지원 처리 소자들을 구비한 데이터 처리장치.
  12. 제 11항에 있어서,
    상기 복수의 트랜잭션 메모리 지원 처리 소자들 중에서 한 개로부터 상기 수신된 요구가 수신되는 경우에 상기 소정의 조건을 만족하는 데이터 처리장치.
  13. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복수의 처리 소자들 중에서 적어도 한 개는,
    상기 복수의 처리 소자들 중에서 상기 적어도 한 개의 환경설정을 명시하는 파라미터들을 유지하도록 구성되고, 상기 로크 어드레스를 기억하는 전용의 로크 어드레스 레지스터를 포함하는 한 개 이상의 아키텍처 레지스터들과,
    메모리 트랜잭션의 개시를 표시하는 트랜잭션 개시 명령을 디코드하도록 구성되고,
    (i) 상기 복수의 처리 소자들 중에서 상기 적어도 한 개가 메모리 트랜잭션을 실행하지 않고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스의 판독과 상기 로크 어드레스에 기억된 로크 값의 적어도 액세스를 제어하는 한 개 이상의 제어신호를 발생하고,
    (ii) 상기 복수의 처리 소자들 중에서 상기 적어도 한 개가 메모리 트랜잭션을 이미 실행하고 있는 경우에는, 상기 로크 어드레스에 기억된 상기 로크 값을 액세스하지 않고 추가적인 처리를 진행하도록 구성된 명령 디코더 회로를 구비한 데이터 처리장치.
  14. 제 13항에 있어서,
    상기 데이터 처리장치는 특정한 기간 동안 복수의 프로그램 프로세스들 중에서 특정한 한 개를 실행하는 상기 복수의 처리 소자들 중에서 특정한 한 개를 사용하여 복수의 서로 다른 프로그램 프로세스들에 대응하는 프로그램 명령들을 실행하도록 구성되고, 상기 복수의 처리 소자들 중에서 상기 특정한 한 개의 상기 로크 어드레스 레지스터는 상기 특정한 기간 동안 상기 복수의 프로그램 프로세스들 중에서 상기 특정한 한 개의 로크 어드레스를 기억하는 데이터 처리장치.
  15. 데이터를 처리하고 원자 메모리 트랜잭션에 대한 하드웨어 지원을 포함하는 장치로서,
    프로그램 명령들의 시퀀스를 각각 실행하는 복수의 처리 수단과,
    상기 복수의 처리 수단에 의해 공유된 데이터 값들을 기억하는 메모리 수단을 구비하고,
    상기 복수의 처리 수단 중에서 적어도 한 개는, 상기 메모리 수단 내부의 로크 어드레스에 대한 액세스를 감시하고 상기 복수의 처리 수단 중에서 다른 한 개로부터 수신된 요구에 응답하여
    (i) 트랜잭션 메모리 지원 처리 수단이 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하고 있을 때에는, 소정의 조건을 만족할 때까지 배타적 액세스를 위한 상기 로크 어드레스의 해제를 지연시키고,
    (ii) 상기 트랜잭션 메모리 지원 처리 수단이 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하지 않고 있을 때에는, 상기 소정의 조건에 무관하게 배타적 액세스를 위한 상기 로크 어드레스를 해제함으로써,
    상기 로크 어드레스에 대한 배타적 액세스를 획득하는 제어수단을 갖는 트랜잭션 메모리 지원 처리 수단인 데이터 처리장치.
  16. 원자 메모리 트랜잭션에 대한 하드웨어 지원을 사용하여 데이터를 처리하는 방법으로서,
    복수의 처리 소자들을 사용하여 프로그램 명령들의 시퀀스를 실행하는 단계와,
    상기 복수의 처리 소자들에 의해 공유된 데이터 값들을 메모리 내부에 기억하는 단계를 포함하고,
    상기 복수의 처리 소자들 중에서 적어도 한 개는 상기 메모리 내부의 로크 어드레스에 대한 액세스를 감시하고, 상기 복수의 처리 소자들 중에서 다른 한 개로부터 수신된 요구에 응답하여,
    (i) 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하고 있을 때에는, 소정의 조건을 만족할 때까지 배타적 액세스를 위한 상기 로크 어드레스의 해제를 지연시키고,
    (ii) 상기 트랜잭션 메모리 지원 처리 소자가 상기 로크 어드레스에 의해 보호된 메모리 트랜잭션을 실행하지 않고 있을 때에는, 상기 소정의 조건에 무관하게 배타적 액세스를 위한 상기 로크 어드레스를 해제함으로써,
    상기 로크 어드레스에 대한 배타적 액세스를 획득하는 트랜잭션 메모리 지원 처리 소자인 데이터 처리방법.
  17. 데이터를 처리하고 원자 메모리 트랜잭션에 대한 하드웨어 지원을 제공하는 장치로서,
    프로그램 명령들의 시퀀스를 실행하도록 각각 구성된 복수의 처리 소자들과,
    상기 복수의 처리 소자들에 의해 공유된 데이터 값들을 기억하도록 구성된 메모리를 구비하고,
    상기 복수의 처리 소자들 중에서 적어도 특정한 한 개는,
    상기 복수의 처리 소자들 중에서 상기 적어도 한 개의 환경설정을 명시하는 파라미터들을 유지하도록 구성되고, 상기 메모리의 영역에 대한 배타적 액세스를 제어하는 역할을 하는 로크 어드레스를 기억하는 전용의 로크 어드레스 레지스터를 포함하는 한 개 이상의 아키텍처 레지스터들과,
    메모리 트랜잭션의 개시를 표시하는 트랜잭션 개시 명령을 디코드하도록 구성되고,
    (i) 상기 복수의 처리 소자들 중에서 상기 특정한 한 개가 메모리 트랜잭션을 실행하지 않고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스의 판독을 제어하는 한 개 이상의 제어신호를 발생하고,
    (ii) 상기 복수의 처리 소자들 중에서 상기 특정한 한 개가 메모리 트랜잭션을 이미 실행하고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스를 판독하지 않고 추가적인 처리를 진행하도록 구성된 명령 디코더 회로를 구비한 데이터 처리장치.
  18. 제 17항에 있어서,
    상기 데이터 처리장치는 특정한 기간 동안 복수의 프로그램 프로세스들 중에서 특정한 한 개를 실행하는 상기 복수의 처리 소자들 중에서 특정한 한 개를 사용하여 복수의 서로 다른 프로그램 프로세스들에 대응하는 프로그램 명령들을 실행하도록 구성되고, 상기 복수의 처리 소자들 중에서 상기 특정한 한 개의 상기 로크 어드레스 레지스터는 상기 특정한 기간 동안 상기 복수의 프로그램 프로세스들 중에서 상기 특정한 한 개의 로크 어드레스를 기억하는 데이터 처리장치.
  19. 데이터를 처리하고 원자 메모리 트랜잭션에 대한 하드웨어 지원을 제공하는 장치로서,
    프로그램 명령들의 시퀀스를 각각 실행하는 복수의 처리 수단과,
    상기 복수의 처리 수단에 의해 공유된 데이터 값들을 기억하는 메모리 수단을 구비하고,
    상기 복수의 처리 수단 중에서 적어도 특정한 한 개는,
    상기 복수의 처리 수단 중에서 상기 적어도 한 개의 환경설정을 명시하는 파라미터들을 유지하고, 상기 메모리 수단의 영역에 대한 배타적 액세스를 제어하는 역할을 하는 로크 어드레스를 기억하는 전용의 로크 어드레스 레지스터 수단을 포함하는 한 개 이상의 아키텍처 레지스터 수단과,
    메모리 트랜잭션의 개시를 표시하는 트랜잭션 개시 명령을 디코드하고,
    (i) 상기 복수의 처리 수단 중에서 상기 특정한 한 개가 메모리 트랜잭션을 실행하지 않고 있는 경우에는, 상기 로크 어드레스 레지스터 수단으로부터 상기 로크 어드레스의 판독을 제어하는 한 개 이상의 제어신호를 발생하고,
    (ii) 상기 복수의 처리 수단 중에서 상기 특정한 한 개가 메모리 트랜잭션을 이미 실행하고 있는 경우에는, 상기 로크 어드레스 레지스터 수단으로부터 상기 로크 어드레스를 판독하지 않고 추가적인 처리를 진행하는 명령 디코더 수단을 구비한 데이터 처리장치.
  20. 원자 메모리 트랜잭션에 대한 하드웨어 지원을 사용하여 데이터를 처리하는 방법으로서,
    복수의 처리 소자들을 사용하여 프로그램 명령들의 시퀀스를 실행하는 단계와,
    상기 복수의 처리 소자들에 의해 공유된 데이터 값들을 메모리 내부에 기억하는 단계를 포함하고,
    상기 복수의 처리 소자들 중에서 적어도 특정한 한 개는,
    상기 복수의 처리 소자들 중에서 상기 적어도 한 개의 환경설정을 명시하는 파라미터들을, 상기 메모리의 영역에 대한 배타적 액세스를 제어하는 역할을 하는 로크 어드레스를 기억하는 전용의 로크 어드레스 레지스터를 포함하는 한 개 이상의 아키텍처 레지스터들 내부에 유지하는 단계와,
    메모리 트랜잭션의 개시를 표시하는 트랜잭션 개시 명령을 디코드하고,
    (i) 상기 복수의 처리 소자들 중에서 상기 특정한 한 개가 메모리 트랜잭션을 실행하지 않고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스의 판독을 제어하는 한 개 이상의 제어신호를 발생하고,
    (ii) 상기 복수의 처리 소자들 중에서 상기 특정한 한 개가 메모리 트랜잭션을 이미 실행하고 있는 경우에는, 상기 로크 어드레스 레지스터로부터 상기 로크 어드레스를 판독하지 않고 추가적인 처리를 진행하는 단계를 수행하는 데이터 처리방법.
KR1020167026270A 2014-03-06 2015-03-04 트랜잭션 메모리 지원 KR102341933B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1403948.1A GB2523804B (en) 2014-03-06 2014-03-06 Transactional memory support
GB1403948.1 2014-03-06
PCT/GB2015/050619 WO2015132584A1 (en) 2014-03-06 2015-03-04 Transactional memory support

Publications (2)

Publication Number Publication Date
KR20160130781A KR20160130781A (ko) 2016-11-14
KR102341933B1 true KR102341933B1 (ko) 2021-12-22

Family

ID=50554603

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167026270A KR102341933B1 (ko) 2014-03-06 2015-03-04 트랜잭션 메모리 지원

Country Status (8)

Country Link
US (1) US10241933B2 (ko)
EP (1) EP3114564B1 (ko)
JP (1) JP6503369B2 (ko)
KR (1) KR102341933B1 (ko)
CN (1) CN106068497B (ko)
GB (1) GB2523804B (ko)
IL (1) IL247423B (ko)
WO (1) WO2015132584A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495111B2 (en) * 2014-10-10 2016-11-15 The Boeing Company System and method for reducing information leakage from memory
EP3607464A1 (en) 2017-04-21 2020-02-12 Huawei Technologies Co., Ltd. Data locking method based on alternating row and column locks
GB2567433B (en) 2017-10-10 2020-02-26 Advanced Risc Mach Ltd Checking lock variables for transactions in a system with transactional memory support
US10572387B2 (en) * 2018-01-11 2020-02-25 International Business Machines Corporation Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer
US10783031B2 (en) * 2018-08-20 2020-09-22 Arm Limited Identifying read-set information based on an encoding of replaceable-information values
CN110795039A (zh) * 2019-10-25 2020-02-14 北京浪潮数据技术有限公司 一种基于对象存储服务的数据管理方法、装置及相关组件

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020066051A1 (en) 2000-11-29 2002-05-30 International Business Machines Corporation Method and apparatus for providing serialization support for a computer system
US20090144524A1 (en) 2007-11-29 2009-06-04 International Business Machines Corporation Method and System for Handling Transaction Buffer Overflow In A Multiprocessor System
US20110016470A1 (en) 2009-07-17 2011-01-20 International Business Machines Corporation Transactional Conflict Resolution Based on Locality
WO2013048826A1 (en) 2011-09-29 2013-04-04 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0664567B2 (ja) * 1989-12-25 1994-08-22 株式会社日立製作所 多重プロセッサシステム
EP0567355B1 (en) * 1992-04-24 2001-09-19 Compaq Computer Corporation A method and apparatus for operating a multiprocessor computer system having cache memories
US5790851A (en) * 1997-04-15 1998-08-04 Oracle Corporation Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment
JPH1115682A (ja) * 1997-06-23 1999-01-22 Nec Corp マルチオペレーティングシステム
JP2003050789A (ja) * 2001-08-07 2003-02-21 Fujitsu Ltd 回路、プロセッサ、及びマルチプロセッサシステム
US20050086446A1 (en) * 2003-10-04 2005-04-21 Mckenney Paul E. Utilizing software locking approach to execute code upon failure of hardware transactional approach
US8074030B1 (en) 2004-07-20 2011-12-06 Oracle America, Inc. Using transactional memory with early release to implement non-blocking dynamic-sized data structure
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US8914620B2 (en) * 2008-12-29 2014-12-16 Oracle America, Inc. Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
WO2013115816A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for speculative abort control mechanisms
US9367323B2 (en) * 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US8943278B2 (en) * 2012-07-31 2015-01-27 Advanced Micro Devices, Inc. Protecting large regions without operating-system support

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020066051A1 (en) 2000-11-29 2002-05-30 International Business Machines Corporation Method and apparatus for providing serialization support for a computer system
US20090144524A1 (en) 2007-11-29 2009-06-04 International Business Machines Corporation Method and System for Handling Transaction Buffer Overflow In A Multiprocessor System
US20110016470A1 (en) 2009-07-17 2011-01-20 International Business Machines Corporation Transactional Conflict Resolution Based on Locality
WO2013048826A1 (en) 2011-09-29 2013-04-04 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Tim Harris 외 1명. 'Revocable locks for non-blocking programming'. Proceedings fot the 10th ACM SIGPLAN symposium on Principles and practice of parallel programming, 2005.05., pp.72-82.

Also Published As

Publication number Publication date
IL247423B (en) 2020-03-31
US20170017583A1 (en) 2017-01-19
GB2523804B (en) 2021-03-31
GB201403948D0 (en) 2014-04-23
CN106068497A (zh) 2016-11-02
JP6503369B2 (ja) 2019-04-17
EP3114564B1 (en) 2020-02-26
GB2523804A (en) 2015-09-09
JP2017507429A (ja) 2017-03-16
KR20160130781A (ko) 2016-11-14
IL247423A0 (en) 2016-11-30
US10241933B2 (en) 2019-03-26
WO2015132584A1 (en) 2015-09-11
EP3114564A1 (en) 2017-01-11
CN106068497B (zh) 2020-03-10

Similar Documents

Publication Publication Date Title
KR102341933B1 (ko) 트랜잭션 메모리 지원
US7120762B2 (en) Concurrent execution of critical sections by eliding ownership of locks
US8973004B2 (en) Transactional locking with read-write locks in transactional memory systems
US9971627B2 (en) Enabling maximum concurrency in a hybrid transactional memory system
JP6470300B2 (ja) データ処理のための方法及びプロセッサ
US9342454B2 (en) Nested rewind only and non rewind only transactions in a data processing system supporting transactional storage accesses
US20100332770A1 (en) Concurrency Control Using Slotted Read-Write Locks
US9798577B2 (en) Transactional storage accesses supporting differing priority levels
US8302105B2 (en) Bulk synchronization in transactional memory systems
US20150242251A1 (en) Managing speculative memory access requests in the presence of transactional storage accesses
CN106415512B (zh) 存储器管理算法的动态选择
US8972666B2 (en) Mitigating conflicts for shared cache lines
Mohamedin et al. On scheduling best-effort HTM transactions
US20140006722A1 (en) Multiprocessor system, multiprocessor control method and processor
JPS6055465A (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