KR101642646B1 - 인터럽트가능 저장 익스클루시브 - Google Patents

인터럽트가능 저장 익스클루시브 Download PDF

Info

Publication number
KR101642646B1
KR101642646B1 KR1020150022234A KR20150022234A KR101642646B1 KR 101642646 B1 KR101642646 B1 KR 101642646B1 KR 1020150022234 A KR1020150022234 A KR 1020150022234A KR 20150022234 A KR20150022234 A KR 20150022234A KR 101642646 B1 KR101642646 B1 KR 101642646B1
Authority
KR
South Korea
Prior art keywords
strex
primitive
memory
init
sync
Prior art date
Application number
KR1020150022234A
Other languages
English (en)
Other versions
KR20150099434A (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 KR20150099434A publication Critical patent/KR20150099434A/ko
Application granted granted Critical
Publication of KR101642646B1 publication Critical patent/KR101642646B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • 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
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Computer Security & Cryptography (AREA)
  • Multi Processors (AREA)

Abstract

일 예에서, 인터럽트가능 원자적 익스클루시브 메모리 동작을 위해 구성된 프로세서가 본원에서 개시된다. 예를 들면, 로드 익스클루시브(LDEX)는 이에 저장 익스클루시브(STREX)가 이어지는데, 이들 둘은 함께하여 원자를 형성한다. 인터럽트의 적시에 핸들링을 용이하게 하기 위해서, STREX 동작은 두 부분으로 분할된다. STREX_INIT는 인터럽트가능할 수 없지만 그러나 고정된 수의 클럭 사이클을 취하기 때문에 확정적인 실행 시간을 갖는다. STREX_INIT는 값을 메모리 버스에 보내진다. 이에 이어 리턴 값이 가용한지 여부에 대해 플래그를 폴링하는 STREX_SYNC 동작이 어어진다. STREX_SYNC는 인터럽트가능할 수 있으며, 인터럽트로부터 리턴시 동작의 원자성이 와해되어졌는지를 판정하기 위한 방법이 개시된다. 원자성이 와해된다면, 명령은 실패하며 반면 원자성이 보존된다면 명령은 완료된다.

Description

인터럽트가능 저장 익스클루시브{INTERRUPTIBLE STORE EXCLUSIVE}
이 출원은 컴퓨터 아키텍처 분야에 관한 것으로, 특히 인터럽트가능 저장 익스클루시브 프리미티브를 가진 디지털 신호 프로세서 또는 이외 다른 프로세서에 관한 것이다.
어드밴스드 마이크로제어기 버스 아키텍처(AMBA)는 칩 상의 시스템(SoC) 및 응용특정의 집적회로(ASIC)-기반의 마이크로제어기를 설계할 때 유용한 칩 상에 버스를 위한 개방된, 공개된 표준이다. 이것은 광범위한 모바일, 임베드, 및 저-파워 환경에서 사용된다. 이의 발단 이래로, AMBA의 범위는 마이크로제어기 장치를 훨씬 넘어섰으며, 현재는 스마트폰같은 최근의 휴대 모바일 장치에서 사용되는 응용 프로세서를 포함하여, 일 범위의 ASIC 및 SoC 부분들에 널리 사용된다. AMBA 표준은 적합한 시스템에서 기능 블록의 연결 및 관리를 특정하며, 다수의 제어기 및/또는 주변장치를 가진 시스템을 설계하는데 유용하다.
AMBA의 3세대는 고-수행, 고-클럭-주파수 시스템을 수용하게 설계되는 어드밴스드 확장가능 인터페이스(AXI)를 포함한다.
본 발명은 동반된 도면들과 함께 읽었을 때 다음 상세한 설명으로부터 더 잘 이해된다. 산업에서의 표준 관행에 따라, 여러 특징들은 축척에 맞게 도시되지 않으며 단지 예시 목적을 위해 사용됨을 강조한다. 사실, 여러 특징들의 치수들은 논의 명확성을 위해 임의로 증가되거나 감소될 수 있다.
도 1은 본 발명의 하나 이상의 예에 따라 예시적 디지털 신호 프로세서(DSP) 코어의 개요적 블록도이다.
도 1a는 본 발명의 하나 이상의 예에 따라 STREX 레지스터의 블록도이다.
도 2는 본 발명의 하나 이상의 예에 따라 계산장치(200)의 블록도이다.
도 3은 본 발명의 하나 이상의 예에 따라 STREX 상태 머신의 블록도이다.
도 4 및 도 5는 본 발명의 하나 이상의 예에 따라 STREX_INIT 프리미티브 및 STREX_SYNC 프리미티브의 흐름도이다.
도 6은 본 발명의 하나 이상의 예에 따라 LDEX 프리미티브 및 STREX 프리미티브의 사용 경우의 흐름도이다.
도 7 및 도 7a는 본 발명의 하나 이상의 예에 따라 도 6에 관련하여 개시된 진리표의 신호 타이밍 차트이다.
개요
일 예에서, 본원에서 인터럽트가능 원자적 익스클루시브 메모리 동작을 위해 구성된 프로세서가 개시된다. 예를 들면, 로드 익스클루시브(LDEX)는 이에 저장 익스클루시브(STREX)가 이어지는데, 이들 둘은 함께하여 원자를 형성한다. 인터럽트의 적시에 핸들링을 용이하게 하기 위해서, STREX 동작은 두 부분으로 분할된다. STREX_INIT는 인터럽트가능은 아니지만 그러나 이것은 고정된 수의 클럭 사이클을 취하기 때문에 확정적인 실행 시간을 갖는다. STREX_INIT는 값을 메모리 버스에 보낸다. 이에 이어 리턴 값이 가용한지 여부에 대해 플래그를 폴링하는 STREX_SYNC 동작이 어어진다. STREX_SYNC는 인터럽트가능일 수 있으며, 인터럽트로부터 리턴시 동작의 원자성이 와해되어졌는지를 판정하기 위한 방법이 개시된다. 원자성이 와해되었다면, 명령은 실패하며 반면 원자성이 보존된다면 명령은 완료된다.
또 다른 예에서, 메모리; 메모리에 통신가능하게 결합된 메모리 버스; 및 메모리 버스를 통해 메모리에 통신가능하게 결합된 프로세서를 포함하는 칩 상의 시스템이 본원에 개시되며, 상기 프로세서는 저장 익스클루시브 초기화(STREX_INIT) 명령, (STREX_INIT 명령은 메모리 내 위치에 익스클루시브 저장 트랜잭션을 개시하게 동작할 수 있음); 저장 익스클루시브 동기화(STREX_SYNC) 명령(STREX_SYNC 명령은 XWAVAIL 인디케이터를 모니터하게 동작할 수 있으며, XWAVAIL 인디케이터는 STREX_INIT 프리미티브에 대한 XWRESULT 응답이 가용함을 나타내게 동작할 수 있으며, 상기 XWRESULT 응답은 메모리 내 위치에 익스클루시브 저장 트랜잭션이 성공적이었는지 여부를 나타내게 동작할 수 있음)을 포함하는 저장 익스클루시브 기능을 제공하는 회로를 포함한다.
또 다른 예에서, 메모리; 메모리에 통신가능하게 결합된 메모리 버스; 및 메모리 버스를 통해 메모리에 통신가능하게 결합된 계산 유닛을 포함하는 디지털 신호 프로세서 시스템이 본원에서 개시되며, 계산 유닛은 저장 익스클루시브 초기화(STREX_INIT) 프리미티브를 실행하는 단계(STREX_INIT 프리미티브는 메모리 내 위치에 익스클루시브 저장 트랜잭션을 개시하게 동작할 수 있음); 별도의 저장 익스클루시브 동기화(STREX_SYNC) 프리미티브를 실행하는 단계(STREX_SYNC 프리미티브는 XWAVAIL 인디케이터를 모니터하게 동작할 수 있고, XWAVAIL 인디케이터는 STREX_INIT 프리미티브에 대한 XWRESULT 응답이 가용함을 나타내게 동작할 수 있으며, XWRESULT 응답은 메모리 내 위치에 익스클루시브 저장 트랜잭션이 성공적이었는지 여부를 나타내게 동작할 수 있음)를 포함하는 익스클루시브 프리미티브를 제공하게 동작할 수 있다.
또 다른 예에서, 계산장치에 의해 수행되고, 저장 익스클루시브 초기화(STREX_INIT) 프리미티브를 실행하는 단계(STREX-INTI 프리미티브는 메모리 위치에 익스클루시브 저장 트랜잭션을 개시하게 동작할 수 있음); 별도의 저장 익스클루시브 동기화(STREX_SYNC) 프리미티브를 실행하는 단계(STREX_SYNC 프리미티브는 XWAVAIL 인디케이터를 모니터하게 동작할 수 있고, XWAVAIL 인디케이터는 STREX_INIT 프리미티브에 대한 XWRESULT 응답이 가용함을 나타내게 동작할 수 있으며, XWRESULT 응답은 메모리 위치에 익스클루시브 저장 트랜잭션이 성공적이었는지 여부를 나타내게 동작할 수 있음)를 포함하는 저장 익스클루시브 프리미티브를 제공하는 방법이 본원에서 개시된다.
발명의 실시예
다음 개시되는 바는 본 발명의 서로 다른 특징들을 구현하기 위한 많은 서로 다른 실시예들, 혹은 예들을 제공한다. 본 발명을 간단히 하기 위해 성분들 및 배열들의 특정한 예들이 이하 기술된다. 물론, 이들은 단지 예들이며 제한하려는 것이 아니다. 또한, 본 발명은 여러 예들에서 참조부호들 및/또는 문자들을 반복할 수 있다. 이 반복은 단순화 및 명확성을 위한 것이며 자체가 논의되는 여러 실시예들 및/또는 구성들 간에 관계를 좌우하지 않는다.
서로 다른 실시예는 서로 다른 잇점들을 가질 수 있고, 어떠한 특별한 잇점도 반드시 임의의 실시예로부터 요구되는 것은 아니다.
AXI는 세마포-형 "익스클루시브" 메모리 액세스를 지원한다. 예를 들면, 복수의 처리 코어는 병렬로 동작하는데, 한 코어는 원자적 판독-동작-기입을 수행하기를 원할 수 있다. 슬레이브 (메모리 위치)가 원자적 동작 동안에 액세되지 않음을 보장하기 위해서, 마스터 (코어)는 익스클루시브 판독 및 익스클루시브 기입을 수행할 수 있다. 버스는 원자적 동작 동안 록되지 않는다. 그보다는, 메모리 제어기는 영향받은 메모리 위치를 플래그할 수 있고, 판독이 완료된 후에 그리고 기입이 완료되기 전에 또 다른 마스터가 위치에 액세스한다면, AXI 버스는 오류 플래그를 셋 할수 있다. 이러한 동작을 지원하는 메모리 제어기의 예는 ARM의 코어링크 DMC-400 다이나믹 메모리 제어기이다. 이 명세서 전체에 걸쳐 사용되는 바와 같이, "메모리 제어기"는, 적합한 상황에서, 전술한 메모리 제어기, 임의의 동등한 장치 또는 구조, 메모리 관리 유닛(MMU), 메모리 제어기와 MMU와의 조합, 혹은 본원에 개시되는 메모리 관리 및 제어 방법을 수행하게 동작할 수 있는 장치 또는 장치들의 조합을 포함한다. 공통되는 실시에어, MMU는 도 1에서와 같이, 메모리 아키텍처의 코어-측 상에 위치될 수 있고, 반면 버스 및 메모리 제어기는 메모리-측 상에 있을 수 있다. 많은 다른 배열이 가능하며, 이 명세서는 임의의 이러한 배열을 광범하게 포괄하게 의도된다.
본 발명의 하나 이상의 실시예에 따라, 신규한 "로드 익스클루시브"(LDEX) 프리미티브 및 "저장 익스클루시브"(STREX) 프리미티브가 정의된다. 이 맥락에서 "프리미티브"는 다른 프리미티브 또는 고-레벨 동작과 함께 고-레벨 동작을 구축하기 위해 사용될 수 있는 기본적 또는 프리미티브 동작을 의미하며, 비제한적 예로서, 사용자-액세스가능 하드웨어 명령, 또 다른 하드웨어 명령의 부분으로서 수행되는 비-사용자-액세스가능 동작, 사용자-액세스가능 소프트웨어 절차, 혹은 상이한 사용자-액세스가능 소프트웨어 절차의 부분으로서 수행되는 비-사용자-액세스가능 소프트웨어 절차일 수 있다.
LDEX 프리미티브는 메모리 위치로부터 값을 판독하고 이 위치에의 익스클루시브 액세스를 확립한다. 코어가 위치에 익스클루시브 액세스를 할 수 있는 반면, 메모리 제어기는 위치를 모니터하고, 또 다른 코어가 익스클루시브 액세스를 확립하려고 하거나 위치에 값을 기입하려고 시도하는지를 검출한다. 어느 경우에서든, 제1 코어는 익스클루시브 액세스를 잃는다.
STREX은 익스클루시브 기입 트랜잭션을 수행한다. 메모리 제어기, 또는 동등한 블록은 개시하는 코어가 위치에 익스클루시브 액세스를 할 수 있다면 이 트랜잭션이 메모리 위치만을 업데이트할 것임을 보장한다. 위치가 성공적으로 업데이트되었는지를 나타내기 위해서, 플래그가 셋되거나, 버스 상에 신호로서 리턴 값이 제공된다. 이에 따라, LDEX와 STREX와의 조합을 사용하여, 원자적 메모리 동작은 이를테면 자원 상에 록을 셋하거나 세마포를 요청할 때, 수행될 수 있다. 예에서, 원자적 동작은 메모리 위치로부터 록 값을 판독하고, 값이 록되었는지를 체크하고, 값이 언록되었다면 록된 값을 메모리 위치에 기입하고, 이어 위치가 성공적으로 업데이트되었음을 체크하는 것을 포함할 수 있다. 분명히, 데드록은 코어가 성공적으로 록을 록된 값으로 수정하였지만 업데이트가 성공되어진 것을 검출하지 못했다면 발생할 것이다. 이것은, 예를 들면, 트랜잭션에 응하여 성공 또는 실패 표시가 버스 상에 나타날 때 코어가 다른 작업을 수행하고 있게 인터럽트가 익스클루시브 기입 트랜잭션 동안 주입될 때 일어날 수 있다. 이에 따라, 데드록이 발생하지 않게 STREX 동작 동안 인터럽트를 록 아웃하는 것이 바람직한 것으로 나타날 수 있다.
그러나, 본 명세서에 기재된 발명자는 값이 저속 주 메모리에 저장되어야 하는 캐시 또는 L1 메모리 미스(miss)의 경우에 비-인터럽트가능 STREX 프리미티브는 문제가 될 수 있음을 인식하였다. 이것은 특히 임베드 혹은 고-수행 시스템에서, 수락불가한 지연을 야기할 수 있다. 이것은 또한 시스템이 실시간 동작을 위해 증명받는 것이 문제가 될 수 있는데, 이러한 증명은 인터럽트를 록 아웃하는 STREX 프리미티브의 경우엔 보증될 수 없는 것인 확정적 레이턴시를 요구할 수 있기 때문이다.
잇점이 있게, 본 명세서는 각각이 확정적인 혹은 인터럽트가능한 2개의 개별적인 프리미티브들로 분할되는 STREX 프리미티브를 정의한다. 예에서, 제1 프리미티브는 "저장 익스클루시브 초기화"(STREX_INIT)라고 하며 응답을 기다리거나 성공에 대해 체크함이 없이 기입 요청을 초기화한다. 제2 프리미티브는 "저장 익스클루시브 동기화"(STREX_SYNC)이며, 이것은 인터럽트가능하며 모니터 루프에 진입하여 기입 요청에 대해 리턴 값이 가용함을 나타내는 플래그가 셋 되는 것을 감시한다. 일단 리턴 값이 검출되면, 이것은 판독되고 저장 익스클루시브가 성공적이었는지 여부에 따라 조건부 브랜치가 발생할 수 있다.
본 발명의 STREX 프리미티브는 주 프로세서 파이프라인으로 병렬로 실행하는 상태 머신과 상호작용한다. 이 상태 머신은 익스클루시브 기입 트랜잭션 응답을 기다리고 이를 주 프로세서 파이프라인으로 실행하는 프리미티브에 전달되게 동작한다.
예에서, STREX_INIT 프리미티브는 기입 익스클루시브 트랜잭션을 개시하며 트랜잭션에 대한 응답을 기다리고 있는 상태에 STREX 상태 머신이 진입하게 한다. 이 명령은 본질적으로 인터럽트가능하지 않으며, 동작 전체는 예시적 STREX_INIT의 두 동작이 고정된 수의 사이클을 취하기 때문에 고정된 수의 사이클 내에서 인터럽트가능하다. STREX_INIT이 완료된 후에, STREX 상태 머신은 STREX_SYNC 상태로 진출한다.
STREX_SYNC 프리미티브는 STREX 상태 머신이 트랜잭션 응답을 수신하고 "응답 가용 상태"에 진입하기를 기다린다. 일단 머신이 이 상태에 진입하였으면, 응답이 처리되고 적합한 조치가 취해진다. 이어, 상태 머신은 비활성 상태오 옮겨진다.
STREX_SYNC 프리미티브는 STREX 상태 머신이 응답-가용 상태에 진입하기를 기다리는 동안 어보트(abort)되고 이어 익스클루시브 기입 트랜잭션 응답을 잃지 않고 인터럽트(RTI)로부터 리턴시 안전하게 재시작될 수 있기 때문에 고정된 수의 사이클 내에서 인터럽트가능하다. 일단 상태 머신이 응답-가용 상태에 진입하였으면, 응답은 고정된 수의 사이클 내에 스레드 콘텍스트에 카피될 수 있다.
이들 두 프리미티브는 고정된 수의 사이클 내에 인터럽트가능하기 때문에, 두 프리미티브로 구성된 시퀀스는 고정된 수의 사이클 내에 인터럽트가능하다.
하나 이상의 실시예에서, 임의의 STREX_INIT 프리미티브가 실행된 후에, 매칭되는 STREX_SYNC은 또 다른 STREX_INIT이 시작될 수 있기 전에 완료될 것으로 예상된다. 이것은 트랜잭션 응답이 올바른 STREX_INIT에 매칭됨을 보장하며, 이것은 AXI 원자적 익스클루시브 프로토콜의 요건이다. 예에서, 완전한 개입된 STREX_SYNC 없이 2개의 STREX_INIT 프리미티브에 마주하게 되었을 때, 프로세서는 예외를 일으킨다.
단일 프로그램 내에서 다수의 STREX_INIT를 피하는 것은 프로그래머의 책임으로 간주될 수 있으나, 다중-타스트 동작 시스템을 실행하는 프로세서 상에서, 운영 시스템(OS)은 STREX 시퀀스가 완료되고 새로운 스레드 또는 새로운 프로세스로 스위칭하기 전에 응답이 스레드 콘텍스트에 카피될 것을 보증하는 타스크를 맡을 수 있다. 따라서 이의 콘텍스트 스위칭 코드 내에서, OS는 STREX 상태 머신이 응답을 기다리고 있는지 아니면 가용한 응답을 갖고 있는지를 체크하고, 그러하다면 응답을 보관된 스레드 콘텍스트에 카피하기 위해 STREX_SYNC을 실행한다. 이에 따라, STREX_SYNC 프리미티브는 STREX 상태 머신이 비활성일 때 무동작(NOP)이 되게 정의될 수 있고, 이 경우 이것은 무조건적으로 실행될 수 있다.
OS 콘텍스트 스위칭 코드 내에서 STREX_SYNC 프리미티브를 실행하는 것은 이것이 콘텍스트를 임의의 진행중의 STREX 트랜잭션의 기간에 스위칭하는데 걸리는 시간을 잠재적으로 증가시키는데, 그러나, 콘텍스트 스위칭 코드보다 높은 우선도를 가진 인터럽트 핸들러는 전체 인터럽트 레이턴시가 여전히 고정되도록 여전히 실행할 수 있다.
이 발명에 개시된 STREX 프리미티브를 구현하는 프로세서 상에서, 콘텍스트 스위칭 코드보다 높은 우선도를 가진 인터럽트 핸들러는 STREX_INIT 또는 STREX_SYNC 프리미티브를 내포하지 않는다. 이들이 내포한다면, 이들은 인터럽트된 스레드의 콘텍스트에서 응답을 보관하기 위해 핸들러에 진입시 STREX_SYNC을 무조건적으로 실행할 필요가 있을 수 있다. 이것은 인터럽트 레이턴시에 영향을 미치는 진행중의 익스클루시브 기입 트랜잭션의 완료를 기다릴 것이다.
예에서, STREX_SYNC 상태는 LDEX 또는 STREX 프리미티브에 의해 야기되는 예외에서 익스클루시브 상태를 리셋하기 위해서 예외 핸들러에서 사용될 수 있다.
본 발명의 LDEX 프리미티브는 정규 로드 명령같이 메모리로부터 데이터를 판독하고 또한 위치에의 익스클루시브 액세스를 확립한다. 예에서, 비-공유가능 메모리로부터 로드 익스클루시브는 정확히 동일한 위치로부터 정규 로드로서 메모리 관리유닛(MMU)을 통해 로드한다. 그러나, 공유가능 메모리로부터 로드 익스클루시브는 AXI 버스 상에서 익스클루시브 판독을 수행한다.
예에서, STREX 프리미티브는 플래그에 의존할 수 있다. 일 실시예에서, 이들은 시퀀스 스테이터스(SEQSTAT) 레지스터와 같은 단일 레지스터에 제공된다. STREX 플래그는 SEQSTAT 레지스터 내에 다음의 비트들을 포함할 수 있다.
비트 명칭 설명 리셋 모드 가시성
21 XMONITOR 익스클루시브 기입 모니터. 0=오픈, 1=익스클루시브 0b0 R/NW 공공
22 XACTIVE 익스클루시브 기입 활성 0b0 R/NW 공공
23 XWAVAIL 익스클루시브 기입 응답 가용 0b0 R/NW 공공
LDEX 프리미티브를 성공적으로 완료하였을 때, 데이터 레지스터는 업데이트될 수 있고 다음 플래그가 셋된다.
플래그 조건 명령의 완료시 값
SEQSTAT.XMONITOR 항시 업데이트됨 1
예에서, AXI 익스클루시브 판독이 "OKAY" 응답을 리턴한다면, 슬레이브는 익스클루시브 트랜잭션을 지원하지 않으며 예외가 일어날 수 있다.
일부 실시예에서, 일반적으로 오정렬된 액세스들이 지원될지라도, 어드레스는 정렬되어야 한다. LDEX는 정규 로드에 의해 야기될 수 있는 것들 외에도 다음의 예외 및 오류들을 야기할 수 있다.
조건 예외 또는 H/W 오류
오정렬된 어드레스 데이터 액세스 오정렬된 어드레스 위배 예외
코어 MMR에의 액세스 슈퍼바이저 자원의 위법 사용
CPLB 내 I/O 장치 공간에 마크된 메모리에 액세스 데이터 액세스 CPLB 보호 위배 예외
AXI 익스클루시브 판독은 OKAY 응답을 리턴한다 외부 메모리 어드레싱 오류
STREX_INIT는 어드레스된 메모리에의 익스클루시브 액세스를 할 수 있다면 단지 메모리를 수정할 수 있다. 이에 따라, 프리미티브는 다음과 같이 XMONITOR 플래그의 값에 의존한다.
플래그 명령의 시작시 값 작용
SEQSTAT.XMONITOR 0 CC=0
SEQSTAT.XMONITOR 1 업데이트(Preg,val) 시도, CC=1, XWACTIVE=1
위치가 비-공유가능하다면, 메모리 업데이트는 이하 기술되는 바와 같이 코어가 SEQSTAT를 업데이트하는 것을 제외하고, 그 위치에 정규 저장으로서 수행될 수 있다. 위치가 공유가능하다면 메모리 업데이트는 AXI 버스 상에 익스클루시브 기입하여 시도된다.
예에서, 그러나 시도된 기입은 아니지만 STREX_INIT 프리미티브를 완료하였을 때, ASTAT 레지스터의 조건 코드(CC) 플래그는 수정될 수 있다.
플래그 조건 의미
ASTAT.CC 항시 업데이트된다 0=기입 시도 없음, 1=기입 시도
SEQSTAT.XMONITOR 항시 업데이트된다 0=기입 시도 없음, 1=기입 시도
SEQSTAT.XWACTIVE 기입이 시도되는 경우에만 셋 익스클루시브 기입 응답 펜딩
LDEX 프리미티브에서와 같이, 일부 실시예에서, 오정렬된 액세스가 일반적으로 지원될지라도, 어드레스는 정렬되어야 한다.
예시적 STREX_INIT 프리미티브는 정규 저장에 의해 야기될 수 있는 것들 외에도, 다음의 예외 및 오류들을 야기할 수 있다.
조건 예외 또는 H/W 오류
오정렬된 어드레스 데이터 액세스 오정렬된 어드레스 위배 예외
코어 MMR에의 액세스 슈퍼바이저 자원의 위법 사용
CPLB 내 I/O 장치 공간에 마크된 메모리에 액세스 데이터 액세스 CPLB 보호 위배 예외
XWACTIVE=1 또는 명령 전에 XWAVAIL=1 슈퍼바이저 자원의 위법 사용?
STREX 상태 머신은 기입 트랜잭션의 진행을 추적하고 이것이 시스템으로부터 응답을 수신하였을 때 SEQSTAT에 플래그를 업데이트한다.
플래그 조건 기입 트랜잭션의 완료시 값
SEQSTAT.XWAVAIL 항시 업데이트된다 1 익스클루시브 기입 응답 가용
기입 응답 자체는 내부 상태로서 MMU 내에 유지되고, 예를 들면, 버스 신호로서 제공될 수 있다. 응답은 예로서 MMU.XWRESULT라 하며 다음과 같이 정의된다.
MMU . XWRESULT 의미
0 AXI 익스클루시브 기입 트랜잭션은 EXOKAY 이의외 임의의 값으로 응답
1 기입은 비-공유가능에 대한 것이었고, 혹은 AXI 익스클루시브 기입 응답은 EXOKAY이었다
STREX_SYNC 프리미티브는 프로세서 상태를 STREX 상태 머신과 동기화하여, 임의의 펜딩 기입 응답을 캡처하고 익스클루시브성(exclusivity)을 해제한다.
XMONITOR 및 XWACTIVE이 셋 된다면 명령은 XWAVAIL이 STREX 상태 머신에 의해 셋 될 때까지 교착된다. 이어, XMONITOR, XWACTIVE, 및 XWAVAIL이 셋 된다면, 익스클루시브 기입으로부터 응답은 CC에 카피된다.
명령의 완료시, XMONITOR, XWACTIVE, 및 XWAVAIL은 모두 클리어되고, STREX 상태 머신을 리셋한다.
플래그 조건 명령 완료시 값 의미
ASTAT.CC XMONITOR 및 XWACTIVE 및 XWAVAIL이 시작되는 경우에만 변경 ? 0=기입 실패, 1=기입 성공
SEQSTAT.XMONITOR 항시 업데이트된다 0
SEQSTAT.XWACTIVE 항시 업데이트된다 0
SEQSTAT.XWAVAIL 항시 업데이트된다 0
STREX_SYNC 프리미티브가 인터럽트된다면, STREX 상태 머신은 계속하여 기입 트랜잭션을 추적하고 백그라운드에서 SEQSTAT에 플래그를 업데이트할 수 있다.
실시예에서, LDEX 및 STREX의 상세는 이들이 어드레스하는 메모리가 공유가능한지 아니면 비-공유가능한지에 따라 변경할 수 있다. 공유성은 메모리 공간 및 "캐시가능 보호 룩어사이드 버퍼"(CPLB) 셋팅들로부터 추론될 수 있다. 예를 들면, 아날로그 Blackfin® 프로세서에서 CPLB 디스크립터는 주어진 메모리 페이지에 대해 캐시가능성 및 보호 속성을 정의한다.
메모리 캐시가능성 특성 의미 공유성
MMR 임의 코어 또는 시스템 MMR 위법
L1 임의 L1 sram 비-공유가능
L2 CPLBEN=0 CPLB 비활성 공유가능
L2 CPLBBYPASS=1 캐시 일시적 비활성 공유가능
L2 000 페이지는 비-캐시가능 메모리이다 공유가능
L2 001 L2에 비-캐시가능, L1에 기입 백 캐시가능 비-공유가능
L2 010 L2에 기입 백 캐시가능, L1에 비-캐시가능 비-공유가능
L2 011 L1 및 L2에 기입 백 캐시가능 비-공유가능
L2 100 I/O 장치 공간 위법
L2 101 L2에 비-캐시가능, L1에 개시가능을 통한 기입 비-공유가능
L2 110 L2에 캐시가능을 통한 기입, L1에 비-캐시가능 비-공유가능
L2 111 L1 및 L2에 캐시가능을 통한 기입 비-공유가능
위에서 "위법"으로 표시된 위치를 향한 LDEX 또는 STREX 프리미티브는 예외를 야기할 수 있다.
비-공유가능 메모리를 향한 LDEX 또는 STREX 프리미티브는 성공할 수 있으나, 다른 코어에 관하여 익스클루시브하지 않을 수 있다. 그보다는, 이것은 동일 코어 상에서 실행하는 다른 스레드에 관해서만 익스클루시브할 수 있다.
공유가능 메모리를 향한 LDEX 또는 STREX는 예를 들면 AXI 버스 상에서 익스클루시브 트랜잭션을 사용함으로써 다른 코어에 관하여 익스클루시브성을 보장한다.
이제 첨부된 도면으로 가면, 도 1은 본 발명의 하나 이상의 예에 따라 예시적 디지털 신호 프로세서(DSP) 코어(100)의 개요적 블록도이다. DSP 코어(100)는 프로세서 유형의 한 비제한적 예로서 제공되며, 이 명세서 전체에 걸쳐 사용되는 바와 같이, "프로세서"라는 용어는, 비제한적 예로서, 마이크로프로세서, 디지털 신호 프로세서, 필드-프로그램가능 게이트 어레이, 프로그램가능 로직 어레이, 응용특정의 집적회로, 또는 가상 머신 프로세서를 포함하여, 하드웨어, 소프트웨어, 프로그램가능 로직을 제공하는 펌웨어의 임의의 조합을 넓게 포괄하게 의도된 것임에 유의한다. DSP 코어(100)는, 여러 실시예에서, 비제한적 예로서, 컴퓨터, 임베드 컴퓨터, 임베드 제어기, 임베드 센서, 개인용 디지털 보조장치(PDA), 랩탑 컴퓨터, 셀룰라 전화, IP 전화, 스마트폰, 태블렛 컴퓨터, 휴대 계산기, 혹은 이외 어떤 다른 전자장치, 마이크로전자장치, 또는 데이터를 처리 및 통신하기 위한 마이크로전자기계 장치를 포함하거나 이의 부분일 수 있는 더 큰 "계산장치"의 부분을 형성할 수 있다. 도 1은 명확성을 위해서 그리고 본 발명의 신규한 개념을 더 잘 이해하기 위해 단순화되었다. 이에 따라, 추가의 특징은 DSP 코어(100) 내 포함될 수 있고, 이하 기술되는 특징들 중 일부는 DSP 코어(100)의 다른 실시예에서 대체되거나 제거될 수도 있다.
DSP 코어(100)는 제어 유닛(110), 메모리(120), 및 계산 어레이(130)를 포함할 수 있다. 예에서, 제어 유닛(110) 및 계산 어레이(130)는 DSP 코어(100)의 계산 및 데이터 처리 기능을 수행할 수 있는 코어 프로세서를 구성한다. DSP 코어(100)의 일부 실시예는 이릍테면 마이크로제어기 명령, 다이렉트 메모리 액세스(DMA) 유닛, 및 칩 밖에 장치에의 다양한 인터페이스와 같은, 다른 성분을 포함한다. 또한, 메모리(120)이 단일 로직 블록으로서 도시되었을지라도, 메모리(120)는 시스템 주 메모리, 여러 레벨의 온-칩 또는 로컬 메모리, 캐시, 및/또는 다른 휘발성 또는 비-휘발성 메모리 기술을 포함할 수 있음이 인식될 것이다.
제어 유닛(110)은 DSP 코어(100)의 프로그램 실행을 용이하게 한다. 제어 유닛(110)은 산술 로직 유닛 및 데이터 어드레스 발생(ALU-DAG) 유닛(112), 프로그램 시퀀서(114), 및 프로그램 메모리(116)를 포함할 수 있다. 제어 유닛(110)은 이를테면 명령 캐시, 타이머, 및 명령 레지스터와 같은, 다른 성분을 포함할 수도 있다. 예에서, ALU-DAG 유닛(112)은 범용 정수 계산을 지원하며 메모리 어드레스를 공급한다. 예를 들면, ALU-DAG(112)은 데이터가 메모리(120)와 레지스터(이를테면, 이하 기술되는, 계산 어레이(130)의 레지스터 파일) 간에 전송될 때 메모리 어드레스를 제공한다. ALU-DAG 유닛(112)은 어드레스를 데이터 메모리(예를 들면, 메모리(120)) 및/또는 프로그램 메모리(116)에 공급할 수 있다. 프로그램 시퀀서(114)는 명령 인출을 위해 명령 어드레스를 프로그램 메모리(116)에 제공한다. 프로그램 메모리(116)는 데이터(이를테면 메모리(120)에 저장된 것과 같은)를 처리하기 위해 DSP 코어(100)가 구현하는 프로그램을 저장하고 또한 프로세스 데이터를 저장할 수 있다. 이 명세서 전체에 걸쳐 사용되는 "프로그램"은 DSP 코어(100)와 같은 프로세서에, 명시된 타스크를 수행하게 명령하게 동작할 수 있는 임의의 순서의 한 세트의 실행가능한 명령들을 포함한다. DSP 코어(100)는 명령을 인출, 예를 들면, 명령들을 메모리(120)로부터 인출하여 이들을 프로그램 시퀀서(114)에 로드하고, 명령을 디코딩하고 디코딩된 명령을 실행을 위해 처리 요소(PE)에 제공하거나 이들을 국부적으로 ALU-DAG(112) 내에서 실행함으로써 프로그램을 구현한다. 예에서, 프로그램은 2 이상의 처리 요소(PE)에 걸쳐 실행함으로써 병렬로, 혹은 서로 상이한 데이터 요소들에 대해 프로그램 시퀀서(114)로부터 수신된 동일 명령을 2 이상의 처리 요소들이 실행하는 단일-명령-다수의-데이터(SIMD) 모드에서 수행될 수 있는 알고리즘을 포함하여, 다양한 DSP 알고리즘을 구현하기 위한 명령 세트를 포함할 수 있다. SIMD는, 예를 들면, 어레이를 n 부-어레이로 분할하고 처리 요소로 하여금 각각 한 부-어레이를 개별적으로 처리하게 함으로써 큰 데이터 어레이의 처리를 신속히 하기 위해 일반적으로 사용된다.
메모리(120)는 DSP 코어(100) (데이터 메모리)에 의해 처리될 데이터, 데이터 (프로그램 메모리)를 처리하기 위해 DSP 코어(100)에 의해 구현되는 프로그램, 혹은 이들의 조합을 저장한다. 일부 예에서, 메모리(120)는 메모리(120)가 메모리 뱅크 M1 - Mn, n은 메모리(120)의 메모리 뱅크의 총 수를 포함하게, 다수-뱅크의 인터리브된 메모리 구조를 가질 수 있다. 예에서, 메모리(120)는 정적 랜덤-액세스 메모리(SRAM), 다이나믹 RAM(DRAM), 판독-전용 메모리(ROM), 플래시 메모리, 혹은 다른 적합한 메모리 기술과 같은 랜덤 액세스 메모리이다. 예에서, 하나 이상의 메모리 뱅크 M는 별도의 RAM이다. 대안적으로, 메모리(120)는 예를 들면, 고속 L1 메모리, 중간 L2 메모리, 및 저속 주 메모리를 포함하여, 다수-결속된 메모리 구조를 나타낼 수 있고, 각 메모리의 크기 및 비용은 메모리의 액세스 속도에 역으로 달라질 수 있다. 또 다른 예에서, 메모리(120)는 캐시, 또는 이외 어떤 다른 적합한 유형의 메모리를 포함할 수 있다.
메모리 관리 유닛(MMU)(132)은 DSP 코어(100)를 위한 메모리 동작을 관리하기 위해 제공될 수 있고, 일부 예에서 DSP 코어(100)를 가진 단일 집적회로의 부분일 수 있다. MMU(132)는 메모리 관리 서비스를 제공하며 메모리(120)와의 통신을 용이하게 한다. 일부 경우에, MMU(132)은 DSP 코어(100)에서 메모리(120)로 DMA 동작을 가능하게 하기 위해 다이렉트 메모리 액세스(DMA) 제어기를 포함하거나 이와 인터페이스할 수 있다. 예에서, 도 3에 개시된 것과 같은 STREX 상태 머신은 MMU(132)에 혹은 메모리 버스(170-3)의 코어 측 상에 다른 어떤 곳에 프로그램될수 있고, 메모리(120) 내 포함된 메모리 제어기는 다수-코어 시스템의 어느 코어가 위치에의 익스클루시브 액세스를 할 수 있는지를 모니터하고 익스클루시브 액세스를 잃게 되었다면 기입 트랜잭션이 실패되게 하는 것을 포함한, 익스클루시브 트랜잭션의 다른 끝을 제공할 수 있다.
예로서, 3개의 버스(170)가 도시되었다. 이 명세서 전체에 걸쳐 사용되는 바와 같이, "버스"는 임의의 상호연결 라인, 네트워크, 연결, 번들, 단일 버스, 다수의 버스, 크로스바 네트워크, 단일-스테이지 네트워크, 다수 스테이지 네트워크 또는 계산장치의 부분들 간에 혹은 계산장치들 간에 데이터를 전달하게 동작할 수 있는 그외 다른 전도 매체를 포함한다. 이 예에서, 주 시스템 버스(170-1)는 도 2에 더 상세한 예로서 논의되는 바와 같이 DSP 코어(100)를 다른 시스템 성분에 통신가능하게 결합하기 위해 제공된다. 계산 버스(170-2))는 계산 어레이(130)를 제어 유닛(110)에 통신가능하게 결합한다. 메모리 버스(170-3)는 처리 요소(PE)를 메모리(120)에 통신가능하게 결합하며 일예에서 AXI-준수 버스이다. 이들 사용은 비제한적 예로서만 개시되고, 일부 실시예는 전술한 버스 중 하나 이상을 생략할 수 있고, 다른 것은 추가의 혹은 상이한 버스들을 채용할 수 있음에 유의한다.
제어 유닛(110)은 명령 및 데이터 어드레스를 계산 버스(170-2))를 통해 계산 어레이(130)에 발행할 수 있다. 계산 버스(170-2))는 명령 및 데이터를 위한 어드레스를 계산 어레이(130)의 여러 처리 요소(PE)에 전송한다. 메모리 버스(170-3)는 DSP 코어(100) 내 임의의 레지스터의 내용이 임의의 다른 레지스터에 혹은 임의의 메모리 위치에 전송될 수 있고 메모리(120)가 데이터 오퍼랜드(값)을 계산 어레이(130)에 제공할 수 있게, 메모리(예컨대 메모리(120), 프로그램 메모리(116), 다른 메모리, 혹은 이들의 조합)로부터 데이터 및/또는 명령을 전송할 수 있다.
도 1에 도시된 예에서, 계산 어레이(130)는 4개의 처리 요소(PE1 - PE4)을 포함한다. 다른 실시예에서, 계산 어레이(130)는 제로 또는 그 이상의 개별적 처리 요소들을 포함할 수 있다. 처리 요소(PE)는 수치 처리를 수행하고, 예에서, DSP 알고리즘과 같은 특정 유형의 계산을 수행하기 위한 전용 하드웨어를 포함할 수 있다. 처리 요소(PE)는 독립적으로, 병렬로, 혹은 SIMD 엔진으로서 동작할 수 있다. 본 예에서, 각 처리 요소(PE)는 벡터 프로세서일 수 있다. 대안적으로, 처리 요소(PE)는 스칼라 프로세서, 혹은 스칼라 프로세서 및 벡터 프로세서의 조합일 수 있다.
처리 요소(PE) 각각은 각각의 계산 유닛(CU)(152)을 포함한다. 도시된 실시예에서, 계산 유닛(152)은 계산 유닛(152)이 동일하지 않은 실시예를 본 발명이 고려할지라도, 동일할 수 있다. 본 발명은 하나 이상의 처리 요소(PE)가 계산 유닛(152)을 포함하지 않는 구성을 더욱 고려한다. 본 예에서, 계산 유닛(152) 각각은 산술 로직 유닛(ALU), 곱셈기-누산기(MAC), 시프터, 이외 다른 계산 유닛, 혹은 이들의 조합을 포함한다. ALU는 이를테면 가산, 감산, 부정(negate), 증분, 감분, 절대값, AND, OR, 배타 OR, NOT, 제산 프리미티브와 같은 산술 및 논리 동작, 이외 다른 산술 동작, 다른 논리 동작, 혹은 이들의 조합을 수행할 수 있다. 예시적 MAC은 곱셈 및 누산 동작뿐만 아니라 곱셈 동작, 이를테면 단일-사이클 곱셈, 곱셈/가산, 곱셈/감산, 이외 다른 동작, 혹은 이들의 조합을 수행할 수 있다. 예시적 MAC은 단일-사이클 곱셈, 곱셈/가산, 멀티프라이/감산 다른 동작, 혹은 이들의 조합과 같은 곱셈 및 누산 동작 뿐만 아니라 곱셈 동작을 수행할 수 있다. 시프터는 논리 및 산술 시프트, 비트 조작, 정규화, 역정규화, 지수(exponent) 도출 동작, 이외 다른 동작, 혹은 이들의 조합을 수행할 수 있다. 여러 산술 동작, 논리 동작, 및 이외 다른 동작은 고정점 포맷 및 부동점 포맷 둘 다로 수행될 수 있다. 여러 실시예에서, ALU, MAC, 및/또는 시프터는 이에 연관된 레지스터를 포함한다.
또한, 처리 요소(PE) 각각은 각각의 레지스터 파일(154)을 포함할 수 있다. 도시된 실시예에서, 레지스터 파일(154)은 레지스터 파일(154)이 동일하지 않은 실시예를 본 발명이 고려할지라도, 동일할 수 있다. 본 발명은 하나 이상의 처리 요소(PE)가 레지스터 파일(154)을 포함하지 않는 구성을 더욱 고려한다. 레지스터 파일(154)은 데이터를 처리 요소(PE)와 메모리 버스(170-3) 간에 전송하고 결과를 저장하는 레지스터를 포함한다. 본 예에서, 레지스터 파일(154)은 이를테면 32-비트 범용 레지스터, 40-비트 범용 레지스터, 64-비트 범용 레지스터, 128-비트 범용 레지스터, 이외 다른 폭의 범용 레지스터, 혹은 이들의 조합과 같은 DSP 코어(100)의 설계 요건에 따른 폭을 갖는 범용 레지스터를 포함하는 각각의 범용 레지스터 세트(155)를 포함할 수 있다. 다음 논의의 목적을 위해, 범용 레지스터(155)는 32-비트 범용 레지스터를 포함한다. 일 예에서, 레지스터 파일(154) 각각은 본원에 기술된 STREX 프리미티브에 관계된 플래그 및/또는 값을 보유하게 구성될 수 있는 각각의 STREX 레지스터를 포함한다. 레지스터 파일(154)은 DSP 코어(100)의 설계 요건에 따라 추가의 레지스터를 포함할 수 있다. 또한, 여러 구현에서, STREX 카운터(158)는 범용 레지스터 세트(155)로부터의 범용 레지스터(154)일 수도 있다. 일 실시예에서, 각 PE는 32-비트 폭인 적어도 한 전용 STREX 레지스터(158)를 포함한다. 다른 실시예에서, 각 PE는 복수의 STREX 레지스터(158)를 포함할 수 있다. 또 다른 예에서, 처리 요소(PE)는 별도의 STREX 레지스터(158)를 내포하지 않고 그보다는 ALU-DAG(112)는 DSP 코어(100)의 전체에 적용할 수 있는 마스터 STREX 레지스터(158)를 포함한다.
DSP 코어(100)는 다양한 병렬 동작을 수행할 수 있다. 예를 들면, 단일 사이클 동안, 처리 요소(PE)는 명령(상호연결 네트워크(142)을 통해)에 액세스하고 동기적 처리를 위해 메모리(메모리 버스(170-3)를 통해)로부터 데이터 오퍼랜드에 액세스할 수 있다. SIMD 모드에서, DSP 코어(100)는 병렬로 다수의 데이터 스트림을 처리할 수 있다. 예를 들면, SIMD 모드에 있을 때, 단일 사이클에서 DSP 코어(100)는 단일 명령을 계산 버스(170-2)를 통해 각각 혹은 복수의 처리 요소(PE)에 디스패치하고; 메모리(메모리(120), 프로그램 메모리(116), 다른 메모리, 또는 이들의 조합)로부터 데이터 셋을 메모리 버스(170-3)를 통해 로드하고, 한 데이터 세트는 각 처리 요소(PE)(예에서, 각 데이터 세트는 두 개의 데이터 오퍼랜드를 포함할 수 있다)를 위한 것이며; 단일 명령을 처리 요소(PE)에서 동기하여 실행하고; 동기 실행으로부터 데이터 결과를 메모리(120)에 저장한다.
도 1a는 본 발명의 하나 이상의 예에 따라 예시적 STREX 레지스터(158)의 블록도이다. 일 예에서, DSP 코어(100)는 아날로그 디바이시스 사의 Blackfin® DSP이며, STREX 플래그는 시퀀서 스테이터스(SEQSTAT) 레지스터 내에 내포되고, 따라서 이 예에서 Blackfin® SEQSTAT는 STREX 레지스터(158)인 것으로 간주된다. SEQSTAT는 마지막 이벤트로부터 진단 정보뿐만 아니라, Blackfin® 시퀀서의 현재 상태에 관한 정보를 내포하게 구성된다. 예에서, SEQSTAT는 프로그래머의 견지에선 판독-전용이다. DSP 코어(100)는 소프트 리셋을 포함한, SEQSTAT의 임의의 리셋이 레지스터에 값 0b0000 0000으로 리턴할 수 있도록 구성될 수 있다.
SEQSTAT의 비트 0 - 20 및 24 - 32는 유보되거나 혹은, 예컨대 마지막 실행된 예외에 대한 값, 하드웨어 오류 식별, 혹은 DSP 코어(100)의 마지막 리셋의 원인을 식별하는 플래그를 내포하는, 다른 목적들에 할당될 수있다.
이 예에서, 비트 21, 22, 및 23는 STREX 플래그에 전용되어, 도 3에 관련하여 더 특별히 상세하게 기술된 상태 머신을 진출시키는데 필요한 값들을 제공한다. 다음 표는 각 플래그의 값 및 목적을 기술한다. 그러나, 이 구성은 단지 예로서 제공되고 제한하려는 것이 아님에 유의한다.
비트 명칭 설명 리셋 모드 가시성
21 XMONITOR 익스클루시브 기입 모니터. 0=오픈, 1=익스클루시브 0b0 R/NW 공공
22 XACTIVE 익스클루시브 기입 활성 0b0 R/NW 공공
23 XWAVAIL 익스클루시브 기입 응답 가용 0b0 R/NW 공공
이 표에서 알 수 있는 바와 같이, 비트 21은 XMONITOR(710)이라 하고, 원자적 한 쌍의 익스클루시브 판독 및 익스클루시브 기입 트랜잭션이 인터럽트되었는지 여부를 플래그하기 위해 사용된다. DSP 코어(100)는 LDEX 프리미티브를 개시한 후에 이 플래그를 셋하고 인터럽트가 취해졌을 때 혹은 STREX 프리미티브가 성공적으로 완료되었다면 이 플래그를 0b0에 리셋할 수 있다. DSP 코어(100)는 익스클루시브 기입 트랜잭션을 시도하기 전에 이 플래그를 테스트할 수 있다. 플래그가 0b0이라면, 원자적 쌍은 인터럽트되어져 있고 코어는 익스클루시브 기입 트랜잭션을 개시하지 않을 것이다. 이 플래그는 판독-전용(무-기입) 모드에서 동작하며, 프로그래머가 이 플래그를 지적 조작할 수 없지만 이의 값을 프로그램 흐름에서 사용할 수 있음을 의미한다. 플래그는 공공으로 보여질 수 있고, 이것이 DSP 코어(100)의 아키텍처 상태의 부분을 형성하고 프로그래머가 STREX 레지스터 내 적합한 비트를 테스트함으로써 값을 판독할 수 있음을 의미한다.
비트 22는 XACTIVE(720)라고 하며, 익스클루시브 기입 동작이 현재 활성인지 여부를 플래그하기 위해 사용된다. DSP 코어(100)는 익스클루시브 기입이 개시될 때 이 플래그를 셋할 수 있고 익스클루시브 기입이 종료되었을 때 이를 클리어할 수 있다. 이 플래그의 리셋은 이의 값을 0b0로 리턴한다. 이 플래그는 판독-전용(무-기입) 모드에서 동작하며, 프로그래머는 이 플래그를 직접 조작할 수 없지만 이의 값을 프로그램 흐름에서 사용할 수 있음을 의미한다. 플래그는 공공으로 보여질 수 있고, 이것이 DSP 코어(100)의 아키텍처 상태의 부분을 형성하고 프로그래머가 STREX 레지스터 내 적합한 비트를 테스트함으로써 값을 판독할 수 있음을 의미한다.
비트 22는 XWAVAIL(730)라고 하며 STREX 응답이 가용한지 여부를 플래그하기 위해 사용된다. DSP 코어(100)는 STREX 프리미티브가 성공적으로 또는 비-공적으로 종료되었을 때 이 플래그를 셋할 수 있고 이를 응답이 레지스터 혹은 DSP 코어(100)의 스테이터스 비트에 판독되어진 후에 클리어할 수 있다. 이 플래그의 리셋은 이의 값을 0b0로 리턴한다. 이 플래그는 판독-전용(무-기입) 모드에서 동작하며, 프로그래머는 이 플래그를 직접 조작할 수 없지만 이의 값을 프로그램 흐름에서 사용할 수 있음을 의미한다. 플래그는 공공으로 보여질 수 있고, 이것이 DSP 코어(100)의 아키텍처 상태의 부분을 형성하고 프로그래머가 STREX 레지스터 내 적합한 비트를 테스트함으로써 값을 판독할 수 있음을 의미한다.
또한, DSP 코어(100)는 STREX 동작의 실제 결과를 저장하는 MMU.XWRESULT과 같은 값을 사용할 수 있다. 일부 실시예에서, MMU.XWRESULT는STREX 레지스터(158)의 또 다른 비트로 엔코딩될 수 있다. 일 예에서, MMU.XWRESULT는 레지스터에 저장되지 않고 그보다는 메모리 버스(170-3) 자체에 의해 엔코딩된다. 메모리 버스(170-3)는 완료시 MMU.XWRESULT을 셋 할 수 있다. 이 예에서, 0b1의 값은 성공적 STREX 동작을 나타낼 수 있고, 0b0의 값은 실패된 STREX 동작을 나타낼 수 있다.
도 2는 본 발명의 하나 이상의 예에 따라 계산장치(200)의 블록도이다. 도 1에 관련하여 기술된 바와 같이, 계산장치(200)는 시스템 버스(170-1) 및 메모리 버스(170-3)에 통신가능하게 결합된 DSP 코어(100)를 포함한다. 메모리 버스(170-3)는 애플리케이션 소프트웨어를 위해 저-레벨 서비스를 제공하는 운영 시스템(122)을 로드한 메모리(120)에 DSP 코어(100)을 통신가능하게 결합한다. 그러나, 이 발명은 통상의 운영 시스템(122)이 예컨대 임베드 시스템 또는 제어기에서 불필요할 수 있고 애플리케이션이 "배어 메탈" 상에서 실행할 수 있는 실시예를 고찰한다.
저장장치(240)은 시스템 버스(170-1)을 통해 DSP 코어(100)에 통신가능하게 결합할 수 있다. 저장장치(240)은 메모리(120)의 종일 수 있다. 일부 실시예에서, 메모리(120) 및 저장장치(240)는 개별적 장치일 수 있고, 메모리(120)는 비교적 저-레이턴시 휘발성 메모리 장치이고 저장장치(240)는 비교적 고-레이턴시 비-휘발성 메모리 장치이다. 또한, 저장장치(240)는, 이를테면 하드 드라이브, 고체-상태 드라이브, 외부 저장장치, 용장 어레이 독립 디스크(RAID), 네트워크-부착 저장장치, 광학 저장장치, 테이프 드라이브, 백업 시스템, 클라우드 저장장치, 혹은 이들의 임의의 조합과 같은 또 다른 장치일 수 있다. 저장장치(240)는 이에 데이터베이스 혹은 다른 구성들로 저장된 데이터베이스 또는 데이터이거나, 혹은 포함할 수 있다. 많은 다른 구성 또한 가능하며, 이 특허의 넓은 범위 내에 포괄되게 의도된다. 예에서, 프로그램 실행은 저장장치(240)로부터 명령을 메모리(120)에 로드하는 것을 수반한다. 이어 명령은 실행을 위해 DSP 코어(100)에 인출된다. 데이터는 또한 프로그램 실행 동안 DSP 코어(100)에 가용성을 위해 저장장치(240)로부터 메모리(120)에 로드될 수 있다.
네트워크 인터페이스(270)는 DSP 코어(100)에 통신가능하게 결합할 수 있고, DSP 코어(100)를 네트워크에 통신가능하게 결합하게 동작할 수 있다. 이 발명에서, "네트워크"는, 비제한적 예로서, 애드-호크 로컬 네트워크, 계산장치에 전자적으로 상호작용하는 능력을 제공하는 인터넷 아키텍처, 사람 조작자에 의해 도움을 받을 수 있는 트랜잭션을 수행하기 위해 계산장치가 사용할 수도 있을, 혹은 전화 또는 이외 다른 적합한 전자장비에 데이터를 수작업으로 키잉할 수 있는, 플레인 올드 전화 시스템(POTS), 시스템 내 임의의 두 노드 간에 통신 인터페이스 혹은 교환을 제공하는 임의의 패킷 데이터 네트워크(PDN), 혹은 임의의 근거리 네트워크(LAN), 대도시권 네트워크(MAN), 광력 네트워크(WAN), 무선 근거리 네트워크(WLAN), 가상 사설 네트워크(VPN), 인트라넷, 혹은 네트워크 또는 전화 환경에서 통신을 용이하게 하는 그외 어떤 다른 적합한 아키텍처 또는 시스템을 포함하여, 계산장치 내에서 혹은 이들 간에 데이터 또는 정보를 교환하게 동작할 수 있는 임의의 통신 플랫폼을 포함한다.
주변 인터페이스(250)는 시스템 버스(170-1)를 통해 DSP 코어(100)에 통신가능하게 결합하며, DSP 코어(100)를 하나 이상의 주변장치에 통신가능하게 결합하게 동작할 수 있다. 이 발명에서 사용되는 바와 같이, "주변장치"는 계산장치(200)에 연결하지만 반드시 계산장치(200)의 코어 아키텍처의 부분은 아닌 임의의 보조 장치를 포함한다. 주변장치는 확장된 기능을 계산장치(200)에 제공하게 동작할 수 있고 전체적으로 계산장치(200)에 의존할 수도 있고 그렇지 않을 수도 있다. 일부 경우에, 주변장치는 이 자신의 능력 내에서 계산장치일 수도 있다. 주변장치는 비제한적 예로서 디스플레이, 단말, 프린터, 키보드, 마우스, 모뎀, 네트워크 제어기, 센서, 트랜스듀서, 액튜에이터, 제어기, 데이터 획득 버스, 카메라, 마이크로폰, 스피커, 혹은 외부 저장장치와 같은 입력 및 출력 장치를 포함할 수 있다.
도 2에 기술된 성분은 단지 예로서 제공되고, 도시된 특저 구성으로 계산장치(200)를 제한하려는 것이 아님에 유의한다. 도 2의 임의의 성분은 적합한 상황에서 생략될 수 있고, 다른 적합한 상황에서 임의의 성분은 필요시 이중이 될 수도 있고, 혹은 또 다른 성분과 조합될 수도 있다. 예를 들면, 시스템 버스(170-1) 및 메모리 버스(170-3)가 동일 버스인 것이 일반적이다. 또 다른 예에서, 네트워크 인터페이스(270)는 연결성을 어떤 주변장치에 제공하기 위해 사용될 수 있고, 따라서 이에 주변 인터페이스(250)의 기능이 포괄된다. 이에 따라, 본원에서 성분들 간에 분할은 필요한 혹은 엄격한 물리적 분할을 함축하려고 의도된 것이 아님을 알아야 한다. 그보다는, 성분들은 논리적 기능에 따라 분할되고, 적합한 경우, 단일 장치는 복수의 기능을 수행할 수 있다. 일 예에서, 계산장치(200)는 이 전체가 칩 상의 시스템(SoC)으로서 제공될 수 있고, 본원에 개시된 일부 또는 모든 기능은 단일 모노리식 반도체 장치에 제공될 수 있다.
인터럽트 핸들링을 허용하기 위해서, STREX 명령은 두 명령으로서, 저장 익스클루시브 초기화(STREX_INIT) 및 저장 익스클루시브 동기화(STREX_SYNC)로 분할될 수 있다. 도 3은 본 발명의 하나 이상의 예에 따라 STREX 상태 머신(300)의 블록도이다. 예에서, STREX 상태 머신(300)은 MMU(132) 내 하드웨어로, 아니면 메모리 버스(170-3)의 코어 측 상에 구현되고, STREX_SYNC 프리미티브가 인터럽트될지라도 계속하여 STREX 프리미티브의 진행을 추적한다. 상태 머신(300)은 활성인 상태 S0(310)에서 시작한다. 상태 S0(310)로부터 진출하기 위해서, STREX_INIT 명령은 메모리 버스(170-3) 상에서 익스클루시브 기입 트랜잭션을 개시하고 상태 머신을 상태 S1(320)에 진척시킨다. 상태 S1(320)에서, DSP 코어(100)는 STREX 프리미티브로부터 응답을 기다린다. 특히, 그리고 적어도 일부 종래 기술의 프로세서에서의 관행과는 반대로, 상태 S1(320)는 인터럽트가능이다. 이에 따라, 인터럽트는 비-확정적인 시간이 걸리고 시스템 수행에 악영향을 미치기에 충분히 길게 걸리는 상태 S1동안 록 아웃될 필요가 없다. 인터럽트가 상태 S1(320) 동안 수신된다면, 운영 시스템(122)은 이의 표준 절차에 따라 인터럽트를 핸들링할 수 있고, 상태 머신(300)는 DSP 코어(100) 상에서 실행하는 임의의 명령 또는 다른 프리미티브와 병렬로 계속하여 실행한다. 메모리 버스(170-3)로부터 트랜잭션 응답을 수신시, 상태 머신(300)은 상태 S1(320)에서 상태 S2(330)로 진출 한다. 상태 S2(330)은 응답이 가용한 조건을 나타낸다. 이것은 응답이 확정적인 다수의 클럭 사이클 내에서 판독될 준비가 되어 있음을 의미한다. 상태 S2(330)에서 상태 S0(310)로 다시 진출하기 위해서, STREX_SYNC 명령은 응답을 판독한다.
도 4 및 도 5는 본 발명의 하나 이상의 예에 따라 STREX_INIT 프리미티브 및 STREX_SYNC 프리미티브의 흐름도이다. 예에서, STRE_INIT 및 STREX_SYNC는 도 3의 상태 머신(300)과 상호작용한다. 몇몇 흐름도가 이 명세서 전체에 걸쳐 개시됨에 유의하고, 각각은 특정 머신 상에서 동작하거나, 매터를 변환하거나 아니면 유용한 결과를 달성하는 단지 한 예시적 방법을 제시하기 위해 제공됨에 알아야 한다. 단계들은 단지 예로서 특정한 순서로 제시되고, 당업자들은 개시된 방법에 대한 많은 조합 및 변형예가 가능함을 쉽게 인식할 것이다. 일부 경우에, 어떤 단계들은 개시된 발명의 범위 내에서 다른 단계와 조합되거나 전체적으로 제거될 수도 있고 일부 경우에, 어떤 추가적 혹은 개재되는 단계들은 개시된 단계들 사이에 제공될 수도 있다. 또한, 개시된 단계들은 명확히 언급되거나 맥락에서 분명한 경우를 제외하고, 개시된 순서 혹은 임의의 특정한 순서일 필요는 없다.
도 4는 본 발명의 하나 이상의 예에 따라 STREX_INIT 프리미티브(400)의 흐름도이다. 일 예에서, STREX_INIT는 DSP 코어(100) 내 구현된 하드웨어 명령이다. STREX_INIT 프리미티브(400)는 블록(410)에서 시작한다. 블록(420)에서, STREX_INIT(400)는 예를 들면 메모리(120)에 기입될 데이터를 메모리 버스(170-3) 상에 놓이게 함으로써, STREX 프리미티브를 개시한다. 블록(430)에서, STREX_INIT 프리미티브(400)는 상태 머신(300)을 상태 S1(320)에 진출시켜 STREX 트랜잭션으로부터의 응답을 기다린다. 블록(440)에서, STREX_INIT 프리미티브(400)는 완료된다.
도 5는 본 발명의 하나 이상의 예에 따라 STREX_SYNC 프리미티브(500)의 흐름도이다. 일 예에서, STREX_SYNC는 DSP 코어(100) 내에서 구현되는 하드웨어 명령이다. STREX_SYNC 프리미티브(500)는 블록(510)에서 시작한다. 블록(520)에서, STREX_SYNC 프리미티브(500)는 STREX_INIT로부터 응답이 가용한지를 나타내는 상태 S2로 상태 머신(300)이 진출하였는지 여부에 대헤 계속적으로 체크하는 루프에 진입한다. 응답이 수신되지 않았다면, 제어는 블록(520)으로 루프 백한다. 중요하게는, 블록(520)의 루프는 인터럽트가능이다. 예를 들면, 인터럽트(530)가 수신된다면, 제어는 블록(540)으로 보내지고, 여기에서 운영 시스템(122)은 이의 정규 절차에 따라 인터럽트(530)를 핸들링할 수 있다. 인터럽트(530)을 핸들링한 후에, 운영 시스템(122)은 STREX_SYNC(500)을 재시작할 수 있고, 따라서 프리미티브의 동작은 블록(510)에서 재개하고, 블록(520)으로 진행하고, 계속하여 응답을 기다린다. 응답이 수신되었을 때, 상태 머신(300)은 상태 S2(330)로 진출한다. 예에서, STREX_SYNC(500)은 상태 머신(300)이 상태 S2(550)로 진출하였음을 검출하고 블록(560)으로 진행한다. 블록(560)에서, STREX_SYNC(500)은 응답을 판독하고 이를 STREX 레지스터(158)에 리턴한다. 블록(570)에서, 상태 머신(300)은 상태 S0(310)로 리턴한다. 블록(580)에서, STREX_SYNC 프리미티브(500)는 완료된다.
도 6은 본 발명의 하나 이상의 예에 따라 LDEX 프리미티브 및 STREX 프리미티브의 사용 경우의 흐름도이다. 여기에서 예는 AXI 록된 트랜잭션에 의존하는 기지의 TESTSET 명령들을 대체할 수 있다.
"스핀록" 동작에서, 자원(예를 들어, 세마포와 같은)에 익스클루시브 액세스를 필요로 하는 스레드는 록이 달성될 때까지 자원이 록("스핀")되어 있는지를 계속하여 체크한다. 본 발명의 LDEX 프리미티브 및 STREX 프리미티브를 사용하는 예시적 스핀록 동작을 위한 의사코드가 이하 개시된다. 이 예에서, 스핀록은 세마포에 액세스하기 위해 사용된다. R1은 "록" 값 (1)을 내포하는 레지스터이다. P0는 자원 (0b1 = 록, 0b0 = 언록)에 대한 -b[P0]가 P0에 바이크-크기 액세스를 나타낸다- 1 바이트 록 플래그를 내포하는 메모리 위치의 어드레스를 내포하는 어드레스 레지스터이다. CC는 브랜칭을 제어하기 위해 동작의 성공 또는 실패를 체크하기 위해 사용될 수 있고 스테이터스 레지스터 내에서 발견될 수 있는 조건 스테이터스 비트일 수 있는 조건 코드 플래그이다. DSP 코어(100)가 Blackfin® DSP인 예에서, "CC" 비트는 몇몇 산술적 비교의 결과를 유지하기 위해 사용되는 "조건 코드"(CC) 플래그를 포함하여, 복수의 스테이터스 플래그를 내포하는 32-비트 레지스터인 산술 스테이터스(ASTAT) 레지스터에서 발견된다. R0는 판독 동작 후에 B[P0]의 값을 유지하기 위한 레지스터이다.
Figure 112015015500685-pat00001
또 다른 예에서, STREX 프리미티브는 임의의 익스클루시브 트랜잭션을 클리어하고 임의의 저장 익스클루시브의 결과를 보존된 ASTAT 레지스터의 CC 비트에 보존하기 위해 콘텍스트 스위칭 코드에서 호출된다. 예를 들면:
Figure 112015015500685-pat00002
익스클루시브 동작을 사용하지 않는 것으로 알려진 인터럽트 핸들러는 익스클루시브 상태를 수정되지 않은 채로 놔둔다. 임의의 펜딩 익스클루시브 기입 동작은 완료되고 핸들러 코드로부터 리턴시 STREX_SYNC에 의해 판독되어질 SEQSTAT 내 상태를 업데이트할 것이다.
도 6의 방법(600)으로 돌아가서, 스핀록 절차는 블록(610)에서 시작한다. 블록(620)은 점프 명령에 대한 기준 지점으로서 사용되는 라벨 "READ:"을 포함한다. 블록(620)에서, 도 1의 PE1과 같은 처리 요소는 LDEX 프리미티브를 수행하고, 이는 이 경우에 익스클루시브 판독 명령이다. 구체적으로, B[P0]이 록된 것인지 여부를 체크하는 것에 준비로서, PE1는 B[P0]의 현재 값을 RO에 로드한다.
블록(630)에서, PE1은 R0의 값을 조건 코드 CC에 할당한다. 이 단계에 따라, CC는 록 코드의 값을 수신한다.
블록(640)에서, 록 코드가 체크된다. 록 코드가 0b1이라면, 또 다른 프로세스가 자원을 록하고 있는 것이다. 그러면 제어는 블록(620)으로 되돌아가고, 이에 따라 언록된 자원에 대해 체크를 "스핀"한다.
블록(640)이 자원이 언록되는 조건에 도달한다면, 제어는 블록(650)으로 보내진다. 블록(650)에서, PE1은 자원을 록하기 위해 현재 0b1인 R1에 값을 B[P0]에 할당하기 위해서 STREX_INIT 프리미티브를 실행한다. 이 동작의 리턴 값은 STREX_INIT가 기입 트랜잭션을 개시하였는지를 나타내는 CC에 할당된다.
블록(660)에서, PE1은 기입 트랜잭션이 B[P0]에 0b1을 성공적으로 기입하였는지를 테스트하기 위해 STREX_SYNC 프리미티브를 실행한다. 동작의 원자성이 개재된 인터럽트에 의해 와해되지 않았다면, MMU.XWRESULT은 0b1("성공")을 리턴 할 것이며, 이는 이어 CC에 할당된다.
블록(670)에서, CC가 0b0이라면, 개재된 동작은 STREX 동작의 원자성을 와해하였다. 이 경우에, 제어는 자원에 유효한 록을 획득하기를 다시 시도하기 위해 블록(620)에 다시 보내진다.
제어가 블록(680)에 보내진다면, 록은 성공적이며 블록(690)에서 프로세스는 종료한다. 블록(690) 후에, 우선, 록을 요구하였던 실질적 코드가 실행될 수 있고, 이어 록은 클리어될 수 있다.
제어가 블록(610)에서 블록(690)으로 원할하고 선형으로 보내진다면, 임의의 사건 없이 록이 획득되었다. 어떤 기지의 시스템에서, 시스템 인터럽트는 블록(620 내지 670) 전체에 걸쳐 록 아웃될 것이다. 그러나, 이것은 인터럽트의 예측가능한 타이밍 및 예측가능한 핸들링이 더 중요한 실시간 시스템을 포함하여 어떤 시스템에선 수락불가할 수 있다. 이들 경우에, 본 발명의 LDEX 및 STREX 프리미티브들은 인터럽트가능 동작을 제공한다. 다른 기지의 시스템에서, 인터럽트는 블록(650 및 660)의 기간 동안 록 아웃될 것이며 이것은 또한 기입 트랜잭션의 예측불가한 타이밍에 기인하여 어떤 시스템에선 수락불가할 수도 있다.
일 예에서, 블록(620)의 LDEX 프리미티브는 비-확정적인 다수의 사이클을 취하지만, 프리미티브는 아무리 다수회 실행되어도 시스템을 상태에 리턴하기 때문에 안전하게 인터럽트되고 재시작될 수 있다. 블록(630)의 할당 동작은 확정적인 수의 클럭 사이클을 취하며, 따라서 인터럽트가 핸들링될 수 있기 전에 확정적인 수의 사이클을 제공하기 위해 인터럽트가능할 필요가 없다. 그러나, 인터럽트는 블록(620)과 블록(630) 사이에 발생할 수 있다. XWACTIVE 및 XWAVAIL 둘 다가 이들의 디폴트 값 0b0에 남아있는 동안 블록(620)의 LDEX 프리미티브는 플래그 XMONITOR을 값 0b1에 셋함에 유의한다. 이것은 동작의 원자성이 위반되어졌기 때문에 STREX 프리미티브 내에 내부 "어보트" 메커지즘이 작동되게 할 수 있다. 인터럽트로부터 리턴한 후에, 프로세스가 블록(620)으로 루프 백한다면, LDEX 프리미티브는 플래그 XMONITOR, XWACTIVE, 및 XWAVAIL을 리셋할 것이며 프로세스는 정규대로 계속할 것이다. 그러나, 제어가 블록(650)에 보내진다면, STREX_INIT 프리미티브는 절차의 원자성이 위반되어졌음을 인식할 것이며 유용한 작업을 수행하지 않지만 XMONITOR, XWACTIVE, 및 XWAVAIL을 이들의 디폴트 값 0b0으로 리셋하고 실패를 나타내기 위해 CC를 셋 할 수 있는 "무동작"(NOP) 상태에 진입할 것이다. 또한, STREX_SYNC는 블록(660)에서 NOP 상태를 수행할 것이며 이 경우에 이것은 CC를 수정하지 않을 것이며, 블록(680)에서, 제어는 블록(620)으로 다시 보내질 것이다.
또 다른 예에서, 블록(630)과 블록(640) 사이에서 인터럽트가 발생한다. 다시, 이 경우에, XWACTIVE 및 XWAVAIL가 0b0인 동안 XMONITOR는 0b1이기 때문에 어보트 메커니즘이 인수할 것이다. 이에 따라, STREX_INIT 및 STREX_SYNC는 이들의 NOP 상태를 실행하지 않을 것이며 블록(680)에서, 제어는 블록(620)에 다시 보내질 것이다.
STREX_INIT의 행동은 다음의 의사코드에 의해 제어된다:
Figure 112015015500685-pat00003
환언하여, XMONITOR 플래그가 이제 이의 디폴트 값 0b0에 셋 된다면, STREX_INIT는 개재된 인터럽트가 적어도 한 익스클루시브 동작에서 수행되었음을 추론할 수 있고, 이에 따라 동작의 원자성을 와해시킨다. 이런 경우라면, CC는 강제로 제로가 되고 NOP 상태는 제어가 블록(620)에 보내지게 되도록 실행된다.
한편, XMONITOR가 여전히 0b1이면, PE1는 개재된 인터럽트가 어떠한 익스클루시브 동작도 수행하지 않았고 이에 따라 원자성은 보존되어진 것으로 추론 할 수 있다. 이 경우에, CC는 0b1에 셋 되고 XWACTIVE 은 0b1에 셋 되고 XMONITOR는 블록(660에서 STREX_SYNC 동작이 정상대로 실행하도록 0b1에 셋 된 그대로 있는다.
STREX_SYNC 프리미티브는 블록(660)에서와 같이 STREX_INIT 후에 사용될 수 있고, 혹은 이것은 블록(620)과 블록(660) 사이에서 인터럽트가 발생한다면 원자적 시퀀스를 어보트하기 위해서, 혹은 블록(650)과 블록(660) 사이에 혹은 블록(660) 동안에 인터럽트가 발생하였다면 STREX_INIT 응답을 판독하고 이를 스레드 콘텍스트에 보관하기 위해, 인터럽트 핸들러에서 사용될 수 있다.
STREX_SYNC의 행동은 다음의 의사코드에 의해 제어된다:
Figure 112015015500685-pat00004
제1 조건에서, XMONITOR가 0b0에 셋 된다면, STREX_SYNC는 어떠한 익스클루시브 기입 트랜잭션도 진행 중이 아님을 추론할 수 있다. STREX_SYNC는 원자적 LDREX/STREX 시퀀스를 인터럽트하고 있지 않은 인터럽트 핸들러에서 실행되고 있거나, 아니면 STREX_SYNC은 NOP 모드에서 실행된 STREX_INIT을 추종하고, 혹은 STREX_SYNC은 익스클루시브 기입 트랜잭션을 개시한 STREX_INIT을 추종하는데 그러나 개재된 인터럽트은 트랜잭션 응답을 CC에 카피하기 위해 STREX_SYNC을 실행하였다. 모든 경우에 CC는 이미 요망되는 값을 내포하며 STREX_SYNC는 이의 NOP 상태를 실행하고 플래그 XWAVAIL 및 XWACTIVE을 이들의 디폴트 값 0b0에 셋한다. CC는 변경되지 않는다. STREX_SYNC가 인터럽트 핸들러 내 있지만 원자적 시퀀스가 인터럽트되고 있지 않다면 CC의 현재의 값은 스레드 콘텍스트의 부분으로서 보존되어야 한다. STREX_SYNC가 NOP 모드에서 실행되어진 STREX_INIT을 추종한다면, 이 동작은 이미 CC를 0b0에 셋하였을 것이다. STREX_SYNC가 STREX_INIT를 추종하지만 개재된 인터럽트가 트랜잭션 응답을 CC에 카피하기 위해 STREX_SYNC을 실행하였다면, CC는 이미 트랜잭션 응답을 내포한다.
제2 조건에서, XMONITOR이 0b1이고 XWACTIVE 플래그가 0b1에 셋 된다면, STREX_SYNC는 계속하여 이의 정규 기능을 수행하는데, 이것은 0b1 값으로 -이 시점에서 CC는 메모리 버스(120)로부터 MMU.XWRESULT의 값을 수신한다- 플롭할 때까지 XWAVAIL 플래그를 감시한다. 이어, STREX_SYNC는 XMONITOR 및 XWAVAIL을 이들의 디폴트 값 0b0에 리셋하고 나간다.
제3 조건에서, XMONITOR이 0b1이고, XWACTIVE이 0b0이고, XWAVAIL이 0b1이라면, 기입 요청은 종료되어진 것이고, XWACTIVE 플래그를 클리어하고 XWAVAIL 플래그를 셋한다. 이 경우에, CC는 MMU.XWRESULT의 값을 수신하고, XMONITOR 및 XWAVAIL은 둘 다 이들의 디폴트 값 0b0에 리셋된다.
어떤 다른 경우에, 예상되지 않은 오류 조건이 발생하였고 어보트 상태에 진입한다. 어보트 상태는 예를 들면, 예외를 일으킬 수 있고 혹은 어떤 다른 오류 메커니즘을 제공할 수 있다. XMONITOR 및 XWACTIVE은 둘 다 디폴트 값 0b0에 리셋 된다. [다시, XWAVAIL도 그러하다]
예시적 방법의 진리표는 다음과 같고, 여기에서 "M"은 XMONITOR를 나타내고, "P"는 "XACTIVE"(펜딩)을 나타내고, "A"는 "XWAVAIL"을 나타낸다.
경우 M P A 행동
1 0 X X NOP 경우
2 1 0 0 어보트 경우: 클리어 상태
3 1 0 1 XWAVAIL 경우. 판독 결과, 클리어 상태.
4 1 1 0 XWACTIVE 경우: 셋 될 때까지 XWAVAIL을 폴링
5 1 1 1 XWAVAIL이 셋 되었을 때 XWACTIVE은 클리어되기 때문에 위업이고 불가능하다
요약하여, XMONITOR==0b0이라면, 어떠한 원자적 동작도 펜딩이 아니며, STREX 프리미티브는 NOP 상태에 있을 수 있다. 이들이 호출된다면 이들은 단순히 NOP을 실행할 것임을 의미한다. 경우 2에서, 인터럽트는 LDEX 사이에 그리고 STREX_INIT 전에 발생하였다. 이 경우에, XMONITOR는 0b0에 셋 되고, CC는 변경되지 않는다. XMONITOR=0로 셋 하는 것은 다음 STREX_INIT이 익스클루시브 기입을 개시하지 않을 것이며 따라서 이것은 어보트 경우임을 의미한다.
경우 3은 STREX_SYNC가 종료되었음을 함축하며, 결과는 판독되게 가용하다. 경우 4는 STREX_SYNC가 여전히 펜딩중이고 따라서 XWAVAIL은 이것이 셋 될 때까지 폴링되어야 함을 함축한다. 경우 5는 XWAVAIL가 셋 되었을 때 XWACTIVE가 클리어되기 때문에, 발생하지 않을 것이다. 이에 따라, 적합히 구현된 아키텍처에서, 경우 5는 결코 발생하지 않을 것이다.
블록(670)에 도달하였을 때, CC는 기입이 시도되었고 MMU.XWRESULT 내 응답이 0b1 이어서 기입이 메모리 위치를 성공적으로 업데이트하였음을 나타낸다면 0b1을 내포할 것이다. 프로세스는 CC의 값에 따라, 블록(620)에 루프 백하거나 하지 않는다.
도 7 및 도 7a는 도 6에 관련하여 개시된 진리표의 신호 타이밍 차트이다. 차트 내 개시된 신호 명칭들은 이들이 셋하는 플래그에 정확히 대응하기 위해 제공된 것임에 유의한다. 그러나, 일부 실시예에서, 신호는 플래그로부터 서로 다른 명칭들을 가질 수 있고, 이들은 여기에서는 단지 논의를 간이화하기 위해 동일한 명칭들로 제시된다. 개시되는 예에서, 플래그 신호 XMONITOR, XWACTIVE, 및 XWAVAIL에 대한 타이밍이, 데이터 신호 MMU.XWRESULT에 대한 타이밍과 더불어, 개시된다. 시간 커서 xWaitStart와 xWaitEnd 간 간격은 STREX_SYNC 프리미티브의 기간을 나타낸다.
도 7 및 도 7a에서 신호 XMONITOR(710), XWACTIVE(720), XWAVAIL(730), 및 XWRESULT(740)은 예시로서 사용된다. 위에 진리표에서, 예 1은 그래프(702)에 대응하고, 예 2는 그래프(704)에 대응하고, 예 3은 그래프(706)에 대응하고, 예 4는 그래프(708)에 대응하고, 예 5는 그래프(712)에 대응한다. 그래프(714)는 프로그래머가 선행 STREX 프리미티브가 완료되기 전에 제2 STREX_INIT 프리미티브를 부정확하게 시도하는 경우를 나타내며, 진리표의 부분이 아니다.
예의 경우 1(702)은 NOP 경우이며 여기에서, 모든 3개의 플래그는 제로인 채로 있는다. 어떠한 데이터 동작도 일어나지 않기 때문에, XWRESULT는 아무 데이터도 수신하지 않는다.
예의 경우 2(704)는 어보트 경우이며, 여기에서 XWMONITOR는 0b1에 셋 되고 XWAVAIL은 0b0에 셋 되는데, 그러나 STREX_SYNC의 끝에서, XWMONITOR은 예를 들어 인터럽트 핸들러에서 STREX_SYNC이 LDEX과 STREX_INIT 사이에서 실행되기 때문에 0b0에 리셋된다. 어보트 절차는 위에서 상세히 기술되었다.
예의 3(706)은 XWAVAIL 경우를 나타낸다. 여기에서, STREX_SYNC의 끝에, XWAVAIL 및 XMONITOR은 MMU.XWRESULT의 값이 CC에 판독되어졌기 때문에 0b0에 둘 다 셋 된다.
도 7a에서, 2개의 새로운 커서가 도입되는데, 즉 xRead는 익스클루시브 판독의 호출 혹은 LDEX 프리미티브를 나타내고, xWrite은 익스클루시브 기입의 호출 혹은 STREX_INIT 프리미티브를 나타낸다.
예 4(708)는 XWACTIVE 경우를 나타낸다. 이 경우에, xRead에서, XMONITOR는 하이로 가고, LDEX가 성공적으로 수행되었음을 의미한다. xWrite에서, STREX_INIT가 수행되고 XWACTIVE는 하이로 가고, STREX 프리미티브가 익스클루시브 값을 기입하려고 시도하고 있음을 나타낸다. xWaitStart에서 STREX_SYNC 프리미티브는 XWACTIVE가 하이임을 발견하고 따라서 기입 응답이 MMU.XWRESULT에 있음을 나타내는, XWAVAIL이 하이로 갈 때까지 기다린다. xWaitEnd에서 STREX_SYNC 프리미티브는 MMU.XWRESULT를 CC에 카피하고 XWMONITOR 및 XWAVAIL를 로우에 셋 한다.
예 5(712)에서, XMONITOR는 LDEX 프리미티브 동안 셋 되는데, 그러나 인터럽트 또는 콘텍스트 스위칭은 STREX 절차가 실행되기 전에 발생한다. 이 경우에, xWrite에서, 모든 3개의 플래그는 0b0이고 STREX는 이의 NOP 상태를 실행한다.
예 6(714)에서, XMONITOR를 셋 하는 xRead에 이어 XWACTIVE을 셋 하는 제1 xWrite이 이어진다. 그러나, 프로세스가 완료되기 전에, 제2 xWrite이 시도된다. 이것은 예를 들면, 프로그래밍 오류의 결과일 수 있다. 이 경우에, 사용자 오류가 발생하였으며, 따라서 STREX 프리미티브는 어보트하고 예외를 일으킬 수 있다.
잇점이 있게, 본 발명의 하나 이상의 실시예에 따라, 익스클루시브 메모리 동작을 수행하는 2개의 스레드는 메모리 유형에 관계없이 동일 처리 요소(PE) 상에서 구현될 수 있다. 이 경우에, 두 스레드는 로드 익스클루시브와 저장 익스클루시브 간에 콘텍스트 스위칭이 존재한다면 동일 록에 대해서만 경주할 수 있다:
스레드 명령 XMONITOR XWAVAIL MMU.XWRESULT CC
0 0 0 a
0 R0 = b[P0] (z,excl) 1 0 0 a
시스템 CC=syncexcl 0 0 0 a
시스템 [-sp] = ASTAT 0 0 0 a
시스템 ASTAT = [sp++] 0 0 0 b
1 R0 = b[P0] (z,excl) 1 0 0 b
1 CC=(b[P0] = R1) (excl) 1 1 1 1
시스템 CC=syncexcl 0 0 0 1
시스템 [-sp] = ASTAT 0 0 0 1
시스템 ASTAT = [sp++] 0 0 0 a
0 CC = (b[P0] = R1) (excl) 0 0 0 0
0 CC=syncexcl 0 0 0 0
시스템 CC=syncexcl 0 0 0 0
시스템 [-sp] = ASTAT 0 0 0 0
시스템 ASTAT = [sp++] 0 0 0 1
1 if !CC jump spin; 성공 - 실패
앞에 예에서, 간이성을 위해서, XWACTIVE 비트의 값 및 XWAVAIL의 비동기 업데이트는 제시되지 않은 것에 유의한다.
도면을 참조하여 위에 논의된 단계들은 신호 처리(예를 들면, 제스처 신호 처리)를 수반하는 임의의 집적회로, 특히 전용 소프트웨어 프로그램 또는 알고리즘 -이들 중 일부는 디지털화된 실시간 데이터를 처리하는데 연관될 수 있다-을 실행할 수 있는 것들에 적용할 수 있음에 유의한다. 어떤 실시예는 다수-DSP 신호 처리, 부동점 처리, 신호/제어 처리, 고정된-함수 처리, 마이크로제어기 애플리케이션, 등에 관계될 수 있다. 어떤 맥락에서, 본원에서 논의되는 특징은 의료 시스템, 과학기구, 무선 및 유넛 통신, 레이더, 산업 프로세스 제어, 오디오 및 비디오 장비, 전류 감지, 기기(매우 정밀할 수 있는), 및 이외 다른 디지털-처리-기반의 시스템에 적용할 수 있다. 또한, 위에 논의된 어떤 실시예는 의료 이미징, 환자 모니터링, 의료 기기, 및, 홈 헬스캐어를 위해 디지털 신호 처리 기술에서 제공될 수 있다. 이것은 폐 모니터, 가속도게, 심박동수 모니터, 페이스메이커, 등을 포함할 수도 있을 것이다. 다른 응용은 안전 시스템(예를 들면, 안정성 제어 시스템, 드라이버 지원 시스템, 브레이크 시스템, 임의의 종류의 인포테인먼트 인테리어 응용)을 위한 자동차 기술을 포함할 수 있다. 또한, 파워트레인 시스템(예를 들면, 하이브리드 및 전기 차량에서)은 배터리 모니터링, 제어 시스템, 보고 제어, 유지보수 활동, 등에서 고정밀 데이터 변환 제품을 사용할 수 있다. 다른 예시적 시나리오에서, 본 발명의 교시되는 바는 드라이브 생산성, 에너지 효율, 및 신뢰성에 도움을 주는 프로세스 제어 시스템을 포함하는 산업 시장에서 적용할 수 있다. 소비자 응용에서, 위에 논의된 신호 처리 회로의 교시되는 바는 이미지 처리, 자동초점, 및 이미지 안정화(예를 들면, 디지털 스틸 카메라, 캠코드 등을 위한)을 위해 사용될 수 있다. 이외 다른 소비자 응용은 홈 시어터 시스템, DVD 레코더, 및 고-상세 텔레비전을 위한 오디오 및 비디오 프로세서를 포함할 수 있다. 다른 소비자 응용은 어드밴스드 터치 스크린 제어기(예를 들면, 임의의 유형의 휴대 미디어 장를 위한)을 수반할 수 있다. 따라서, 이러한 기술은 쉽게 스마트폰, 태블렛, 보안 시스템, PC, 게이밍 기술, 가상현실, 시뮬레이션 훈련, 등의 부분일 수도 있을 것이다.
전술한 바는 당업자가 본 발명의 측면을 더 잘 이해할 수 있게 몇몇 실시예의 특징을 개괄한 것이다. 당업자는 이들이 동일 목적을 수행하고 및/또는 본원에 도입된 실시예의 동일 잇점을 달성하기 위해 다른 프로세스 및 구조를 설계 또는 수정하기 위한 토대로서 본 발명을 쉽게 이용할 수 있음을 알 것이다. 또한, 당업자는 이러한 등가 구조는 본 발명의 정신 및 범위 내에 있고, 이들이 본 발명의 정신 및 범위 내에서 다양하게 변경, 대체, 및 변형될 수 있음을 알 것이다.
본 발명의 특정 실시예는 칩 상의 시스템(SOC) 중앙 처리 유닛(CPU) 패키지에 쉽게 포함될 수 있다. SOC는 컴퓨터 또는 이외 다른 전자 시스템의 성분을 단일 칩에 일체화하는 IC를 나타낸다. 이것은 디지털, 아날로그, 혼합-신호, 및 무선 주파수 기능을 내포할 수 있고, 이들 모두는 단일 칩 기판 상에 제공될 수도 있다. 다른 실시예는 복수의 개별적 칩들이 단일 전자 패키지 내에 위치되고 전자 패키지를 통해 서로 밀접하게 상호작용하게 구성된 복수-칩-모듈(MCM)을 포함할 수 있다. 여러 다른 실시예에서, 디지털 신호 처리 기능은 응용특정의 집적회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA), 및 이외 반도체 칩 내 하나 이상의 실리콘 코어에 구현될 수 있다.
예시적 구현에서, 본원에 개괄된 처리 단계들의 적어도 몇몇 부분들은 소프트웨어로 구현될 수도 있다. 일부 실시예에서, 이들 특징 중 하나 이상은 개시된 도면의 요소 외부에 제공된 하드웨어로 구현되거나, 의도된 기능을 달성하기 위해 임의의 적합한 방식으로 합체될 수 있다. 여러 성분은 본원에 개괄된 동작을 달성하기 위해서 공조할 수 있는 소프트웨어(또는, 레시프로케이트(reciprocating) 소프트웨어)를 포함할 수 있다. 다른 실시예에서, 이들 요소는 임의의 적합한 알고리즘, 하드웨어, 소프트웨어, 성분, 모듈, 인터페이스, 혹은 이들의 동작을 용이하게 하는 객체를 포함할 수 있다.
또한, 기술된 마이크로프로세서에 연관된 성분들 중 일부는 제거되거나, 아니면 합체될 수 있다. 일반적인 의미에서, 도면에 도시된 배열은 이들의 표현이 더 논리적일 수 있고, 반면 물리적 아키텍처는 다양한 치환, 조합, 및/또는 이들 요소들의 혼성을 포함할 수 있다. 본원에 개괄된 동작 목적을 달성하기 위해 무수한 가능한 설계 구성이 사용될 수 있음에 반드시 유의해야 한다. 따라서, 연관된 기반구조는 무수한 대치 배열, 설계 선택, 장치 가능성, 하드웨어 구성, 소프트웨어 구현, 장비 선택, 등을 갖는다.
임의의 적합하게 구성된 프로세서 성분은 본원에 상술된 동작을 달성하기 위해 데이터에 연관된 임의의 유형의 명령을 실행할 수 있다. 본원에 개시된 임의의 프로세서는 요소 또는 대상(예를 들면, 데이터)을 한 상태 또는 상황에서 또 다른 상태 또는 상황으로 전환할 수도 있을 것이다. 또 다른 예에서, 본원에 개괄된 몇몇 단계들은 고정된 로직 또는 프로그램가능 로직(예를 들면, 프로세서에 의해 실행되는 소프트웨어 및/또는 컴퓨터 명령)으로 구현될 수도 있고, 본원에서 확인된 요소는 몇몇 유형의 프로그램가능한 프로세서, 프로그램가능한 디지털 로직(예를 들면, 필드 프로그램가능 게이트 어레이(FPGA), 소거가능하고 프로그램가능한 판독 전용 메모리(EPROM), 전기적 소거가능하고 프로그램가능한 판독 전용 메모리(EEPROM)), 디지털 로직, 소프트웨어, 코드, 전자 명령을 포함하는 ASIC, 플래시 메모리, 광학 디스크, CD-ROM, DVD ROM, 자기 또는 광학 카드, 전자 명령을 저장하기에 적합한 그외 다른 유형의 기계-판독이능한 매체, 혹은 이들의 임의의 적합한 조합일 수도 있을 것이다. 동작에서, 프로세서는 정보를 임의의 적합한 유형의 비일시적 저장 매체(예를 들면, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 필드 프로그램가능 게이트 어레이(FPGA), 소거가능하고 프로그램가능한 판독 전용 메모리(EPROM), 전기적 소거가능하고 프로그램가능한 ROM(EEPROM), 등), 소프트웨어, 하드웨어, 혹은 이외 어떤 다른 적합한 성분, 장치, 요소, 또는 적합한 경우에 그리고 특별한 요구에 기초하여 객체에 저장할 수 있다. 또한, 프로세서에 추적되거나, 보내지거나, 수신되거나, 저장되는 정보는 특별한 요구 및 구현에 기초하여, 임의의 데이터베이스, 레지스터, 테이블, 캐시, 큐, 제어 리스트, 혹은 저장 구조에 제공될 수도 있을 것이며, 이들 모두는 임의의 적합한 시간 프레임에서 참조될 수도 있을 것이다. 본원에서 논의된 메모리 품목 어느 것이든 광범위한 용어인 '메모리' 내에 포괄되는 것으로서 해석되어야 한다. 유사하게, 본원에 기술되는 잠재적 처리 요소, 모듈, 머신 어느 것이든 광범위한 용어인 '마이크로프로세서' 혹은 '프로세서' 내에 포괄되는 것으로서 해석되어야 한다.
본원에 기술된 기능의 모든 또는 부분을 구현하는 컴퓨터 프로그램 로직은 소스 코드 형태, 컴퓨터로 실행가능한 형태, 및 다양한 중간 형태(예를 들면, 어셈블러, 컴파일러, 링커, 또는 로케이터에 의해 발생되는 형태)를 포함하여 -그러나 결코 이들로 제한되는 것은 아니다-, 다양한 형태로 실시된다. 예에서, 소스 코드는 이를테면 목적 코드, 어셈플리 언어, 또는 고-레벨 언어, 이를테면 OpenCL, 포트란, C, C++, JAVA, 또는 다양한 운영 시스템 또는 운영 환경에서 사용하기 위한 HTML과 같은 다양한 프로그래밍 언어로 구현된 일련의 컴퓨터 프로그램 명령을 포함한다. 소스 코드는 다양한 데이터 구조 및 통신 메시지를 정의하고 사용할 수 있다. 소스 코드는 컴퓨터로 실행가능한 형태(예를 들면, 인터프리터를 통해)일 수 있고, 혹은 소스 코드는 컴퓨터로 실행가능한 형태로 변환(예를 들면, 번역기, 어셈블러, 혹은 컴파일러를 통해)될 수도 있다. 또한, 전술한 것 중 어느 것이든 어떤 하드웨어 기능이 소프트웨어 에뮬레이션 또는 가상현실화로 제공되는 에뮬레이션 또는 가상현실화 환경을 제공하기 위해 사용될 수 있다.
위에 실시예의 논의에서, 버퍼, 주변 인터페이스 요소, 상호연결 보드, 클럭, DDR, 디지털 코어, 트랜지스터, 및/또는 이외 다른 성분은 특정 회로 요구를 수용하기 위해서 쉽게 교체되거나, 대체되거나, 아니면 수정될 수 있다. 또한, 상보 전자 장치, 하드웨어, 비일시적 소프트웨어, 등의 사용은 본 발명의 교시된 바를 구현하기 위한 동등하게 실현가능한 선택지를 제공함에 유의한다.
예시적 일 실시예에서, 도면의 임의의 수의 전기 회로는 연관된 전자 장치의 보드 상에 구현될 수 있다. 보드는 전자 장치의 내부 전자 시스템의 각종 성분을 보유할 수 있고, 또한 다른 주변장치를 제공할 수 있는 일반적인 회로 보드일 수 있다. 더 구체적으로, 보드는 시스템의 다른 성분이 전기적으로 통신할 수 있게 하는 전기적 연결을 제공할 수 있다. 특별한 구성 요망, 처리 요구, 컴퓨터 설계, 등에 기초하여 보드에 임의의 적합한 프로세서(디지털 신호 프로세서, 마이크로프로세서, 지원 칩셋, 등을 포함하여), 메모리 요소, 등이 적합하게 결합될 수 있다. 외부 저장장치, 추가의 센서, 오디오/비디오 디스플레이를 위한 제어기, 및 주변 장치와 같은 그외 다른 성분이 플러그-인 카드로서, 혹은 케이블을 통해, 보드에 부착되거나, 보드 자체에 일체화될 수 있다. 또 다른 예시적 실시예에서, 도면의 전기 회로는 독립형 모듈(예를 들면, 특정 응용 또는 기능을 수행하게 구성된 연관된 성분 및 회로를 가진 장치)로서 구현될 수 있고 혹은 전자 장치의 응용특정의 하드웨어에 플러그-인 모듈로서 구현될 수도 있다.
본원에서 제공되는 많은 예들로, 2, 3, 4, 혹은 그 이상의 전기 성분들에 관하여 상호작용이 기술될 수 있음에 유의한다. 그러나, 이것은 단지 명확성 및 예시 목적들을 위해 행해졌다. 시스템은 임의의 적합한 방식으로 합체될 수 있음을 알아야 할 것이다. 유사한 설계 대안들을 따라, 도면들의 예시된 성분들, 모듈들, 및 요소들의 어느 것이든 다양한 가능한 구성들로 조합될 수 있고 이들 모두는 명백히 이 명세서의 넓은 범위 내에 있다. 어떤 경우들에 있어서, 제한된 수의 전기 요소들을 단지 언급함으로써 주어진 한 세트의 흐름들의 기능들 중 하나 이상을 기술하는 것이 더 쉬울 수 있다. 도면들 및 이의 교시된 바들의 전기 회로들은 쉽게 확장할 수 있고 복잡한/정교한 배열들 및 구성들 뿐만 아니라 많은 수의 성분들을 수용할 수 있음을 알 것이다. 따라서, 제공된 예들은 범위를 제한하거나, 무수한 다른 아키텍처들에 잠재적으로 적용되는 전기 회로들의 넓은 교시된 바들을 억제하지 않을 것이다.
이외 많은 다른 변화들, 대치들, 변형들, 변경들, 및 수정들이 당업자에게 확인될 수 있고, 본 발명은 첨부된 청구항들의 범위 내에 속하는 것으로서 모든 이러한 변화들, 대치들, 변형들, 변경들, 및 수정들을 포함하게 의도된다. 미국특허청(USPTO) 및 아울러 이 출원에서 나온 임의의 특허를 읽는 어느 누구에게든 본원에 첨부된 청구항들을 해석하는데 도움을 주기 위해서, 출원인은 출원인이 (a) 첨부된 청구항들 중 어느 것이든 "하기 위한 수단" 혹은 "하기 위한 단계"라는 단어들이 명시적으로 특정 청구항들에 사용되지 않는한 출원일에 존재하는 것으로서 35 U.S.C. 112조의 (6)항을 적용하려는 것이 아니며, (b) 명세서 내 임의의 진술에 의해, 이 발명을 첨부된 청구항들에 반영된 개시된 바를 어떠한 식으로든 제한하려는 것이 아님에 유의하고자 한다.

