KR20170092779A - 가속 시스템 및 그 구동 방법 - Google Patents

가속 시스템 및 그 구동 방법 Download PDF

Info

Publication number
KR20170092779A
KR20170092779A KR1020160013871A KR20160013871A KR20170092779A KR 20170092779 A KR20170092779 A KR 20170092779A KR 1020160013871 A KR1020160013871 A KR 1020160013871A KR 20160013871 A KR20160013871 A KR 20160013871A KR 20170092779 A KR20170092779 A KR 20170092779A
Authority
KR
South Korea
Prior art keywords
results
selection module
tasks
generated
configuration memory
Prior art date
Application number
KR1020160013871A
Other languages
English (en)
Other versions
KR101929049B1 (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 한국전자통신연구원
Priority to KR1020160013871A priority Critical patent/KR101929049B1/ko
Priority to US15/045,057 priority patent/US20170228241A1/en
Publication of KR20170092779A publication Critical patent/KR20170092779A/ko
Application granted granted Critical
Publication of KR101929049B1 publication Critical patent/KR101929049B1/ko

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/845Systems in which the redundancy can be transformed in increased performance
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Hardware Redundancy (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)

Abstract

본 발명의 일 실시예에 따른 가속 시스템은, 컨피겨레이션 메모리 및 상기 컨피겨레이션 메모리로부터 작업들을 입력받고, 수신된 작업들을 수행하며, 수행된 결과들을 출력하는 프로세싱 엘리멘트 유니트들을 포함하고, 각각의 프로세싱 엘리멘트 유니트는, 그 각각이 상기 작업들 중 하나를 입력받고, n개의 결과들을 생성하는 n(n은 3 이상의 양의 정수)개의 프로세싱 엘리멘트들 및 다수결 방식을 사용하여 상기 생성된 n개의 결과들 중 하나를 선택하여 선택된 결과를 생성하는 선택 모듈을 포함할 수 있다.

Description

가속 시스템 및 그 구동 방법{ACCELERATION SYSTEM AND DRIVING METHOD THEREOF}
본 발명의 실시예는 가속 시스템 및 그 구동 방법에 관한 것이다.
도 1은 본 발명의 일 실시예에 따른 가속 시스템을 설명하기 위한 도면이다. 도 1에서 도시된 가속 시스템은 재구성형 가속기를 포함하고, 재구성형 가속기는 기존의 하드웨어 가속기와 프로세서의 중간에 위치하는 가속기이다. 도 1에서 도시된 가속 시스템은 프로세싱 엘리멘트들(PE)을 포함하고, 요구되는 작업에 따라 프로세싱 엘리멘트들(PE) 사이 구성이 변경될 수 있다. 하드웨어 가속기는 가속을 저전력으로 특정 작업을 빠르게 처리할 수 있지만 정해진 작업만 처리할 수 있다는 단점이 있다. 반면에 프로세서는 프로그램을 수행하면서 다양한 작업을 처리할 수 있지만 속도가 느리고 전력 소모량이 크다는 단점이 있다. 재구성형 가속기는 이 두개의 장점을 모두 취하는 가속기이다. 즉, 재구성을 통해 다양한 작업을 저전력으로 빠르게 처리할 수 있다.
그러나, 재구성형 가속기의 사용 범위가 넓어짐에 따라, 다양한 사양이 요구된다. 예를 들어, 높은 성능이 요구되는 경우도 있고, 낮은 소비 전력이 요구되는 경우도 있으며, 높은 신뢰성이 요구되는 경우도 있다. 이러한 사양들은 처리하는 작업에 따라 달라질 수 있고, 모든 작업에 대해 모든 사양을 만족시키는 것은 쉽지 않다는 문제가 있다.
특히 높은 신뢰성이 요구되는 경우, 재구성형 가속기의 소프트 에러로 인한 신뢰성 저하를 막을 필요가 있다. 소프트 에러란 외부 알파 입자나 중성자에 의해서 트랜지스터에 저장된 비트가 일시적으로 반적되는 현상으로, 이러한 에러는 임베디드 프로레서의 경량화, 소형화, 저전력화와 함께 더욱 증가하는 추세이다. 재구성형 가속기에서 이에 대한 연구는 아직 많이 진행되지 않은 상황이다.
본 발명의 실시예는 처리하는 작업에 따라 다른 수행방법을 적용하여 다양한 요구 사항을 상황에 따라 만족시킬 수 있는 가속 시스템 및 그 구동 방법을 제공하는 것을 그 목적으로 한다.
본 발명의 일 실시예에 따른 가속 시스템은, 컨피겨레이션 메모리 및 상기 컨피겨레이션 메모리로부터 작업들을 입력받고, 수신된 작업들을 수행하며, 수행된 결과들을 출력하는 프로세싱 유니트들을 포함할 수 있고, 각각의 프로세싱 유니트는, 그 각각이 상기 작업들 중 하나를 입력받고, n개의 결과들을 생성하는 n(n은 3 이상의 양의 정수)개의 프로세싱 엘리멘트들 및 다수결 방식을 사용하여 상기 생성된 n개의 결과들 중 하나를 선택하여 선택된 결과를 생성하는 선택 모듈을 포함할 수 있다.
실시예에 따라, 상기 가속 시스템은 상기 선택 모듈들의 동작 여부를 제어하는 제어부를 더 포함할 수 있고, 신뢰성이 요구되는 경우, 상기 제어부는 상기 컨피겨레이션 메모리에 신뢰성 제어 신호를 송신하고 상기 선택 모듈들이 동작하도록 제어할 수 있다.
실시예에 따라, 상기 컨피겨레이션 메모리는 복사부를 포함할 수 있고, 상기 컨피겨레이션 메모리가 상기 신뢰성 제어 신호를 수신하는 경우, 상기 복사부는 복사를 통해 상기 작업들을 생성할 수 있다.
실시예에 따라, 상기 선택 모듈이 동작하는 경우 상기 프로세싱 엘리멘트들은 동일한 작업을 수행할 수 있고, 각각의 프로세싱 유니트는 상기 선택된 결과를 출력할 수 있다.
실시예에 따라, 상기 생성된 n개의 결과들에 대해 다수결 방식으로 하나의 값을 선택할 수 없는 경우, 상기 선택 모듈은 예외 신호를 출력할 수 있다.
실시예에 따라, 상기 선택 모듈이 동작하지 않는 경우 각각의 프로세싱 엘리멘트들은 서로 다른 작업들을 수행할 수 있고, 각각의 프로세싱 유니트는 상기 생성된 n개의 결과들을 출력할 수 있다.
실시예에 따라, 상기 선택 모듈은 상기 생성된 결과들의 중복되는 횟수를 기반으로 가장 많이 중복된 결과를 상기 선택한 결과로 결정하는 보우터 및 상기 보우터로부터의 결과를 저장하는 공유 레지스터를 포함할 수 있다.
또한, 본 발명의 다른 실시예는 가속 시스템의 구동 방법이라는 다른 측면이 있다. 본 발명의 일 실시예에 따른 가속 시스템의 구동 방법은, 선택 모듈의 동작 여부를 결정하는 단계, 작업들을 프로세싱 유니트들에 입력하는 단계, 상기 작업들을 수행하여 결과들을 생성하는 단계 및 상기 생성된 결과들을 기반으로 선택된 결과들을 생성하는 단계를 포함할 수 있고, 상기 생성된 결과들을 기반으로 선택된 결과들을 생성하는 단계는 상기 선택 모듈이 동작하는 경우에만 수행될 수 있다.
실시예에 따라, 상기 생성된 결과들을 기반으로 선택된 결과를 생성하는 단계는, 상기 생성된 결과들의 중복되는 횟수를 연산하는 단계, 상기 중복되는 횟수를 비교하는 단계 및 상기 결과들 중 가장 많이 중복된 결과를 선택된 결과로 결정하는 단계를 포함할 수 있다.
실시예에 따라, 선택 모듈의 동작 여부는 외부로부터의 신뢰성 요구 신호가 수신되었는지 여부를 기반으로 판단될 수 있다.
본 발명의 실시예에 따른 가속 시스템 및 그 구동 방법에 의하면, 처리하는 작업에 따라 다른 수행방법을 적용하여 다양한 요구 사항을 상황에 따라 만족시킬 수 있다.
도 1은 종래의 가속 시스템을 설명하기 위한 도면이다.
도 2은 본 발명의 일 실시예에 따른 가속 시스템을 설명하기 위한 도면이다.
도 3은 도 2의 가속 시스템 중 프로세싱 엘리멘트를 설명하기 위한 도면이다.
도 4는 도 2의 가속 시스템 중 프로세싱 유니트를 설명하기 위한 도면이다.
도 5 내지 도 7은 신뢰성 모드인 경우 도 2의 가속 시스템의 동작을 설명하기 위한 도면이다.
도 8 내지 도 9는 신뢰성 모드가 아닌 경우 도 2의 가속 시스템의 동작을 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 가속 시스템의 구동 방법을 설명하기 위한 도면이다.
도 11은 도 6의 S1500 단계를 설명하기 위한 도면이다.
이하 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예들을 상세히 설명한다. 명세서 전체에 걸쳐서 동일한 참조번호들은 실질적으로 동일한 구성요소들을 의미한다. 이하의 설명에서, 본 발명과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다. 또한, 이하의 설명에서 사용되는 구성요소 명칭은 명세서 작성의 용이함을 고려하여 선택된 것일 수 있는 것으로서, 실제 제품의 부품 명칭과는 상이할 수 있다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 장치를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 2은 본 발명의 일 실시예에 따른 가속 시스템을 설명하기 위한 도면이다. 본 발명의 가속 시스템(100)은 프로세싱 유니트들(110), 컨피겨레이션 메모리(120) 및 제어부(130)를 포함한다.
프로세싱 유니트들(Processing element units, 110)은 컨피겨레이션 메모리(120)로부터 작업들을 입력받고, 수신된 작업들을 수행하며, 수행된 결과들을 출력한다. 프로세싱 유니트들(110)은 프로세싱 유니트들(PU-1, PU-2)을 포함할 수 있다. 각각의 프로세싱 유니트의 구조는 동일하므로, 프로세싱 유니트(PU-1)에 대해서만 설명될 것이다.
프로세싱 유니트(PU-1)는 프로세스 엘리멘트들(PE(1-1) 내지 PE(1-3))뿐 아니라 보우터(voter, VT-1) 및 공유 레지스터(SR-1)를 더 포함한다. 고신뢰성이 요구되는 경우 보우터(VT-1) 및 공유 레지스터(SR-1)가 동작할 수 있고 저전력과 고성능이 요구되는 경우 보우터(VT-1) 및 공유 레지스터(SR-1)가 동작하지 않을 수 있다. 프로세싱 유니트(PU-1)의 상세 구조는 이후에 도 4를 참조하여 상세히 설명될 것이다.
프로세싱 유니트(PU-1) 내 각각의 프로세싱 엘리멘트(PE(1-1) 내지 PE(1-3))는 컨피겨레이션 메모리(120)로부터 작업들(CFD) 중 하나를 수신하고, 수신된 작업을 수행하며, 수행된 결과들을 출력한다. 각각의 프로세싱 엘리멘트의 구조는 동일하므로, 프로세싱 엘리멘트(PE(1-1))의 상세한 구조는 이하에서 도 3를 참조하여 설명될 것이다.
컨피겨레이션 메모리(Configuration Memory, 120)는 외부의 메모리로부터 작업들(CFD)을 미리 수신하였다가, 특정 주기(cycle)마다 작업들(CFD)을 프로세싱 엘리멘트들(PE)에 송신한다. 설명의 편의를 위해 프로세싱 엘리멘트들의 개수가 24개이고 선택 모듈들의 개수가 8개라고 가정한다.
높은 성능과 저전력이 요구되어 선택 모듈들이 동작하지 않는 경우, 컨피겨레이션 메모리(120)는 주기마다 24개의 작업들(CFD)을 각각의 프로세싱 엘리멘트에 송신한다. 24개의 프로세싱 엘리멘트들은 서로 다른 작업들의 결과들을 출력하고, 가속 시스템(100)은 24개의 결과들을 외부에 출력한다.
높은 신뢰성이 요구되어 선택 모듈들이 동작하는 경우, 컨피겨레이션 메모리(120)는 주기마다 8개의 작업들(CFD)을 3번씩 반복하여 각각의 프로세싱 엘리멘트에 송신한다. 여기서, 프로세싱 유니트(PU-1) 내 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))은 동일한 작업을 수신하므로 8개의 선택 모듈들은 8개의 결과를 출력한다.
제어부(130)는 프로세싱 유니트들(110) 및 컨피겨레이션 메모리(120)를 제어한다. 또한, 제어부(130)는 선택 모듈들의 동작 여부를 판단한다. 제어부(130)는 외부로부터의 신뢰성 요구 신호(TRS)를 수신하는 경우에만 선택 모듈들이 동작하도록 제어할 수 있다.
도 3은 도 2의 가속 시스템 중 프로세싱 엘리멘트를 설명하기 위한 도면이다. 설명의 편의를 위해, 프로세싱 엘리멘트(PE(1-1))에 대해서만 설명될 것이다.
프로세싱 엘리멘트(PE(1-1))는 기능부(Functional Unit, FU), 레지스터 파일(Register File, RF) 및 출력 레지스터(Output Register, OR)를 포함할 수 있다.
기능부(FU)는 작업들(CFD) 중 작업(CFD(1-1))을 수신하고, 수신된 작업(CFD(1-1))을 수행한다. 선택 모듈들이 동작하지 않는 경우, 기능부(FU)는 프로세싱 엘리멘트(PE(1-1))와 이웃한 프로세싱 엘리멘트들(PE(1-2), PE(2-1) 및 PE(2-2))의 결과들도 수신하여 작업을 수행할 수 있다.
레지스터 파일(RF)은 계산 도중 생기는 중간 값들을 저장할 수 있다. 레지스터 파일(RF)은 이웃한 프로세싱 엘리멘트들(PE(1-2), PE(2-1) 및 PE(2-2))의 결과들도 수신할 수 있고, 저장된 결과를 기능부(FU)로 송신할 수도 있다.
출력 레지스터(OR)는 기능부(FU)에 의해 연산된 결과를 결과(Re(1-1))로 출력한다. 결과(Re(1-1))는 외부로 출력될 수 있다. 또한, 출력 레지스터(OR)는 작업(CFD(1-1))을 저장할 수도 있고, 결과(Re(1-1)) 또는 작업(CFD(1-1))을 레지스터 파일(RF)에 송신할 수도 있다.
도 4는 도 2의 가속 시스템 중 프로세싱 유니트를 설명하기 위한 도면이다. 프로세싱 유니트(PU-1)는 프로세싱 엘리멘트들(PE(1-1) 내지 PE(1-3)) 및 선택 모듈(SM-1)을 포함한다.
프로세싱 엘리멘트들(PE(1-1) 내지 PE(1-3)) 각각은 작업들(CFD) 중 하나를 입력받고, 프로세싱 엘리멘트들(PE(1-1) 내지 PE(1-3))은 3개의 결과를 생성한다. 여기서 하나의 프로세싱 유니트(PU-1)가 3개의 프로세싱 엘리멘트들(PE(1-1) 내지 PE(1-3))을 포함하나, 이는 실시예에 불과하다. n(n은 3 이상의 정수)개를 포함할 수도 있다. 이 때, n개의 프로세싱 엘리멘트들은 n개의 결과를 생성한다.
신뢰성 모드인 경우, 동일한 작업(CFD(1))이 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에 입력되고, 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3)) 각각은 별도로 작업을 수행하여 3개의 결과들(Re(1-1), Re(1-2) 및 Re(1-3))을 생성한다.
신뢰성 모드가 아닌 경우, 3개의 서로 다른 작업들(CFD'(1-1), CFD'(1-2) 및 CFD'(1-3))이 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에 각각 입력되고, 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))은 별도로 작업을 수행하여 3개의 결과들(Re'(1-1), Re'(1-2) 및 Re'(1-3))을 생성한다.
선택 모듈(SM-1)은 보우터(VT-1) 및 공유 레지스터(SR-1)를 포함하고, 신뢰성 모드인 경우에만 동작한다. 보우터(VT-1)는 다수결 방식을 사용하여 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에서 생성된 결과들(Re(1-1), Re(1-2) 및 Re(1-3)) 중 하나를 선택하여 선택된 결과(Re1)를 생성한다. 예를 들어, 결과들(Re(1-1), Re(1-2))이 같은 값을 가지고 결과(Re(1-3)만 다른 값을 가지는 경우, 보우터(VT-1)에 의해 선택된 결과(Re1)는 결과들(Re(1-1), Re(1-2))과 같은 값을 가진다. 프로세싱 유니트(PU-1)는 결과(Re1)만을 출력한다. 만약 결과들(Re(1-1), Re(1-2) 및 Re(1-3))이 모두 다른 값을 가지는 경우 보우터(VT-1)는 하나의 값을 선택할 수 없다. 이 경우, 선택 모듈(SM-1)은 예외 신호(ES)를 출력한다.
신뢰성 모드가 아닌 경우, 선택 모듈(SM-1)은 동작하지 않는다. 따라서, 프로세싱 유니트(PU-1)는 3개의 결과들(Re'(1-1), Re'(1-2) 및 Re'(1-3))을 그대로 출력한다.
도 5 내지 도 7은 신뢰성 모드인 경우 도 2의 가속 시스템의 동작을 설명하기 위한 도면이다. 이하에서 도 1 내지 도 7을 참조하여 도 2의 가속 시스템의 동작이 설명될 것이다.
도 5는 신뢰성 모드인 경우 제어부와 컨피겨레이션 메모리의 동작을 설명하기 위한 도면이다. 신뢰성이 요구되는 신뢰성 모드인 경우, 제어부(130)는 신뢰성 제어 신호(RCS)를 컨피겨레이션 메모리(120)에 송신하여 선택 모듈(SM-1)이 동작하도록 제어한다. 컨피겨레이션 메모리(120)는 복사부(121)를 포함하고, 신뢰성 제어 신호(RCS)가 수신되는 경우 복사부(121)를 동작하도록 제어한다. 복사부(121)는 하나의 작업을 3개로 복사하여 출력한다. 즉, 작업들(CFD)은 복사부(121)에 의해 복사된 결과이다.
도 6은 선택 모듈이 동작하는 경우 프로세싱 유니트의 동작을 설명하기 위한 도면이다.
컨피겨레이션 메모리(120)는 작업들(CFD(1-1), CFD(1-2) 및 CFD(1-3))을 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에 각각 송신한다. 다만, 복사부(121)가 동작하므로 작업들(CFD(1-1), CFD(1-2) 및 CFD(1-3))의 실질적인 내용은 동일하다. 따라서, 작업(CFD(1))으로 통칭하여도 무방하다.
프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))은 동일한 작업(CFD(1))을 병렬적으로 수행하여 결과들(Re(1-1), Re(1-2) 및 Re(1-3))을 출력한다. 프로세싱 엘리멘트들(PE(1-2) 및 PE(1-3))의 구조는 프로세싱 엘리멘트(PE(1-1))과 동일하다고 가정할 수 있다. 결과들(Re(1-1), Re(1-2) 및 Re(1-3))은 보우터(VT-1)에 입력된다.
보우터(VT-1)은 다수결 방식을 사용하여 입력받은 결과들(Re(1-1), Re(1-2) 및 Re(1-3)) 중 하나를 선택된 결과(Re1)로 출력한다. 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))가 3개인 경우, 보우터(VT-1)은 Triple Modular Redundancy (TMR) 기법을 사용하여 신뢰성을 확보한다. 따라서, 외부로부터의 신뢰성 요구 신호(TRS)가 수신되는 경우에는 보우터(VT-1)가 동작하여 신뢰성이 높아진다. 다만 세 개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))이 동일한 작업을 수행하므로 성능이 저하될 수 있다.
공유 레지스터(SR-1)는 보우터(VT-1)로부터의 결과(Re1)를 저장하였다가 외부로 출력한다.
도 7은 선택 모듈이 동작하는 경우 도 5의 복사부의 동작을 설명하기 위한 도면이다. 복사부(121)는 컨피겨레이션 메모리(120) 내 기저장되었던 작업(CFD(1))을 수신하여 3개의 작업들(CFD(1-1), CFD(1-2), CFD(1-3))로 복사한 후, 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에 각각 송신한다. 즉 선택 모듈(SM-1)이 동작하는 경우, 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에 동일한 작업(CFD)이 입력된다.
도 8 내지 도 9는 신뢰성 모드가 아닌 경우 도 2의 가속 시스템의 동작을 설명하기 위한 도면이다. 이하에서 도 1 내지 도 4, 도 8 및 도 9를 참조하여 도 2의 가속 시스템의 동작이 설명될 것이다.
도 8은 신뢰성 모드가 아닌 경우 제어부와 컨피겨레이션 메모리의 동작을 설명하기 위한 도면이다. 신뢰성 모드가 아니므로, 제어부(130)는 컨피겨레이션 메모리(120)에 신뢰성 제어 신호(RCS)를 송신하지 않는다. 컨피겨레이션 메모리(120)는 복사부(121)를 동작시키지 않고, 작업들(CFD')을 그대로 출력한다.
도 9는 신뢰성 모드가 아닌 경우 프로세싱 유니트의 동작을 설명하기 위한 도면이다.
컨피겨레이션 메모리(120)는 작업들(CFD'(1-1), CFD'(1-2) 및 CFD'(1-3))을 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에 각각 송신한다. 다만, 보우터(VT-1)가 동작하지 않으므로 작업들(CFD'(1-1), CFD'(1-2) 및 CFD'(1-3))의 실질적인 내용은 동일하지 않을 수 있다.
프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))은 작업들(CFD'(1-1), CFD'(1-2) 및 CFD'(1-3))을 각각 수행하여 결과들(Re'(1-1), Re'(1-2) 및 Re'(1-3))을 출력한다. 프로세싱 엘리멘트들(PE(1-2) 및 PE(1-3))의 구조는 프로세싱 엘리멘트(PE(1-1))과 동일하다고 가정할 수 있다. 결과들(Re'(1-1), Re'(1-2) 및 Re'(1-3))은 보우터(VT-1)를 거치지 않고 외부로 출력된다.
외부로부터의 신뢰성 요구 신호(TRS)가 수신되지 않는 경우에는 보우터(VT-1)이 동작하지 않아 성능이 향상된다. 즉, 컨피겨레이션 메모리(120)는 서로 다른 작업들(CFD'(1-1), CFD'(1-2) 및 CFD'(1-3))을 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에 송신하고, 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))은 작업들(CFD'(1-1), CFD'(1-2) 및 CFD'(1-3))을 수행하여 서로 다른 결과들(Re(1-1), Re(1-2) 및 Re(1-3))을 출력하며, 결과들(Re'(1-1), Re'(1-2) 및 Re'(1-3))은 보우터(VT-1)를 거치지 않고 외부로 출력된다.
도 10은 본 발명의 일 실시예에 따른 가속 시스템의 구동 방법을 설명하기 위한 도면이다. 이하에서, 도 2 내지 도 10을 참조하여 본 발명의 일 실시예에 따른 가속 시스템의 구동 방법의 일 실시예가 설명될 것이다. 설명의 편의를 위해, 프로세싱 유니트들(110) 중 프로세싱 유니트(PU-1)에 대해서만 설명될 것이다.
S1100 단계에서, 제어부(130)는 선택 모듈(SM-1)의 동작 여부를 결정한다. 외부로부터 신뢰성 요구 신호(TRS)가 수신되는 경우 제어부(130)는 선택 모듈들을 동작하기로 결정하고, 외부로부터의 신뢰성 요구 신호(TRS)가 수신되지 않는 경우에는 제어부(130)는 선택 모듈들을 동작하지 않기로 결정할 수 있다.
S1200 단계에서, 컨피겨레이션 메모리(120)는 작업들(CFD)을 프로세싱 엘리멘트들에 입력한다. 선택 모듈(SM-1)이 동작하는 경우, 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))이 동일한 작업(CFD(1))을 수신하는 것은 도 6을 참조하여 이미 설명되었다. 선택 모듈(SM-1)이 동작하지 않는 경우, 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))이 서로 다른 작업들(CFD'(1-1), CFD'(1-2) 및 CFD'(1-3))을 수신하는 것은 도 9를 참조하여 이미 설명되었다.
S1300 단계에서, 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))은 작업들을 수행하여 결과들을 생성한다. 선택 모듈(SM-1)이 동작하는 경우, 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))이 동일한 작업(CFD(1))을 수행하여 결과들(Re(1-1), Re(1-2) 및 Re(1-3))을 생성하는 것은 도 4을 참조하여 이미 설명되었다. 선택 모듈(SM-1)이 동작하지 않는 경우, 3개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))이 서로 다른 작업들(CFD'(1-1), CFD'(1-2) 및 CFD'(1-3))을 수행하여 결과들(Re'(1-1), Re'(1-2) 및 Re'(1-3))을 생성하는 것은 도 9를 참조하여 이미 설명되었다.
S1400 단계에서, 선택 모듈(SM-1)이 동작하는 경우에는 S1500 단계가 수행되고, 선택 모듈(SM-1)이 동작하지 않는 경우에는 S1600 단계가 수행된다. 선택 모듈(SM-1)의 동작 여부는 S1100 단계에서 이미 결정되엇다.
S1500 단계에서, 선택 모듈(SM-1)은 결과들(Re(1-1), Re(1-2) 및 Re(1-3))을 기반으로 다수결 방식으로 선택된 결과(Re1)를 생성한다. 예를 들어, 결과들(Re(1-1), Re(1-2))은 같은 값을 가지고 결과(Re(1-3))만이 다른 값을 가지는 경우, 보우터(VT-1)에 의해 선택된 결과(Re1)는 결과들(Re(1-1), Re(1-2))과 같은 값을 가진다.
S1600 단계에서, 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))에 의해 생성된 결과들(Re'(1-1), Re'(1-2) 및 Re'(1-3))은 외부로 출력된다. 이 내용은 도 9를 참조하여 상세히 설명되었다.
S1700 단계에서, 선택 모듈(SM-1)에 의해 선택된 결과(Re1)가 외부로 출력된다.
도 11은 도 10의 S1500 단계를 설명하기 위한 도면이다. 이하에서, 도 2 내지 도 7 및 도 11을 참조하여 S1500 단계가 설명될 것이다. 설명의 편의를 위해, 도 6과 같이 보우터(VT-1)가 세 개의 프로세싱 엘리멘트들(PE(1-1), PE(1-2) 및 PE(1-3))로부터의 결과들(Re(1-1), Re(1-2) 및 Re(1-3))을 기반으로 선택된 결과(Re1)를 생성한다고 가정할 것이다. 또한, 설명의 편의를 위해 결과들(Re(1-1), Re(1-2))이 같은 값을 가지고 결과(Re(1-3)만 다른 값을 가진다고 가정한다.
S1510 단계에서, 보우터(VT-1)은 결과들의 중복되는 횟수를 연산한다. 결과들(Re(1-1) 및 Re(1-2))에 대해서는 2회라고 연산하고, 결과(Re(1-3))에 대해서는 1회라고 연산한다.
S1520 단계에서, 보우터(VT-1)은 중복되는 횟수를 비교한다. 결과들(Re(1-1) 및 Re(1-2))의 중복되는 횟수는 2회고 결과(Re(1-3))의 중복되는 횟수는 1회이다.
S1530 단계에서, 보우터(VT-1)은 선택된 결과(Re1)를을 그 중복되는 횟수가 가장 많은 결과들(Re(1-1) 및 Re(1-2))로 결정한다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 명세서의 상세한 설명에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의해 정하여져야만 할 것이다.
110: 프로세싱 유니트들
120: 컨피겨레이션 메모리
130: 제어부
PU-1: 프로세싱 유니트

Claims (10)

  1. 컨피겨레이션 메모리; 및
    상기 컨피겨레이션 메모리로부터 작업들을 입력받고, 수신된 작업들을 수행하며, 수행된 결과들을 출력하는 프로세싱 유니트들을 포함하고,
    각각의 프로세싱 유니트는,
    그 각각이 상기 작업들 중 하나를 입력받고, n개의 결과들을 생성하는 n(n은 3 이상의 양의 정수)개의 프로세싱 엘리멘트들; 및
    다수결 방식을 사용하여 상기 생성된 n개의 결과들 중 하나를 선택하여 선택된 결과를 생성하는 선택 모듈을 포함하는 가속 시스템.
  2. 제1항에 있어서,
    상기 가속 시스템은 상기 선택 모듈들의 동작 여부를 제어하는 제어부를 더 포함하고,
    신뢰성이 요구되는 경우, 상기 제어부는 상기 컨피겨레이션 메모리에 신뢰성 제어 신호를 송신하고 상기 선택 모듈들이 동작하도록 제어하는 가속 시스템.
  3. 제2항에 있어서,
    상기 컨피겨레이션 메모리는 복사부를 포함하고,
    상기 컨피겨레이션 메모리가 상기 신뢰성 제어 신호를 수신하는 경우, 상기 복사부는 복사를 통해 상기 작업들을 생성하는 가속 시스템.
  4. 제1항에 있어서,
    상기 선택 모듈이 동작하는 경우 상기 프로세싱 엘리멘트들은 동일한 작업을 수행하고,
    각각의 프로세싱 유니트는 상기 선택된 결과를 출력하는 가속 시스템.
  5. 제1항에 있어서,
    상기 생성된 n개의 결과들에 대해 다수결 방식으로 하나의 값을 선택할 수 없는 경우, 상기 선택 모듈은 예외 신호를 출력하는 가속 시스템.
  6. 제1항에 있어서,
    상기 선택 모듈이 동작하지 않는 경우 각각의 프로세싱 엘리멘트들은 서로 다른 작업들을 수행하고,
    각각의 프로세싱 유니트는 상기 생성된 n개의 결과들을 출력하는 가속 시스템.
  7. 제1항에 있어서,
    상기 선택 모듈은 상기 생성된 결과들의 중복되는 횟수를 기반으로 가장 많이 중복된 결과를 상기 선택한 결과로 결정하는 보우터; 및
    상기 보우터로부터의 결과를 저장하는 공유 레지스터를 포함하는 가속 시스템.
  8. 선택 모듈의 동작 여부를 결정하는 단계;
    작업들을 프로세싱 유니트들에 입력하는 단계;
    상기 작업들을 수행하여 결과들을 생성하는 단계; 및
    상기 생성된 결과들을 기반으로 선택된 결과들을 생성하는 단계를 포함하고,
    상기 생성된 결과들을 기반으로 선택된 결과들을 생성하는 단계는 상기 선택 모듈이 동작하는 경우에만 수행되는 가속 시스템의 구동 방법.
  9. 제8항에 있어서,
    상기 생성된 결과들을 기반으로 선택된 결과를 생성하는 단계는,
    상기 생성된 결과들의 중복되는 횟수를 연산하는 단계;
    상기 중복되는 횟수를 비교하는 단계; 및
    상기 결과들 중 가장 많이 중복된 결과를 선택된 결과로 결정하는 단계를 포함하는 가속 시스템의 구동 방법.
  10. 제8항에 있어서,
    선택 모듈의 동작 여부는 외부로부터의 신뢰성 요구 신호가 수신되었는지 여부를 기반으로 판단되는 가속 시스템의 구동 방법.
KR1020160013871A 2016-02-04 2016-02-04 가속 시스템 및 그 구동 방법 KR101929049B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160013871A KR101929049B1 (ko) 2016-02-04 2016-02-04 가속 시스템 및 그 구동 방법
US15/045,057 US20170228241A1 (en) 2016-02-04 2016-02-16 Acceleration system and driving method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160013871A KR101929049B1 (ko) 2016-02-04 2016-02-04 가속 시스템 및 그 구동 방법

Publications (2)

Publication Number Publication Date
KR20170092779A true KR20170092779A (ko) 2017-08-14
KR101929049B1 KR101929049B1 (ko) 2019-03-12

Family

ID=59497695

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160013871A KR101929049B1 (ko) 2016-02-04 2016-02-04 가속 시스템 및 그 구동 방법

Country Status (2)

Country Link
US (1) US20170228241A1 (ko)
KR (1) KR101929049B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100116413A (ko) * 2009-04-22 2010-11-01 삼성전자주식회사 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법
JP4847585B2 (ja) * 2007-06-12 2011-12-28 富士通株式会社 コンフィグレーション装置
KR20140131832A (ko) * 2013-05-06 2014-11-14 (주)넥셀 프로세싱 장치 및 방법
KR20150100042A (ko) * 2014-02-24 2015-09-02 한국전자통신연구원 3차원 다이 스택 디램에서의 가속 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4847585B2 (ja) * 2007-06-12 2011-12-28 富士通株式会社 コンフィグレーション装置
KR20100116413A (ko) * 2009-04-22 2010-11-01 삼성전자주식회사 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법
KR20140131832A (ko) * 2013-05-06 2014-11-14 (주)넥셀 프로세싱 장치 및 방법
KR20150100042A (ko) * 2014-02-24 2015-09-02 한국전자통신연구원 3차원 다이 스택 디램에서의 가속 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
이윤혁 외 2명. '다수의 프로세싱 유닛 처리를 위한 범용 메모리 제어기의 구조'. 한국정보통신학회논문지 제15권 제12호, 2011.12, pp.2632-2640. *

Also Published As

Publication number Publication date
KR101929049B1 (ko) 2019-03-12
US20170228241A1 (en) 2017-08-10

Similar Documents

Publication Publication Date Title
US8997033B1 (en) Techniques for generating a single configuration file for multiple partial reconfiguration regions
US9665509B2 (en) Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system
US9477511B2 (en) Task-based modeling for parallel data integration
JP5570038B2 (ja) 連立1次方程式を処理するための装置およびコンピュータ・プログラム
US20190050604A1 (en) On-device bitstream validation
US7650585B1 (en) Implementing a user design in a programmable logic device with single event upset mitigation
US20160124865A1 (en) Dynamic evaluation and adaption of hardware hash functions
EP2541773A1 (en) Reconfigurable logic block
US20080301389A1 (en) Memory-protection method and apparatus
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
KR20180035211A (ko) 벡터 산술 명령
CN103999050A (zh) 用于计算用于在连续分布式构建中有效高速缓存的校验和的方法和装置
KR101929049B1 (ko) 가속 시스템 및 그 구동 방법
US9779061B2 (en) Iterative refinement apparatus
US8436646B1 (en) Reconfigurable logic block with user RAM
US10417078B2 (en) Deterministic read back and error detection for programmable logic devices
JP2011253253A (ja) コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム
US20220030074A1 (en) Method, apparatus and device for generating microservice, and storage medium
US10318687B2 (en) Implementing a constant in FPGA code
US20130162036A1 (en) Complementary Detection of Power Supplies Stability and Notifying Multiple Domains Regardless of Other Power Domains Readiness
Beckhoff et al. Design tools for implementing self-aware and fault-tolerant systems on FPGAs
US10068045B1 (en) Programmable logic device design implementations with multiplexer transformations
US10635845B2 (en) Method and apparatus for improving Boolean satisfiability solver generated based on input design with data qualifier signals
EP3759592B1 (en) Data processing
KR20210100076A (ko) 벡터 술어 요약 생성

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