KR101031558B1 - 복수의 스레드를 동시에 처리하는 연산장치 - Google Patents

복수의 스레드를 동시에 처리하는 연산장치 Download PDF

Info

Publication number
KR101031558B1
KR101031558B1 KR1020097026080A KR20097026080A KR101031558B1 KR 101031558 B1 KR101031558 B1 KR 101031558B1 KR 1020097026080 A KR1020097026080 A KR 1020097026080A KR 20097026080 A KR20097026080 A KR 20097026080A KR 101031558 B1 KR101031558 B1 KR 101031558B1
Authority
KR
South Korea
Prior art keywords
instruction
execution
circuit
thread
retry
Prior art date
Application number
KR1020097026080A
Other languages
English (en)
Other versions
KR20100021455A (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 KR20100021455A publication Critical patent/KR20100021455A/ko
Application granted granted Critical
Publication of KR101031558B1 publication Critical patent/KR101031558B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)
  • Advance Control (AREA)

Abstract

단일 스레드의 명령열을 처리하는 프로세서와 동등한 리트라이(retry) 성공율을 실현하는 복수 스레드의 명령열을 동시에 처리할 수 있는 프로세서를 제공하기 위해서, 연산장치(200)에 복수의 스레드를 실행하는 명령실행회로(201)와, 각 스레드에 관한 실행 상태나 재실행을 제어하는 실행제어회로(202)를 구비한다.
Figure R1020097026080
연산장치, 연산회로, 스레드(thread), 리트라이(retry)

Description