Claims (21)

  1. 칩 상의 시스템(system on a chip)으로서,
    메모리;
    상기 메모리에 통신가능하게 결합된 메모리 버스; 및
    상기 메모리 버스를 통해 상기 메모리에 통신가능하게 결합된 프로세서
    를 포함하며,
    상기 프로세서는,
    저장 익스클루시브 초기화(STREX_INIT) 명령 - 상기 STREX_INIT 명령은 상기 메모리 내 위치에 익스클루시브 저장 트랜잭션을 개시하도록 동작 가능함 -;
    저장 익스클루시브 동기화(STREX_SYNC) 명령 - 상기 STREX_SYNC 명령은 XWAVAIL 인디케이터를 모니터링하도록 동작 가능하고, 상기 XWAVAIL 인디케이터는 STREX_INIT 프리미티브에 대한 XWRESULT 응답이 가용함을 나타내도록 동작 가능하며, 상기 XWRESULT 응답은 메모리 내 상기 위치에 상기 익스클루시브 저장 트랜잭션이 성공적이었는지 여부를 나타내도록 동작 가능함 -
    을 포함하는 저장 익스클루시브 기능을 제공하는 회로를 포함하는, 칩 상의 시스템.
  2. 청구항 1에 있어서, 상기 메모리는 상기 저장 익스클루시브 기능을 통해 세마포(semaphore) 핸들링을 제공하기 위한 명령들을 포함하고, 운영 시스템을 저장하고 있는, 칩 상의 시스템.
  3. 청구항 1에 있어서, 상기 메모리는 콘텍스트 스위칭시 무조건적 STREX_SYNC를 수행하기 위한 명령들을 포함하고, 운영 시스템을 저장하고 있는, 칩 상의 시스템.
  4. 청구항 1에 있어서, 상기 메모리 버스는 어드밴스드 확장가능 인터페이스(AXI) 버스인, 칩 상의 시스템.
  5. 청구항 1에 있어서, 상기 STREX_SYNC 프리미티브는 시스템 인터럽트에 의해 인터럽트가능한, 칩 상의 시스템.
  6. 청구항 1에 있어서,
    상기 프로세서는 상기 STREX_INIT 프리미티브에 선행하여 로드 익스클루시브(LDEX) 프리미티브를 제공하도록 또한 동작 가능하며, LDEX, STREX_INIT 및 STREX_SYNC는 함께 원자적 트랜잭션(atomic transaction)을 포함하고;
    상기 STREX_INIT 프리미티브는 인터럽트가 LDEX와 STREX_INIT 사이에서 발생하고 제2 LDEX를 개시한다면 저장 트랜잭션을 개시함이 없이 실패하게 하도록 동작 가능한, 칩 상의 시스템.
  7. 청구항 1에 있어서, 상기 프로세서는, 인터럽트가 상기 STREX_INIT 프리미티브와 STREX_SYNC 프리미티브 사이에서 발생하고 또한 상기 인터럽트가 제2 STREX_SYNC를 수행한다면 상기 STREX_SYNC 프리미티브가 무동작 상태에 진입하게 동작 가능하도록, 또한 동작할 수 있는, 칩 상의 시스템.
  8. 디지털 신호 프로세서 시스템으로서,
    메모리;
    상기 메모리에 통신가능하게 결합된 메모리 버스; 및
    상기 메모리 버스를 통해 상기 메모리에 통신가능하게 결합된 계산 유닛
    을 포함하며,
    상기 계산 유닛은,
    저장 익스클루시브 초기화(STREX_INIT) 프리미티브를 실행하는 것 - 상기 STREX_INIT 프리미티브는 상기 메모리 내 위치에 익스클루시브 저장 트랜잭션을 개시하도록 동작 가능함 -;
    별도의 저장 익스클루시브 동기화(STREX_SYNC) 프리미티브를 실행하는 것 - 상기 STREX_SYNC 프리미티브는 XWAVAIL 인디케이터를 모니터링하도록 동작 가능하고, 상기 XWAVAIL 인디케이터는 상기 STREX_INIT 프리미티브에 대한 XWRESULT 응답이 가용함을 나타내도록 동작 가능하며, 상기 XWRESULT 응답은 메모리 내 상기 위치에 상기 익스클루시브 저장 트랜잭션이 성공적이었는지 여부를 나타내도록 동작 가능함 - 을 포함하는 저장 익스클루시브 프리미티브를 제공하도록 동작 가능한, 디지털 신호 프로세서 시스템.
  9. 청구항 8에 있어서, 상기 메모리 버스는 어드밴스드 확장가능 인터페이스(AXI) 버스인, 디지털 신호 프로세서 시스템.
  10. 청구항 8에 있어서, 상기 STREX_SYNC 프리미티브는 시스템 인터럽트에 의해 인터럽트가능한, 디지털 신호 프로세서 시스템.
  11. 청구항 8에 있어서, 상기 STREX_SYNC 프리미티브는 시스템 인터럽트가 제2 STREX_INIT 프리미티브를 개시한다면 무동작 상태에 진입하도록 동작 가능한, 디지털 신호 프로세서 시스템.
  12. 청구항 8에 있어서, 상기 STREX_INIT 프리미티브는 실행을 위해 확정적인 수의 클럭 사이클들을 요구하는, 디지털 신호 프로세서 시스템.
  13. 청구항 8에 있어서, 상기 XWRESULT 인디케이터는 상기 메모리 버스에 의해 제공되는, 디지털 신호 프로세서 시스템.
  14. 청구항 8에 있어서, 상기 STREX_INIT 프리미티브는 STREX_SYNC가 실행되기 전에 제2 STREX_INIT가 실행된다면 예외를 일으키도록 구성되는, 디지털 신호 프로세서 시스템.
  15. 계산장치에 의해 수행되는, 저장 익스클루시브 프리미티브를 제공하는 방법으로서,
    저장 익스클루시브 초기화(STREX_INIT) 프리미티브를 실행하는 단계 - 상기 STREX_INIT 프리미티브는 메모리 위치에 익스클루시브 저장 트랜잭션을 개시하도록 동작 가능함 -;
    별도의 저장 익스클루시브 동기화(STREX_SYNC) 프리미티브를 실행하는 단계 - 상기 STREX_SYNC 프리미티브는 XWAVAIL 인디케이터를 모니터링하도록 동작 가능하고, 상기 XWAVAIL 인디케이터는 상기 STREX_INIT 프리미티브에 대한 XWRESULT 응답이 가용함을 나타내도록 동작 가능하며, 상기 XWRESULT 응답은 상기 메모리 위치에 상기 익스클루시브 저장 트랜잭션이 성공적이었는지 여부를 나타내도록 동작 가능함 -
    를 포함하는, 저장 익스클루시브 프리미티브를 제공하는 방법.
  16. 청구항 15에 있어서, 상기 STREX_SYNC 프리미티브는 시스템 인터럽트에 의해 인터럽트가능한, 저장 익스클루시브 프리미티브를 제공하는 방법.
  17. 청구항 15에 있어서,
    상기 STREX_INIT 프리미티브에 선행하여 로드 익스클루시브(LDEX) 프리미티브를 실행하는 단계 - LDEX, STREX_INIT 및 STREX_SYNC는 함께 원자적 트랜잭션을 포함함 -; 및
    인터럽트가 LDEX와 STREX_INIT 사이에서 발생하고 제2 LDEX를 개시한다면 저장 트랜잭션을 개시함이 없이 상기 STREX_INIT 프리미티브를 실패하게 하는 단계를 더 포함하는, 저장 익스클루시브 프리미티브를 제공하는 방법.
  18. 청구항 16에 있어서, 인터럽트가 상기 STREX_INIT 프리미티브와 상기 STREX_SYNC 프리미티브 사이에서 발생하고 상기 인터럽트가 제2 STREX_SYNC를 수행한다면, 상기 STREX_SYNC 프리미티브 대신에 무동작 상태를 수행하는 단계를 더 포함하는, 저장 익스클루시브 프리미티브를 제공하는 방법.
  19. 청구항 15에 있어서, 상기 STREX_INIT 프리미티브는 실행하기 위해 확정적인 수의 클럭 사이클들을 요구하는, 저장 익스클루시브 프리미티브를 제공하는 방법.
  20. 청구항 15에 있어서, 상기 XWRESULT 인디케이터는 메모리 버스에 의해 제공되는, 저장 익스클루시브 프리미티브를 제공하는 방법.
  21. 청구항 15에 있어서, 상기 STREX_INIT 프리미티브는 STREX_SYNC 프리미티브가 실행되기 전에 제2 STREX_INIT가 실행된다면 예외를 일으키도록 구성되는, 저장 익스클루시브 프리미티브를 제공하는 방법.