복수의 스레드를 동시에 처리하는 연산장치{ARITHMETIC DEVICE FOR CONCURRENTLY PROCESSING A PLURALITY OF THREADS}
본 발명은 복수의 스레드를 동시에 처리하는 연산장치로서, 하드웨어 명령의 리트라이 기능(retry function)을 가진 연산장치에 관한 것이다.
신뢰성을 중시하는 서버용 프로세서에서는, 명령 처리중에 에러를 검출하면 그 시점에서 처리하고 있던 명령을 하드웨어에서 재실행하는 명령 리트라이 처리가 행해지고 있다. 예를 들면, 이하와 같은 에러가 발생했을 때에 명령 리트라이를 실행함으로써 프로그램을 이상 종료시키지 않고 처리를 계속할 수 있다.
(1) α선 등에 의해 일시적으로 하드웨어 내부의 상태가 변화되는 것으로 발생하는 에러
하드웨어 자체의 고장이 원인이 아니므로, 명령을 재실행했을 때에 같은 에러가 발생할 가능성은 매우 낮다. 따라서, 이러한 종류의 에러는 거의 확실하게 명령 리트라이로 회복할 수 있다.
(2) 하드웨어 내부의 근접 배선으로부터의 노이즈에 의해 발생하는 에러
프로세서 내부의 신호선이 일렉트로마이그레이션(electromigration) 등에 의해 손상되기 시작하고 있는 경우에는, 그 신호선에 근접한 신호선에 에러가 발생하 는 경우가 있다. 이러한 에러는 단일 명령만을 재실행함으로써 재실행시에 근접 배선이 변동할 확률이 대폭 감소하므로, 명령 리트라이에 의해 회복할 수 있는 가능성이 높아진다.
도 1은 종래의 명령 리트라이 방식을 설명하는 도면이다.
명령 리트라이 기구를 가진 종래의 연산장치(100)는, 도 1에 나타나 있는 바와 같이, 명령실행회로(101)와, 실행상태제어회로(102)와, 리트라이제어회로(103)를 구비한다.
명령실행회로(101)는 임의의 명령을 기억장치로부터 페치(fetch)하고, 페치된 명령에 대하여 디코딩(decoding) 처리를 행한다. 그리고, 디코딩된 명령에 따라 연산을 실행한다. 또한, 명령을 실행할 때에, 프로그래머블(programmable) 자원의 갱신을 순차적으로 지시하는 동시에, 명령 실행 중의 에러 유무를 체크한다. 또한, 명령실행회로(101)는 명령 실행이나 자원 갱신이 완료되면 리트라이제어회로(103)에 통지한다.
실행상태제어회로(102)는 명령실행회로(101)에 대하여 명령 실행의 취소(cancel)를 지시한다.
리트라이제어회로(103)는 명령실행회로(101)가 명령 리트라이 가능한 타이밍을 판단하고, 명령 리트라이를 수행하는 것을 확정한 것을 나타내는 플래그(flag)(예를 들면, 레지스터)의 ON/OFF를 제어한다. 그리고, 리트라이 가능한 타이밍이라고 판단하면, 명령실행회로(101)에 대하여 단일명령 실행을 지시한다.
명령실행회로(101)는 자원을 1개만 갱신하는 명령인 경우 명령 실행의 완료 와 자원갱신의 완료를 동일한 타이밍으로 통지하지만, 복수의 사이클로 나누어서 자원을 갱신하는 명령인 경우 명령 실행의 완료와 자원 갱신의 완료를 다른 타이밍으로 통지한다. 이 경우, 리트라이제어회로(103)는 자원 갱신후로부터 명령 실행의 완료직전까지 사이에는 리트라이 불가능으로 판단한다.
이상의 구성으로, 이하에 나타낸 리트라이 처리가 행해진다.
(1) 명령실행회로(101)는 명령 실행 중에 에러를 검출하면, 실행상태제어회로(102)와 리트라이제어회로(103)에 대하여 에러 발생을 통지한다.
(2) 명령실행회로(101)로부터 에러 발생의 통지를 받으면, 실행상태제어회로(102)는 에러 데이터를 사용하여 자원의 갱신이 행해지는 것을 피하기 위해 바로 명령실행회로(101)에 대하여 명령 실행의 취소를 지시한다.
(3) 명령실행회로(101)로부터 에러 발생의 통지를 받으면, 리트라이제어회로(103)는 리트라이 가능한 타이밍인지 여부를 판단한다. 그리고, 리트라이 가능한 타이밍이면, 명령 리트라이를 행하는 것을 확정한 것을 나타내는 플래그를 셋트하고, 명령실행회로(101)에 명령의 재실행을 지시한다.
한편, (4) 실행상태제어회로(102)로부터 명령 실행 취소의 지시를 받으면, 명령실행회로(101)는 명령실행회로(101) 내의 처리를 모두 클리어(clear)한다. 또한, 명령실행회로(101)는 실행상태제어회로(102)로부터의 명령 실행 취소의 지시가 해제되면, 리트라이제어회로(103)로부터의 지시에 따라서 명령의 재실행을 행한다.
(5) 명령의 재실행이 완료되면, 명령실행회로(101)는 명령 실행의 완료를 리트라이제어회로(103)에 통지한다.
(6) 명령실행회로(101)로부터 명령 실행 완료의 통지를 받으면, 리트라이제어회로(103)는 명령 리트라이 처리를 행하는 것을 확정한 것을 나타내는 플래그를 리셋하여 명령실행회로(101)에의 재실행의 지시를 해제한다.
(7) 재실행의 지시가 해제되면, 명령실행회로(101)는 리트라이 처리를 종료하고, 통상의 명령 실행 처리를 재개한다.
여기서, 성능을 중시하는 프로세서에서는 복수 스레드의 명령열(sequence of instructions)을 동시에 처리함으로써 성능의 향상을 도모하는 프로세서가 제안되어 있다.
예를 들면, 1 사이클마다 다른 스레드의 명령열을 실행하는 “fine grained vertical multi-threading”이라고 불리는 방식이나, 복수 스레드의 명령열을 동시에 실행하는 “simultaneous multi-threading”이라고 불리는 방법을 사용한 프로세서이다. 이 방식은, 어떤 동일 시점에서 보았을 때 복수 스레드의 명령열을 동시에 명령실행회로로 처리할 수 있다.
서버용의 프로세서에는 고성능 및 고신뢰성이 요구되기 때문에, 복수 스레드의 명령열 처리를 동시에 행하는 것에 의한 고성능화와, 에러시의 리트라이 처리에 의한 고신뢰성의 양립이 요구되고 있다.
복수 스레드의 명령열을 처리하는 프로세서에서, 리트라이 처리를 행하는 방법으로서 이하의 2개의 방법이 고려된다.
(A) 종래와 같은 단일 스레드의 명령열을 처리하는 프로세서의 명령 리트라이 기구를 모든 스레드에 대하여 공통적으로 하나만 프로세서에 구비하는 방법.
(B) 종래와 같은 단일 스레드의 명령열을 처리하는 프로세서의 명령 리트라이 기구를 스레드마다 하나씩 프로세서에 구비하는 방법.
그러나, (A)에 나타낸 방법에서는 에러 발생을 검출한 타이밍에서, 복수 처리되어 있는 스레드 중 어느 하나가 리트라이 불가능한 상태라면 명령 리트라이는 불가능이 된다. 즉, 스레드 수가 늘어나면 늘어날수록 명령 리트라이 불가능으로 판단될 가능성이 높아진다. 따라서, 리트라이 성공율은 단일 스레드용 프로세서보다도 낮아진다.
또한, (B)에 나타낸 방법에서는 명령 리트라이가 스레드마다 행해지게 된다. 즉, 어떤 스레드에서 에러가 검출되어 명령 리트라이 처리가 행해지고 있는 사이, 에러가 검출되지 않고 있는 스레드의 명령열은 통상대로 실행된다. 따라서, 단일 스레드 처리 프로세서에 비해 명령 리트라이 처리 중에 동작하는 회로량이 늘어난다. 그 때문에, 예를 들면 다른 배선으로부터의 노이즈에 에러 원인이 있는 경우의 리트라이 성공율은 단일 스레드용 프로세서보다도 낮아진다.
상기 기술과 관련된 기술로서, 특허문헌 1에는 명령 리트라이를 몇 번이고 반복 동작시켜서 검증할 수 있게 함으로써 높은 품질을 가진 명령 리트라이 기능을 실현할 수 있는 정보처리장치에 대해 개시되어 있다.
특허문헌 2에는 오퍼랜드 데이터(operand data)를 복수회 참조하는 커맨드(command)를 각 1 회만 오퍼랜드 데이터를 참조하는 커맨드로 분할해 두고, 실행시에 에러가 발생한 경우에는 그 커맨드만을 재실행하는 정보처리장치에 대해 개시되어 있다.
특허문헌1: 일본국 공개특허공보 제2006-040174호
특허문헌2: 미국특허 제5564014호 명세서
본 발명은 상기한 문제를 고려하여 이루어진 것으로서, 그 해결하려고 하는 과제는 단일 스레드의 명령열을 처리하는 프로세서와 동등한 리트라이 성공율을 실현하는 복수 스레드의 명령열을 동시에 처리할 수 있는 프로세서를 제공하는 것이다.
상기 과제를 해결하기 위해서, 본 발명에 따른 연산장치는 복수의 스레드를 병렬적으로 실행하고 상기 실행중에 발생하는 하드웨어 에러를 검출하여 통지하는 명령실행회로와, 상기 명령실행회로로부터 상기 하드웨어 에러가 통지되면 상기 명령실행회로에 대해 모든 스레드에 대한 실행의 취소를 지시하여 상기 모든 스레드가 취소 상태가 될 때까지 대기를 행하고, 상기 하드웨어 에러가 발생한 에러 스레드에 대해서 1 명령만 재실행을 지시하는 실행제어회로를 구비한다.
본 발명에 의하면, 실행제어회로는 모든 스레드의 실행을 취소하고, 또한, 모든 스레드가 취소 상태가 될 때까지 대기를 실행한다. 그리고, 모든 스레드가 취소 상태로 되면 명령실행회로에 대해 1 명령만 재실행을 지시한다.
따라서, 재실행의 지시에 의해 동작하는 회로 이외의 다른 회로는 동작하지 않으므로, 당해 다른 회로로부터의 노이즈에 의한 에러의 발생을 회피하는 것이 가능해 진다.
또한, 실행제어회로는 모든 스레드가 취소 상태가 될 때까지 대기를 하고, 명령실행회로에 재실행을 지시하므로, 명령실행회로는 확실하게 지시된 스레드에 대해서 재실행할 수 있다.
그 결과, 복수 스레드의 명령열을 동시에 처리할 수 있는 프로세서에서의 하드웨어 에러 시의 재실행의 성공율을 향상하는 것이 가능해 진다.
이상과 같이, 본 발명에 의하면 단일 스레드의 명령열을 처리하는 프로세서와 동등한 리트라이 성공율을 실현하는 복수 스레드의 명령열을 동시에 처리할 수 있는 프로세서를 제공할 수 있다.
도 1은 종래의 명령 리트라이 방식을 설명하는 도면.
도 2는 본 실시예에 따른 연산장치의 동작 원리를 설명하는 도면.
도 3은 본 실시예에 따른 연산장치의 전체 구성의 개요를 나타낸 도면.
도 4는 본 실시예에 따른 실행상태제어회로의 구성예를 나타낸 도면.
도 5는 본 실시예에 따른 리트라이제어회로의 구성예를 나타낸 도면.
도 6은 본 실시예에 따른 스레드대기회로의 구성예를 나타낸 도면.
도 7은 본 실시예에 따른 명령실행회로의 구성예를 나타낸 도면.
도 8은 본 발명에 따른 연산장치의 동작을 설명하는 흐름도.
이하, 본 발명의 실시예에 대해 도 2∼도 8에 기초하여 설명한다.
도 2는 본 실시예에 따른 연산장치(200)의 동작 원리를 설명하는 도면이다.
도 2에 나타낸 연산장치(200)는 복수의 스레드를 실행하는 명령실행회 로(201)와 각 스레드에 관한 실행 상태나 재실행을 제어하는 실행제어회로(202)를 구비한다.
명령실행회로(201)는 1 이상의 명령열로 이루어진 복수의 스레드를 병렬적으로 처리하는 회로이다. 예를 들면, 각 스레드에 대하여 명령 페치(fetch), 명령 디코딩, 연산 실행, 명령 완료, 프로그래머블 자원 갱신의 지시, 명령 실행 중의 하드웨어 에러 체크 등을 행한다.
그리고, 명령실행회로(201)는 각 스레드에 대해서 명령 실행 중에 하드웨어 에러를 검출하면, 실행제어회로(202)에 당해 하드웨어 에러를 통지한다(이하, 이 통지를 단지「에러 통지」라 함).
또한, 명령실행회로(201)는 실행제어회로(202)로부터 특정 스레드에 대한 실행 취소의 지시(이하, 이 지시를 「취소 지시」라 함)를 받으면, 당해 스레드에 관한 실행을 취소한다.
또한, 명령실행회로(201)는 실행제어회로(202)로부터 특정 스레드에 대한 재실행의 지시(이하, 「리트라이 지시」라고 함)를 받는 중에, 도면에 나타나 있지 않은, 실행상태제어회로(302)로부터의 실행의 취소를 해제하는 지시(이하, 이 지시를 「취소 해제 지시」라 함)를 받은 스레드에 대해 1 명령만 재실행을 행한다.
실행제어회로(202)는 명령실행회로(201)로부터 에러 통지를 받으면, 명령실행회로(201)에 대해 하드웨어 에러가 발생한 때에 실행하고 있던 스레드 (이하, 「에러 스레드」라고 함)의 취소 지시를 행하는 동시에, 당해 에러 스레드의 리트라이 지시를 행한다.
이 때, 실행제어회로(202)는 명령실행회로(201)에 대해 에러 스레드 이외의 실행중인 스레드(이하, 「정상 스레드」라 함)에 대해서도 실행의 취소를 지시한다.
그리고, 실행제어회로(202)는 명령실행회로(201)에서의 스레드의 실행 상태를 감시하고, 모든 스레드의 실행이 취소될 때까지 대기를 행한다.
또한, 모든 스레드의 실행이 취소되면, 실행제어회로(202)는 명령실행회로(201)에 대해 에러 스레드에 대한 취소 해제 지시를 행하여 1 명령만 재실행시킨다. 실행제어회로(202)는 1 스레드씩 재실행을 행하고, 모든 에러 스레드에 대해서 재실행이 완료하면 리트라이 처리를 종료한다.
도 3은 본 실시예에 따른 연산장치(200)의 전체구성의 개요를 나타낸 도면이다.
도 3에 나타나 있는 바와 같이, 연산장치(200)는 복수의 스레드를 실행하는 명령실행회로(201)와, 각 스레드에 관한 실행 상태나 재실행을 제어하는 실행제어회로(202)와, 각 스레드의 실행에 사용하는 프로그래머블 자원(301-1, 301-2, ···, 301-n(n은 자연수), 이하, 임의의 프로그래머블 자원을 지시할 경우에는 「프로그래머블 자원(301)」이라 기재함)을 구비한다.
그리고, 실행제어회로(202)는 스레드마다, 스레드의 실행 상태를 제어하는 실행상태제어회로(302-1, 302-2, ···, 302-n)와, 스레드의 재실행을 제어하는 리트라이제어회로(303-1, 303-2, ···, 303-n)를 구비하고, 또한 리트라이 실행의 때에 모든 스레드가 취소될 때까지 대기를 행하는 대기회로(304)를 구비한다.
또한, 임의의 실행상태제어회로(302-1∼302-n)를 지시할 경우에는 「실행상태제어회로(302)」라고 기재한다. 이와 마찬가지로, 임의의 리트라이제어회로(303-1∼303-n)를 지시할 경우에는 「리트라이제어회로(303)」라고 기재한다.
명령실행회로(201)는 도 2에서 설명한 바와 같이, 1 이상의 명령열로 이루어진 복수의 스레드를 병렬적으로 처리한다. 예를 들면, 각 스레드에 대해 명령 페치, 명령 디코딩, 연산 실행, 명령 완료, 프로그래머블 자원 갱신의 지시, 명령 실행중인 하드웨어 에러의 체크 등을 행한다.
명령실행회로(201)는 명령 실행 중 또는 명령 실행 완료시에 프로그래머블 자원(301)의 갱신을 행하면, 갱신한 프로그래머블 자원(301)을 사용하는 스레드를 관리하는 리트라이제어회로(303)에 대해 자원의 갱신을 통지한다(이하, 이 통지를 「자원 갱신 통지」라고 함).
또한, 명령실행회로(201)는 임의의 스레드에 대한 명령 실행이 완료하면, 당해 스레드를 관리하는 리트라이제어회로(303)와 스레드대기회로(304)에 대하여 명령 실행의 완료를 통지한다(이하, 이 통지를 「명령 완료 통지」라고 함).
또한, 명령실행회로(201)는 명령 실행중의 하드웨어 에러를 검출하면, 에러 스레드를 관리하는 실행상태제어회로(302)에 대하여 에러 통지를 행한다.
또한, 명령실행회로(201)는 실행상태제어회로(302)로부터 취소 지시를 받으면, 그 실행상태제어회로(302)가 관리하는 스레드의 명령 실행 처리를 모두 클리어(취소)하고, 그 스레드의 프로그래머블 자원의 갱신을 중지한다. 그리고, 실행상태제어회로(302)로부터 취소 해제 통지를 받을 때까지 이 상태를 유지한다.
또한, 명령실행회로(201)는 리트라이제어회로(303)로부터 리트라이 지시를 받은 스레드 중, 실행상태제어회로(302)로부터 취소 해제 통지를 받은 스레드에 대해 1 명령만 재실행을 행한다.
실행상태제어회로(302)는 명령실행회로(201)로부터 에러 통지를 받거나 또는 스레드대기회로(304)로부터 취소 지시를 받으면, 명령실행회로(201)에 대해 취소 지시를 행한다.
이 때, 실행상태제어회로(302)는 당해 스레드가 취소된 상태인 것을 스레드대기회로(304)에 통지한다.
또한, 실행상태제어회로(302)는 스레드대기회로(304)로부터 취소 해제 지시를 받으면, 도면에는 나타내지 않았지만, 명령실행회로(201)에 대해 당해 스레드에 대한 취소 해제 지시를 행한다.
리트라이제어회로(303)는 명령실행회로(201)로부터 에러 통지를 받으면, 명령실행회로(201)로부터의 명령 완료 통지나 자원 갱신 통지에 의거하여 당해 스레드에 대해 리트라이 가능한 타이밍인지 여부를 판단한다. 리트라이가 가능한 타이밍에 있는 경우(이하, 이 상태를 「리트라이 확정 상태」라고 함), 명령실행회로(201)에 대해 리트라이 지시를 행하는 동시에, 스레드대기회로(304)에 대해 당해 스레드가 리트라이 확정 상태에 있는 것을 통지한다(이하, 이 통지를 「리트라이 확정 통지」라고 함).
스레드대기회로(304)는 리트라이제어회로(303)로부터 리트라이 확정 통지를 받으면, 명령실행회로(201)로부터 명령 완료 통지를 받은 모든 스레드의 실행상태 제어회로(302)에 대해 취소 지시를 행한다.
그리고, 스레드대기회로(304)는 각 스레드를 관리하는 실행상태제어회로(302)로부터의 취소 상태 통지를 감시하고, 모든 스레드가 취소될 때까지 대기를 행한다.
그리고, 스레드대기회로(304)는 리트라이 확정 상태에 있는 스레드 중에서 1 스레드 선택하고, 당해 스레드를 관리하는 실행상태제어회로(302)에 대해 취소 해제 지시를 행한다. 취소 해제 지시를 받은 실행상태제어회로(302)는 상기한 바와 같이, 도면에는 나타내지 않았지만, 실행상태제어회로(302)로부터 명령실행회로(201)에 대하여 당해 취소 해제 지시를 행함으로써 당해 스레드에 대해서 1 명령만 리트라이 처리가 행하여지는 것이 된다(이 처리는, 리트라이 확정 상태에 있는 모든 스레드에 대하여 행해진다).
그리고, 스레드대기회로(304)는 리트라이 확정 상태에 있는 모든 스레드에 대한 리트라이 처리가 완료하면, 모든 실행상태제어회로(302)에 대해 취소 해제 지시를 행하고 리트라이 처리를 종료한다.
이하, 각 회로의 구체적인 구성예에 관하여 설명한다.
도 4는 본 실시예에 따른 실행상태제어회로(302)의 구성예를 나타낸 도면이다.
도 4에 나타낸 실행상태제어회로(302)는 논리연산을 행하는 논리합회로(a)와, 상태의 유지· 천이가 가능한 레지스터(예를 들면, RS-FF)(401)로 구성된다.
논리합회로(a)는 명령실행회로(201)로부터의 에러 통지와, 스레드대기회 로(304)로부터의 취소 지시를 입력으로 한다. 레지스터(401)는 세트(set)측에 논리합회로(a)의 출력, 리셋(reset)측에 스레드대기회로(304)로부터의 취소 해제 지시를 입력으로 한다.
에러 통지가 「1」, 또는 취소 지시가 「1」이 되면 논리합회로(a)는 「1」을 출력하고, 레지스터(401)에 「1」이 셋트된다. 그리고, 레지스터(401)는 셋트된 값을 유지한다. 이 때의 레지스터(401) 상태를 「취소 상태」라고 한다. 또한, 취소 해제 지시가 「1」이 되면, 레지스터(401)가 「0」으로 셋트된다(취소 상태가 해제된다).
레지스터(401)의 출력은 명령실행회로(201)와 스레드대기회로(304)에 입력된다. 명령실행회로(201)에의 출력이 취소 지시(취소 해제 지시)이며, 스레드대기회로(304)에의 출력이 취소 상태 통지이다.
따라서, 실행상태제어회로(302)는 명령실행회로(201)로부터 에러 통지, 또는, 스레드대기회로(304)로부터 취소 지시를 받으면 취소 상태로 셋트되고, 명령실행회로(201)에 대해 취소 지시를 행하는 동시에 스레드대기회로(304)에 대해 취소 상태 통지를 행한다. 또한, 실행상태제어회로(302)는 스레드대기회로(304)로부터 취소 해제 지시를 받으면 취소 상태 해제되고, 명령실행회로(201)에 대해 취소 해제 지시를 행한다.
도 5는 본 실시예에 따른 리트라이제어회로(303)의 구성예를 나타낸 도면이다.
도 5에 나타낸 리트라이제어회로(303)는 상태의 유지· 천이가 가능한 레지 스터(예를 들면, RS-FF)(501, 502)와, 논리연산을 행하는 논리적회로(b), 부정논리적회로(c) 및 부정회로(d)로 구성된다.
레지스터(501)는 세트측에 명령실행회로(201)로부터의 명령 완료 통지, 리셋측에 명령실행회로(201)로부터의 자원 갱신 통지를 입력으로 한다. 또한 레지스터(502)는 세트측에 논리적회로(b)으로부터의 출력, 리셋측에 명령실행회로(201)로부터의 명령 완료 통지를 입력으로 한다. 또한, 논리적회로(b)는 레지스터(501)의 출력, 부정논리적회로(c)의 출력, 명령실행회로(201)로부터의 에러 통지를 입력으로 한다. 또한, 부정논리적회로(c)는 명령실행회로(201)로부터의 명령 완료 통지를 입력으로 하는 부정회로(d)의 출력, 명령실행회로(201)로부터의 자원 갱신 통지를 입력으로 한다.
레지스터(501)는 명령 완료 통지가 「1」이 되면 「1」로 셋트되고, 자원 갱신 통지가 「1」이 되면 「0」으로 셋트된다. 따라서, 레지스터(501)는 명령 완료 이외의 타이밍에서 자원 갱신 통지가 행해졌을 때 리셋되고, 명령 완료 통지를 받은 타이밍에서 셋트된다. 이하, 이 레지스터(501)를 RETRY_POINT라고 한다.
논리적회로(b)는 RETRY_POINT가 「1」, 부정논리적회로(c)의 출력이 「1」,또한, 에러 통지가 「1」인 경우만 「1」을 출력한다.
부정논리적회로(c)는 명령 완료 통지가 「0」, 또한, 자원 갱신 통지가 「1」이외인 경우에 「1」을 출력한다. 즉, 자원 갱신 통지가 입력되지 않는 한 「1」을 출력한다.
레지스터(502)는 논리적회로(b)의 출력이 「1」이 되면 「1」로 셋트되고, 명령 완료 통지가 「1」이 되면 「0」으로 셋트된다. 이하, 이 레지스터(502)를 RETRY_TGR이라 하고, RETRY_TGR가 「1」로 설정된 것을 「리트라이가 확정」됐다고 한다.
RETRY_TGR의 출력은 명령실행회로(201)와 스레드대기회로(304)에 입력된다. 명령실행회로(201)에의 출력이 리트라이 지시이며, 스레드대기회로(304)에의 출력이 리트라이 확정 통지이다.
이상으로부터, 리트라이제어회로(303)는 명령 완료 통지를 받고나서 자원 갱신 통지를 받기까지의 사이에, 에러 통지를 받으면 리트라이가 확정되고 명령 완료 통지를 받으면 리트라이 확정이 해제된다.
도 6은 본 실시예에 따른 스레드대기회로(304)의 구성예를 나타낸 도면이다.
도 6에 나타낸 스레드대기회로(304)는 각 스레드를 관리하는 실행상태제어회로(302)에 대해 취소 지시를 행하는 취소지시부(601)와, 각 스레드를 관리하는 실행상태제어회로(302)에 대해 취소 해제 지시를 행하는 취소해제지시부(602)를 구비한다.
취소지시부(601)는 스레드1의 취소 지시를 행하는 취소지시부(603-1), 스레드2의 취소 지시를 행하는 취소지시부(603-2),···, 스레드n의 취소 지시를 행하는 취소지시부(603-n)를 구비한다.
예를 들면, 취소지시부(603-1)는 스레드1 이외의 모든 스레드(스레드2∼n)의 RETRY_TGR를 입력으로 하는 논리합회로(e)와, 명령실행회로(201)로부터의 스레드1에 관한 명령 완료 통지와 논리합회로(e)의 출력을 입력으로 하는 논리적회로(f)로 구성된다.
논리합회로(e)는 스레드1 이외의 적어도 1개 이상의 스레드에 대해서 RETRY_TGR가 「1」이 되면 「1」을 출력한다. 논리적회로(f)는 명령실행회로(201)로부터의 스레드1에 관한 명령 완료 통지가 「1」, 또한, 논리합회로(e)의 출력이 「1」인 때에 「1」을 출력한다.
따라서, 취소지시부(603-1)는 스레드1 이외의 스레드에서 리트라이가 확정되고, 스레드1의 명령이 완료되면 스레드1에 대해 취소 지시를 출력한다.
같은 방법으로, 취소지시부(603-m)(m은 자연수)는 스레드m 이외의 모든 스레드(스레드1∼m-1 및 스레드m+1∼n)의 RETRY_TGR를 입력으로 하는 논리합회로(e)와, 명령실행회로(201)로부터의 스레드m에 관한 명령 완료 통지와 논리합회로(e)의 출력을 입력으로 하는 논리적회로(f)로 구성된다.
논리합회로(e)는 스레드m 이외의 적어도 1개 이상의 스레드에 대해서 RETRY_TGR가 「1」이 되면 「1」을 출력하고, 논리적회로(f)는 명령실행회로(201)로부터의 스레드m에 관한 명령 완료 통지가 「1」이고 논리합회로(e)의 출력이 「1」인 때에 「1」을 출력한다.
따라서, 취소지시부(603-m)는 스레드m 이외의 스레드에서 리트라이가 확정되고, 스레드m의 명령이 완료되면 스레드m에 대하여 취소 지시를 출력한다.
취소해제지시부(602)는 실행상태제어회로(302)에 대하여 스레드1의 취소 해제 지시를 행하는 취소해제지시부(604-1), 스레드2의 취소 해제 지시를 행하는 취소해제지시부(604-2),···, 스레드n의 취소 해제 지시를 행하는 취소해제지시 부(604-n)와, 모든 스레드에 대해 취소의 대기를 행하는 대기부(605)를 구비한다.
취소해제지시부(604-1)는 스레드1의 RETRY_TGR를 입력으로 하는 부정회로(c1)와, 스레드2∼n의 RETRY_TGR를 입력으로 하는 논리합회로(d)와, 부정회로(c1)의 출력과 논리합회로(d)의 출력을 입력으로 하는 논리적회로(e)와, 논리적회로(e)의 출력과 대기부(605)의 출력을 입력으로 하는 논리합회로(f)와, 논리합회로(f)의 출력을 입력으로 하는 부정회로(g)로 구성된다.
부정회로(c1)는 스레드1의 RETRY_TGR가 「0」인 때에 「1」을 출력한다. 논리합회로(d)는 스레드1 이외의 스레드의 RETRY_TGR가 「1」인 때에 「1」을 출력한다. 논리적회로(e)는 부정회로(c1)가 「1」이고 논리합회로(d)가 「1」인 때에만 논리합회로(f)에 「1」을 출력한다.
따라서, 취소해제지시부(604-1)는 스레드1 이외의 스레드에 대한 명령 리트라이가 확정되고 있을 경우에 대기부(605)에 의한 대기가 완료되면, 스레드1에 대해 취소 해제 지시를 행한다.
같은 방법으로, 취소해제지시부(604-m)는 스레드1, 2,···, m의 RETRY_TGR을 입력으로 하는 부정회로(c1, c2,···, cm)와, 스레드m+1, m+2,···, n의 RETRY_TGR을 입력으로 하는 논리합회로(d)와, 부정회로(c1, c2,···, cm)의 출력과 논리합회로(d)의 출력을 입력으로 하는 논리적회로(e)와, 논리적회로(e)의 출력과 대기부(605)의 출력을 입력으로 하는 논리합회로(f)와, 논리합회로(f)의 출력을 입력으로 하는 부정회로(g)로 구성된다.
부정회로(c1, c2,···, cm)는 각각 스레드1, 2,···, m의 RETRY_TGR가 「0」인 때에 「1」을 출력한다. 논리합회로(d)는 스레드c1, c2,···, cm 이외의 스레드의 RETRY_TGR가 「1」인 때에 「1」을 출력한다. 논리적회로(e)는 부정회로(c1, c2,···, cm)가 「1」이고, 스레드m+1, m+2,···, n의 RETRY_TGR가 「1」인 때에만 논리합회로(f)에 「1」을 출력한다.
따라서, 취소해제지시부(604-m)는 스레드1, 2,···, m 이외의 스레드에 대한 명령 리트라이가 확정되고 있을 경우에, 대기부(605)에 의한 대기가 완료되면 스레드m에 대하여 취소 해제 지시를 행한다.
대기부(605)는 각 실행상태제어회로(302)로부터의 스레드1, 2,···, n에 관한 취소 상태통지를 입력으로 하는 논리적회로(h)와, 논리적회로(h)의 출력을 입력으로 하는 부정회로(i)와, 스레드1, 2,···, n에 관한 RETRY_TGR를 입력으로 하는 논리합회로(j)와, 부정회로(i)의 출력과 논리합회로(j)의 출력을 입력으로 하는 논리적회로(k)를 구비한다.
대기부(605)는 스레드1, 2,···, n의 적어도 1개 이상의 스레드의 RETRY_TGR가 「1」이고, 모든 스레드에 대한 취소 상태통지가 「1」이 된 경우에만 논리합회로(f)에 「0」을 출력하고, 그 밖의 경우에는 논리합회로(f)에 「1」을 출력한다.
따라서, 대기부(605)는 스레드1, 2,···, n의 적어도 1개 이상의 스레드에 대한 리트라이가 확정된 경우에 모든 스레드가 취소 상태가 될 때까지 대기를 행하고, 모든 스레드가 취소 상태가 되면 각 스레드에 대한 취소 해제 지시를 허가한다.
도 7은 본 실시예에 따른 명령실행회로(201)의 구성예를 나타낸 도면이다.
도 7에 나타낸 명령실행회로(201)는 스레드마다의 명령열의 취출(取出) 처리를 제어하는 명령페치제어회로(701)와, 취출된 명령열을 일시적으로 기억하는 명령버퍼(702)와, 명령열을 디코딩하는 명령디코더(703)와, 분기 명령의 분기 어드레스의 계산 등을 행하는 분기명령제어회로(704)와, 명령에 대응한 연산을 행하는 연산유닛(705)과, 명령열 순으로 명령을 완료시켜 프로그램 자원의 갱신을 지시하는 명령커밋제어회로(706)를 구비한다.
명령페치제어회로(701)는 캐시회로(707)에 대해 스레드마다의 명령열의 취출을 지시하고, 취출된 명령열을 명령버퍼(702)에 저장한다. 또한, 리트라이제어회로(303)로부터 리트라이 지시를 받고, 또한, 실행상태제어회로(302)로부터의 취소 해제 지시에 의해 취소 상태가 해제되면 당해 스레드의 명령열의 취출을 캐시회로(707)에 지시한다.
명령디코더(703)는 명령버퍼(702)로부터 스레드마다의 명령열을 취출하고 디코딩하여, 디코딩의 결과에 따라 분기제어회로(704), 연산유닛(705), 명령커밋제어회로(706) 등에 명령을 발행한다. 또한, 리트라이제어회로(303)로부터 리트라이 지시를 받고, 실행상태제어회로(302)로부터의 취소 해제 지시에 의해 취소 상태가 해제되면, 명령버퍼(702)로부터 명령을 취출하여 1 명령만 재실행한다.
분기제어회로(704)는 복수 스레드의 분기 명령의 분기 어드레스의 계산이나 분기 방향의 확정 등의 분기 명령 처리를 행한 후, 분기 명령 처리의 완료를 명령커밋제어회로(706)에 통지한다.
연산유닛(705)은 각 스레드의 명령에 대응한 연산을 행하고, 연산 처리 완료를 명령커밋제어회로(706)에 통지한다.
명령커밋제어회로(706)는 분기제어회로(704) 또는 연산유닛(705) 등으로부터의 처리의 완료 통지를 받고 그 명령에 필요한 처리가 모두 완료하면, 명령열 순서에 따라 명령을 완료시킨다. 그리고, 리트라이제어회로(303)와 스레드대기회로(304)에 대하여 명령 완료를 통지한다. 또한, 필요에 따라 프로그래머블 자원의 갱신을 지시하는 동시에, 리트라이제어회로(303)에 대해 자원 갱신을 통지한다.
이상으로 설명한 명령실행회로(201) 내의 각 회로에는, 도시하지 않았지만, 하드웨어 에러를 검출하는 에러 검출 회로가 구비되어 있다. 그리고, 명령 실행중에 하드웨어 에러를 검출하면, 에러 검출 회로는 에러 스레드를 관리하는 실행상태제어회로(302)와 리트라이제어회로(303)에 에러 통지를 행한다.
또한, 명령페치제어회로(701), 명령버퍼(702), 명령디코더(703), 분기명령제어회로(704), 연산유닛(705), 및 명령커밋제어회로(706)의 각 회로는, 실행상태제어회로(302)로부터 취소 지시를 받으면 그 실행상태제어회로(302)가 관리하는 스레드에 관한 처리를 정지하고 상태를 클리어한다(당해 스레드를 취소한다).
또한, 전술한 바와 같이 리트라이제어회로(303)로부터 리트라이 지시를 받고, 실행상태제어회로(302)로부터 취소 해제 지시를 받은 명령실행회로(201)는 실행상태제어회로(302) 및 리트라이제어회로(303)가 관리하는 스레드에 대해 리트라이 처리를 행한다. 또한, 1 명령만을 실행하는 처리에 대해서는 일반적으로 연산장치에 구비된 기능을 사용하면 되므로 상세한 설명은 생략한다.
도 8은 본 발명에 따른 연산장치(200)의 동작을 설명하는 흐름도이다.
스텝 S801에서, 명령실행회로(201)는 각 스레드에 대한 명령 실행중에 하드웨어 에러를 검출하면, 에러 스레드를 관리하는 실행상태제어회로(302)와 리트라이제어회로(303)에 에러 통지를 행한다.
스텝 S802에서, 에러 통지를 받은 실행상태제어회로(302)는 명령실행회로(201)에 대해 자신이 관리하는 스레드에 관한 명령 실행의 취소 지시를 행한다.
스텝 S803에서, 에러 통지를 받은 리트라이제어회로(303)는 자신이 관리하는 스레드에 대한 리트라이 가능인지 여부를 판단한다. 리트라이가 가능하지 않다고 판단한 경우, 리트라이제어회로(303)는 처리를 스텝 S804로 이행한다.
스텝 S804에서, 연산장치(200)는 에러 트랩(error trap)을 설정하고, 실행중인 소프트웨어에 의한 에러 처리(예를 들면, 인터럽트 핸들러(interrupt handler))등을 실행한다.
스텝 S803에서, 리트라이가 가능으로 판단되면, 리트라이제어회로(303)는 처리를 스텝 S805로 이행한다.
스텝 S805에서, 리트라이제어회로(303)는 RETRY_TGR에 「1」을 셋트하여, 리트라이를 확정 상태로 셋트한다.
스텝 S806에서, 스레드대기회로(304)는 모든 스레드에 대한 명령 실행이 취소된 것인지 여부를 판단한다. 그리고, 아직 취소되지 않은 스레드가 존재할 경우, 스레드대기회로(304)는 처리를 스텝 S807로 이행한다.
스텝 S807에서, 스레드대기회로(304)는 취소되지 않고 있는 정상 스레드의 명령 실행이 완료된 것인지 여부를 판단한다. 명령 실행이 완료되지 않을 경우에는, 재귀적으로 스텝 S807의 처리를 실행한다.
스텝 S807에서, 취소되지 않고 있는 정상 스레드로부터 명령 완료 통지를 받으면, 스레드대기회로(304)는 처리를 스텝 S808로 이행한다.
스텝 S808에서, 스레드대기회로(304)는 실행상태제어회로(302)에 대하여 당해 스레드의 명령 실행의 취소를 지시한다. 그리고, 처리를 스텝 S806으로 이행한다.
이상으로 설명한 스텝 S806∼S808의 처리에 의해 스레드대기회로(304)는 모든 모든 스레드가 취소될 때까지 대기를 행한다.
스텝 S806에서, 모든 스레드에 대해 명령 실행이 취소되면, 스레드대기회로(304)는 처리를 스텝 S809로 이행한다.
스텝 S809에서, 스레드대기회로(304)는 스텝 S805의 처리에서 RETRY_TGR에 「1」이 설정된 스레드로부터 1개를 선택한다. 이하, 선택된 스레드를 「선택 스레드」라고 한다.
스텝 S810에서, 스레드대기회로(304)는 선택 스레드를 관리하는 실행상태제어회로(302)에 대해 취소 해제 지시를 행한다.
스텝 S811에서, 명령실행회로(201)는 선택 스레드에 대해 취소가 해제되면, 선택 스레드에 대해 1 명령만 재실행을 행한다. 그리고, 처리를 스텝 S812으로 이행한다.
스텝 S812에서, 리트라이제어회로(303)는 재실행이 완료된 것인지 여부를 판 단한다. 예를 들면, 명령실행회로(201)로부터 송신된 선택 스레드에 관한 명령 완료 통지를 검출한다. 명령 완료 통지가 검출되지 않을 경우, 스텝 S812의 처리를 재귀적으로 실행한다.
스텝 S812에서, 명령 완료 통지가 검출되면, 리트라이제어회로(303)는 재실행이 완료됐다고 판단하고 처리를 스텝 S813으로 이행한다.
스텝 S813에서, 리트라이제어회로(303)는 스텝 S805에서 셋트한 RETRY_TGR를 「0」으로 리셋하고, 리트라이의 확정 상태를 해제한다.
스텝 S814에서, 스레드대기회로(304)는 스텝 S805에서 명령 리트라이가 확정 상태가 된 모든 스레드에 대해 스텝 S809∼S813의 재실행 처리가 완료된 것인지 여부를 판단한다.
재실행 하지 않는 스레드가 존재할 경우, 스레드대기회로(304)는 처리를 스텝 S815로 이행하고, 실행상태제어회로(302)에 대해 선택 스레드의 명령 실행의 취소를 지시한다. 그리고, 스텝 S809∼S814의 처리를 행한다.
스텝 S814에서, 스텝 S805로 리트라이가 확정된 모든 스레드에 대해 스텝 S809∼S813의 재실행 처리가 완료됐다고 판단되면, 스레드대기회로(304)는 처리를 스텝 S816으로 이행한다.
스텝 S816에서, 스레드대기회로(304)는 모든 실행상태제어회로(302)에 대하여 스레드의 취소 해제를 지시한다. 그리고, 처리를 스텝 S817으로 이행한다.
스텝 S817에서, 명령실행회로(201)는 모든 스레드에 대하여 정상처리를 시작한다.
이상에서 설명한 바와 같이 연산장치(200)는 명령실행회로(201)에 의해 명령 실행 중에 하드웨어 에러가 발생하면 모든 스레드의 실행을 취소한다. 그리고, 모든 스레드가 취소 상태가 될 때까지 대기를 행한다. 그리고, 모든 스레드가 취소 상태로 되면, 에러 스레드에 대해 1 명령만 재실행을 행한다.
연산장치(200)는 모든 스레드를 취소 상태로 하여 하나의 에러 스레드에 대해 재실행을 행하므로, 예를 들면 타배선으로부터의 노이즈를 원인으로 하는 하드웨어 에러를 회피할 수 있다.
또한, 연산장치(200)는 모든 스레드에 대한 취소 상태가 될 때까지 대기하고 나서(리트라이 가능한 타이밍까지 대기하고 나서) 재실행을 행하므로, 확실하게 에러 스레드에 대한 재실행을 행하는 것이 가능해 진다.
그 결과, 높은 리트라이 성공율을 실현 하는 것이 가능해 진다. 또한, 리트라이 성공율이 높아지므로 연산장치(200)의 신뢰성을 향상시키는 것이 가능해 진다.
또한, 연산장치(200)는 리트라이 처리 중에 동작하는 회로량을 억제할 수 있으므로, 복수 스레드의 명령열을 동시에 처리하는 프로세서라도 단일 스레드의 명령열을 처리하는 프로세서와 마찬가지로 리트라이를 성공하는 것이 가능해진다.