KR1020150022234A 2014-02-21 2015-02-13 인터럽트가능 저장 익스클루시브 KR101642646B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/187,058 US9411542B2 (en) 2014-02-21 2014-02-21 Interruptible store exclusive
US14/187,058 2014-02-21

Publications (2)

Publication Number Publication Date
KR20150099434A KR20150099434A (ko) 2015-08-31
KR101642646B1 true KR101642646B1 (ko) 2016-07-25

Family

ID=53882345

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150022234A KR101642646B1 (ko) 2014-02-21 2015-02-13 인터럽트가능 저장 익스클루시브

Country Status (4)

Country Link
US (1) US9411542B2 (ko)
KR (1) KR101642646B1 (ko)
CN (1) CN104866443B (ko)
DE (1) DE102015102135A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720837B2 (en) * 2014-06-27 2017-08-01 International Business Machines Corporation Allowing non-cacheable loads within a transaction
GB2554442B (en) * 2016-09-28 2020-11-11 Advanced Risc Mach Ltd Apparatus and method for providing an atomic set of data accesses
US10176131B1 (en) * 2017-09-27 2019-01-08 Xilinx, Inc. Controlling exclusive access using supplemental transaction identifiers
CN111353595A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
DE102018128045A1 (de) * 2018-11-09 2020-05-14 Infineon Technologies Ag Behandlung von Ausnahmen in einem Programm
CN111258643B (zh) * 2018-11-30 2022-08-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN110489169B (zh) * 2019-08-06 2021-10-19 晶晨半导体(上海)股份有限公司 一种片上系统的存储器快速启动方法
US11914511B2 (en) 2020-06-22 2024-02-27 Apple Inc. Decoupling atomicity from operation size
US11734051B1 (en) * 2020-07-05 2023-08-22 Mazen Arakji RTOS/OS architecture for context switching that solves the diminishing bandwidth problem and the RTOS response time problem using unsorted ready lists
TWI773106B (zh) * 2021-01-28 2022-08-01 華邦電子股份有限公司 具有運算功能的記憶體裝置及其操作方法
CN112995465B (zh) * 2021-02-05 2022-06-21 中电海康集团有限公司 一种基于zynq的图像传输系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6892257B2 (en) 2000-12-12 2005-05-10 Arm Limited Exclusive access control to a processing resource
US20100077143A1 (en) 2008-07-09 2010-03-25 Arm Limited Monitoring a data processing apparatus and summarising the monitoring data

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602004031719D1 (de) * 2004-07-01 2011-04-21 Texas Instruments Inc Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus
EP1628235A1 (en) * 2004-07-01 2006-02-22 Texas Instruments Incorporated Method and system of ensuring integrity of a secure mode entry sequence
US8516211B2 (en) * 2005-06-17 2013-08-20 Flexera Software Llc Secure storage management system and method
US20070052704A1 (en) * 2005-09-08 2007-03-08 Arm Limited 3D graphics image formation
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US7631150B2 (en) * 2006-09-29 2009-12-08 Broadcom Corporation Memory management in a shared memory system
US9547596B2 (en) * 2009-12-24 2017-01-17 Arm Limited Handling of a wait for event operation within a data processing apparatus
US8285937B2 (en) * 2010-02-24 2012-10-09 Apple Inc. Fused store exclusive/memory barrier operation
EP2581832A4 (en) * 2010-06-08 2013-08-07 Fujitsu Ltd DEVICE, METHOD, AND PROGRAM FOR CONTROLLING ACCESS TO MEMORY, MULTI-HEART PROCESSOR SYSTEM
GB2489000B (en) * 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
GB2491350B (en) * 2011-05-27 2020-02-12 Advanced Risc Mach Ltd Store-exclusive instruction conflict resolution
US8782356B2 (en) * 2011-12-09 2014-07-15 Qualcomm Incorporated Auto-ordering of strongly ordered, device, and exclusive transactions across multiple memory regions
US9223701B2 (en) * 2013-04-12 2015-12-29 Arm Limited Data processing apparatus and method for performing load-exclusive and store-exclusive operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6892257B2 (en) 2000-12-12 2005-05-10 Arm Limited Exclusive access control to a processing resource
US20100077143A1 (en) 2008-07-09 2010-03-25 Arm Limited Monitoring a data processing apparatus and summarising the monitoring data

Also Published As

Publication number Publication date
CN104866443A (zh) 2015-08-26
US9411542B2 (en) 2016-08-09
KR20150099434A (ko) 2015-08-31
US20150242334A1 (en) 2015-08-27
CN104866443B (zh) 2018-07-27
DE102015102135A1 (de) 2015-09-10

Similar Documents

Publication Publication Date Title
KR101642646B1 (ko) 인터럽트가능 저장 익스클루시브
US9092429B2 (en) DMA vector buffer
CN107408036B (zh) 用户级分叉与结合处理器、方法、系统和指令
CN108292221B (zh) 事务结束加上持续性提交指令、处理器、方法和系统
US8301849B2 (en) Transactional memory in out-of-order processors with XABORT having immediate argument
US7487341B2 (en) Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource
US7590774B2 (en) Method and system for efficient context swapping
CN114003288A (zh) 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令
JP5357972B2 (ja) コンピュータシステムにおける割り込み通信技術
JP6005392B2 (ja) ルーティングのための方法及び装置
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
JP2012038293A (ja) マシンビジョン用マルチプロセッサシステムオンチップ
US20150363318A1 (en) Cache way prediction
US11074204B2 (en) Arbiter based serialization of processor system management interrupt events
CN107957965B (zh) 服务质量序数修改
JP2017016639A (ja) トランザクショナル電力管理を実行するためのハードウェア装置及び方法
JP2008033893A (ja) マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
US20130055284A1 (en) Managing shared computer resources
WO2011113646A1 (en) Masked register write method and apparatus
US8843728B2 (en) Processor for enabling inter-sequencer communication following lock competition and accelerator registration
US20090063881A1 (en) Low-overhead/power-saving processor synchronization mechanism, and applications thereof
US20150378939A1 (en) Memory mechanism for providing semaphore functionality in multi-master processing environment
JP2005327086A (ja) 半導体集積回路装置
KR20160036796A (ko) Dma, 브리지, 외부 i/o 버스를 배제하는 인터럽트-구동 버스트전송을 이루고, 새로운 인터페이스 신호들이 fifo 기반 i/o 포트들을 지원하며, 단일 대형 선형 레지스터를 이용하는 프로세서 모델
JP2007048020A (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