Claims (8)

  1. 복수의 스레드를 실행하고 상기 실행중에 발생하는 하드웨어 에러를 검출하여 통지하는 명령실행회로와,
    상기 명령실행회로로부터 상기 하드웨어 에러가 통지되면 상기 명령실행회로에 대해 모든 스레드에 대한 실행의 취소를 지시하여 상기 모든 스레드가 취소 상태가 될 때까지 대기를 행하고, 상기 하드웨어 에러가 발생한 에러 스레드에 대해서 1 명령만 재실행을 지시하는 실행제어회로를 구비하는 연산장치.
  2. 제 1 항에 있어서,
    상기 실행제어회로는, 상기 스레드마다,
    상기 명령실행회로에 대해 상기 스레드의 실행의 취소를 지시하여 상기 스레드의 실행 상태를 제어하는 실행상태제어회로와,
    상기 명령실행회로에서의 상기 에러 스레드의 실행 상태로부터 상기 1 명령의 재실행이 가능한 타이밍을 검출하고, 상기 명령실행회로에 대해 상기 1 명령의 재실행을 지시하는 리트라이제어회로를 구비하는 연산장치.
  3. 제 1 항에 있어서,
    상기 실행제어회로는,
    모든 스레드가 취소 상태가 될 때까지 상기 스레드의 실행 상태를 감시하고, 모든 스레드의 실행 상태가 취소 상태로 되면 상기 리트라이제어회로에 대해 상기 명령실행회로에 상기 1 명령을 재실행시키도록 지시하는 스레드대기회로를 구비하는 연산장치.
  4. 제 1 항에 있어서,
    상기 실행제어회로는, 상기 스레드마다,
    상기 명령실행회로에 대해 상기 스레드의 실행의 취소를 지시하여 상기 스레드의 실행 상태를 제어하는 실행상태제어회로와,
    상기 명령실행회로에서의 상기 에러 스레드의 실행 상태로부터 상기 1 명령의 재실행이 가능한 타이밍을 검출하고, 상기 명령실행회로에 대해 상기 1 명령의 재실행을 지시하는 리트라이제어회로를 구비하고, 또한
    상기 하드웨어 에러가 통지된 제 1 실행상태제어회로가 상기 명령실행회로에 대해 상기 에러 스레드의 실행의 취소를 지시한 취지의 통지를 받으면 상기 제 1 실행상태제어회로 이외의 제 2 실행상태제어회로에 대해 상기 스레드의 실행의 취소를 지시하고, 모든 스레드가 취소 상태가 될 때까지 상기 스레드의 실행 상태를 감시하고, 모든 스레드의 실행 상태가 취소 상태로 되면, 상기 에러 스레드에 관하여, 상기 리트라이제어회로에 대해 상기 명령실행회로에 상기 1 명령을 재실행시키도록 지시하는 스레드대기회로를 구비하는 연산장치.
  5. 복수의 스레드를 실행하고 상기 실행중에 발생하는 하드웨어 에러를 검출하는 명령 실행 처리와,
    상기 하드웨어 에러를 검출하면 상기 명령 실행 처리를 행하는 명령실행회로에 대해 모든 스레드에 대한 실행의 취소를 지시하고, 상기 모든 스레드가 취소 상태가 될 때까지 대기를 행하고, 상기 하드웨어 에러가 발생한 에러 스레드에 대해 1 명령만 재실행을 지시하는 리트라이 지시 처리와,
    상기 리트라이 지시에 따라 상기 하드웨어 에러가 발생한 에러 스레드에 대해서 1 명령만 재실행하는 리트라이 처리를 연산장치에 실행시키는 명령 리트라이 방법.
  6. 삭제
  7. 삭제
  8. 삭제
KR1020097026080A 2007-06-20 2007-06-20 복수의 스레드를 동시에 처리하는 연산장치 KR101031558B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/000661 WO2008155803A1 (ja) 2007-06-20 2007-06-20 複数のスレッドを同時に処理する演算装置

Publications (2)

Publication Number Publication Date
KR20100021455A KR20100021455A (ko) 2010-02-24
KR101031558B1 true KR101031558B1 (ko) 2011-04-27

Family

ID=40155968

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097026080A KR101031558B1 (ko) 2007-06-20 2007-06-20 복수의 스레드를 동시에 처리하는 연산장치

Country Status (6)

Country Link
US (1) US8516303B2 (ko)
EP (1) EP2169553B1 (ko)
JP (1) JP5099132B2 (ko)
KR (1) KR101031558B1 (ko)
CN (1) CN101681285B (ko)
WO (1) WO2008155803A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2869202A1 (en) * 2013-11-04 2015-05-06 Universiteit Twente Functional unit for a processor
JP6781089B2 (ja) * 2017-03-28 2020-11-04 日立オートモティブシステムズ株式会社 電子制御装置、電子制御システム、電子制御装置の制御方法
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
JP7124670B2 (ja) 2018-11-26 2022-08-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58154047A (ja) * 1982-03-08 1983-09-13 Hitachi Ltd 端末装置
JPH07141176A (ja) * 1993-11-19 1995-06-02 Fujitsu Ltd コマンドリトライ制御方式

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58154026A (ja) * 1982-03-08 1983-09-13 Hitachi Ltd 情報処理装置のエラ−処理方式
JP2509811B2 (ja) 1986-06-25 1996-06-26 株式会社日立製作所 タスク管理方式
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US6854051B2 (en) * 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Cycle count replication in a simultaneous and redundantly threaded processor
US7822950B1 (en) * 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7219185B2 (en) * 2004-04-22 2007-05-15 International Business Machines Corporation Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
JP4486434B2 (ja) * 2004-07-29 2010-06-23 富士通株式会社 命令リトライ検証機能付き情報処理装置および命令リトライ検証方法
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US20060184771A1 (en) * 2005-02-11 2006-08-17 International Business Machines Mini-refresh processor recovery as bug workaround method using existing recovery hardware

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58154047A (ja) * 1982-03-08 1983-09-13 Hitachi Ltd 端末装置
JPH07141176A (ja) * 1993-11-19 1995-06-02 Fujitsu Ltd コマンドリトライ制御方式

Also Published As

Publication number Publication date
WO2008155803A1 (ja) 2008-12-24
JP5099132B2 (ja) 2012-12-12
CN101681285A (zh) 2010-03-24
KR20100021455A (ko) 2010-02-24
EP2169553B1 (en) 2012-05-16
JPWO2008155803A1 (ja) 2010-08-26
EP2169553A1 (en) 2010-03-31
US8516303B2 (en) 2013-08-20
CN101681285B (zh) 2012-07-25
EP2169553A4 (en) 2011-05-04
US20100088544A1 (en) 2010-04-08

Similar Documents

Publication Publication Date Title
US6772368B2 (en) Multiprocessor with pair-wise high reliability mode, and method therefore
US7870369B1 (en) Abort prioritization in a trace-based processor
US10289415B2 (en) Method and apparatus for execution of threads on processing slices using a history buffer for recording architected register data
US20060184769A1 (en) Localized generation of global flush requests while guaranteeing forward progress of a processor
JP4603185B2 (ja) 計算機及びその誤り回復方法
US9513925B2 (en) Marking long latency instruction as branch in pending instruction table and handle as mis-predicted branch upon interrupting event to return to checkpointed state
KR100472346B1 (ko) 명령어 리플레이를 포함하는 프로세서 파이프라인
US10073699B2 (en) Processing instructions in parallel with waw hazards and via a distributed history buffer in a microprocessor having a multi-execution slice architecture
US10282205B2 (en) Method and apparatus for execution of threads on processing slices using a history buffer for restoring architected register data via issued instructions
US20170109093A1 (en) Method and apparatus for writing a portion of a register in a microprocessor
KR101031558B1 (ko) 복수의 스레드를 동시에 처리하는 연산장치
JP2012198803A (ja) 演算処理装置及び演算処理方法
JP6179093B2 (ja) 演算処理装置、演算処理方法
US20080244244A1 (en) Parallel instruction processing and operand integrity verification
US10248426B2 (en) Direct register restore mechanism for distributed history buffers
US20190171569A1 (en) On-demand multi-tiered hang buster for smt microprocessor
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
EP2717156B1 (en) Speculative privilege elevation
US20200117461A1 (en) Arithmetic processing device and control method for arithmetic processing device
US10996995B2 (en) Saving and restoring a transaction memory state
US7783863B1 (en) Graceful degradation in a trace-based processor
KR101923778B1 (ko) 듀얼 모듈러 리던던시 및 오류 예측을 이용한 고성능 컴퓨팅 장치 및 그 방법
US20200285478A1 (en) Imprecise register dependency tracking
JP2000339185A (ja) スーパースカラプロセッサ

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140401

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee