KR20110109590A - 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법 - Google Patents

재구성 가능한 프로세서의 시뮬레이션 장치 및 방법 Download PDF

Info

Publication number
KR20110109590A
KR20110109590A KR1020100029379A KR20100029379A KR20110109590A KR 20110109590 A KR20110109590 A KR 20110109590A KR 1020100029379 A KR1020100029379 A KR 1020100029379A KR 20100029379 A KR20100029379 A KR 20100029379A KR 20110109590 A KR20110109590 A KR 20110109590A
Authority
KR
South Korea
Prior art keywords
processor
simulation
queue
routing
information
Prior art date
Application number
KR1020100029379A
Other languages
English (en)
Other versions
KR101647817B1 (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 KR1020100029379A priority Critical patent/KR101647817B1/ko
Priority to US13/012,945 priority patent/US8725486B2/en
Priority to EP11154723.8A priority patent/EP2372587B1/en
Priority to JP2011076608A priority patent/JP5797438B2/ja
Priority to CN201110089956.XA priority patent/CN102207904B/zh
Publication of KR20110109590A publication Critical patent/KR20110109590A/ko
Application granted granted Critical
Publication of KR101647817B1 publication Critical patent/KR101647817B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

응용 프로그램을 실행하는 프로세서의 성능을 평가하거나 혹은 해당 프로세서에 최적으로 실행 가능한 응용 프로그램을 작성하기 위해 사용되는 프로세서 시뮬레이션 기술이 개시된다. 다수의 기능 유닛을 포함하는 재구성 가능한 프로세서의 시뮬레이션 장치는 피연산자를 생성하는 기능 유닛과 그 피연산자를 소모하는 기능 유닛 간의 라우팅 경로를 큐(queue)로 표현하여 프로세서를 모델링한다. 이러한 큐의 싸이즈는 기능 유닛들간의 라우팅 지연에 관한 정보와, 스케쥴러로부터 수신한 모듈로 스케쥴링(modulo scheduling)에 따른 순환 루프(iteration loop)의 스테이지 정보(stage information)를 기초로 결정된다. 각 라우팅 큐의 동작에 대한 호스트향 바이너리 코드를 저장하는 모델링 코드 DB가 구비되고, 바이너리 파일 대신에 대응하는 호스트향 바이너리 코드를 실행하여 시뮬레이션한다.

Description

재구성 가능한 프로세서의 시뮬레이션 장치 및 방법{Apparatus and method for simulating reconfigrable processor}
응용 프로그램을 실행하는 프로세서의 성능을 평가하거나 혹은 해당 프로세서에 최적으로 실행 가능한 응용 프로그램을 작성하기 위해 사용되는 프로세서 시뮬레이션 기술이 개시된다.
재구성 가능한 계산(reconfigurable computing)의 개념은 어레이 형태로 배열되고 재구성 가능한 하드웨어들을 구비한 프로세서를 배경으로 한다. 각 재구성 가능한 하드웨어들간의 데이터 흐름(data flow)을 포함하는 하드웨어들의 동작(behavior)은 특정한 타스크(specific task)를 실행하는데 적합하도록 맞추어진다(tailored to perform a specific task). 재구성 가능한 프로세서는 전용 하드웨어(dedicated hardware)에 비견할 만한 처리 성능을 달성할 수 있다.
재구성 가능한 하드웨어들은 처리 요소(processing element) 혹은 기능 유닛(functional unit)이라고 불리는데, 이 기능 유닛들의 크기, 즉 기능 유닛에 몇 개의 ALU가 포함되어 있는지, 몇 개의 레지스터가 포함되어 있는지와 같은 복잡도를 '입도'(粒度)(granularity)라고 부른다. 입도가 큰 프로세서는 조립(粗粒)의 재구성 가능 구조 (Coarse-Grained Reconfigurable Architecture : CGRA), 입도가 작은 프로세서는 세립(細粒) 재구성 가능 구조(Fine-Grained Reconfigurable Architecture)를 가진다고 부른다. 각 기능 유닛들 간의 구성은 특정한 타스크를 실행할 때 구성 정보(configuration information)에 따라 동적으로 설정된다. 구성 메모리(configuration memory)에서 읽어들인 구성 정보를 바탕으로 각 기능 유닛들간의 라우팅 경로가, 예를 들면 멀티플렉서에 의해 동적으로 설정되고, 이 설정된 구조를 바탕으로 실행 파일이 실행된다. 실행 파일의 각 명령어들은 각 처리 요소들이 실행할 명령 코드 및 피연산자 정보를 연이어 포함하는 형태로 명령어 메모리에 저장된다.
조립의 재구성 가능 구조(CGLA)는 흔히 프로그램의 특정한 부분, 특히 순환 루프의 실행 속도를 향상시키기 위해 사용되는 일종의 가속기(accelerator)로 사용되기도 한다. 기존의 ASIC에 비해 CGLA 프로세서는 동일한 수준의 성능을 가지면서도 유연성(flexibility)이 높다는 점으로 인해 차세대 디지털신호처리기(DSP)를 위한 효율적인 수단으로 부각되고 있다.
한편, 어떤 응용프로그램이 CGRA를 이용한 플랫폼을 사용하였을 때 얼마만큼의 성능을 얻을 수 있는지 예측하고 CGRA를 더 효율적으로 사용할 수 있는 방향으로 쏘오스 코드를 수정하기 위해서는 성능 디버깅이 가능한 시뮬레이터의 지원이 필요하다. CGRA를 위한 시뮬레이터는 시뮬레이션 과정이 소프트웨어 개발 과정의 병목이 되지 않도록 충분히 빠른 속도를 가져야 하며, 정확한 성능 디버깅을 위해 싸이클 정밀도(cycle accuracy)가 보장되어야 한다.
CGRA는 VLIW(Very Long Instruction Word) 머신과 같이 컴파일 타임에 모든 스케쥴이 결정되기 때문에 시뮬레이터가 싸이클 정밀도를 보장하는 것은 상대적으로 쉬운 편이다. 하지만 하나의 레지스터를 통해 기능 유닛들간의 피연산자 전달(operand passing)이 이루어지는 일반적인 프로세서와 달리, CGRA는 훨씬 더 복잡한 연결 로직(interconnection logic)을 이용하여 기능 유닛 간에 피연산자를 주고 받는다. 이 때문에 시뮬레이터는 이 연결 로직들의 동작들을 모델링하는 부담을 갖게 되고 이는 결과적으로 시뮬레이션 속도를 제한하는 주요한 요인이 된다.
CGLA 프로세서를 위한 시뮬레이터가 제공된다. 제안하는 시뮬레이터는 싸이클 정밀도가 보장되고 출력을 정밀하게 예측하는 것이 가능하면서도 고속의 동작을 가능하게 하는 것을 목적으로 한다.
이러한 목적을 달성하기 위한 일 양상에 따르면, 다수의 기능 유닛을 포함하는 재구성 가능한 프로세서의 시뮬레이션 장치는 피연산자를 생성하는 기능 유닛과 그 피연산자를 소모하는 기능 유닛 간의 라우팅 경로를 큐(queue)로 표현하여 프로세서를 모델링한다. 이러한 큐의 싸이즈는 기능 유닛들간의 라우팅 지연에 관한 정보와, 스케쥴러로부터 수신한 모듈로 스케쥴링(modulo scheduling)에 따른 순환 루프(iteration loop)의 스테이지 정보(stage information)를 기초로 결정된다.
각 기능 유닛에서 생성된 피연산자는 해당 큐의 첫번째 슬롯에 기록되고, 매 시동 간격(initiation interval)마다 각 슬롯에 기록된 정보를 인접 슬롯 간에 천이(shift)시킨다.
또다른 양상에 따르면, 각 라우팅 큐의 동작에 대한 호스트향 바이너리 코드를 저장하는 모델링 코드 DB가 구비되고, 바이너리 파일 대신에 대응하는 호스트향 바이너리 코드를 실행하여 시뮬레이션한다.
제안된 시뮬레이터는 재구성 가능한 프로세서를 대상으로 단순화된 모델링을 통해 시뮬레이션을 고속으로 수행하는 것이 가능하다. 또한 호스트향 바이너리 코드를 매핑시켜 시뮬레이션을 더욱 고속으로 수행할 수 있다.
도 1은 재구성 가능한 프로세서의 프로그램 실행을 시뮬레이션하는 예시적인 프로그램 개발 시스템의 개략적인 구성을 나타내는 블럭도이다.
도 2는 일 실시예에 따른 재구성 가능한 프로세서의 개략적인 구성을 나타내는 블럭도이다.
도 3은 또다른 실시예에 따른 시뮬레이터(100)의 구성을 개략적으로 도시한 블럭도이다.
도 4는 기존의 구조 모델(architecture model)의 일 예를 예시한다.
도 5는 도 4에서 종래의 방법으로 모델링된 구조를 일 양상에 따라 모델링한 일 실시예를 도시한다.
도 6은 모듈로 스케쥴링을 설명하기 위한 CGRA 프로세서의 일 예를 도시한다.
도 7은 도 6의 CGRA 프로세서가 4개의 스테이지로 구성된 순환루프(iteration)를 실행할 때 각 기능 유닛들의 처리 흐름을 설명하는 도면이다.
도 8은 일 양상에 따라, 모듈로 스케일링을 된 결과에 적용될 수 있는 일 실시예에 따른 프로세서 모델(113)을 도시한다.
전술한, 그리고 추가적인 본 발명의 양상들은 후술하는 실시예들을 통해 더욱 명확해질 것이다.
도 1은 재구성 가능한 프로세서의 프로그램 실행을 시뮬레이션하는 예시적인 프로그램 개발 시스템의 개략적인 구성을 나타내는 블럭도이다. 도시된 바와 같이, 예시적인 프로그램 개발 시스템은 메모리(510)로부터 재구성 가능한 프로세서의 구조 정보와, 실행할 프로그램 쏘오스를 읽어 들여 이들을 컴파일하고 스케쥴링(scheduling)하여 그 결과로 실행 파일(930)과 프로세서의 구성 정보(configuration data)(910)를 메모리로 출력하여 저장하는 컴파일러/스케쥴러(300), 그리고 이 컴파일러/스케쥴러(300)로부터 스케쥴링 정보를 입력받고, 또 메모리로부터 구성 정보(910) 및 실행 파일(930)을 읽어들여 실행 파일(930)의 실행을 시뮬레이션하는 시뮬레이터(100)를 포함한다.
일 양상에 따르면, 컴파일러(300)로부터 시뮬레이터(100)로 입력되는 바이너리 파일(900)은 구성 정보 혹은 구성 파일(configuration file)과 실행 파일(execution file)을 포함한다.
이러한 시뮬레이션을 통해 어떤 응용프로그램이 주어진 구조(architecture)를 가진 재구성 가능한 프로세서에서 실행될 때 얼마만큼의 성능을 얻을 수 있는지를 예측할 수 있고, 또한 디버깅을 통해 보다 효율적인 실행이 가능하도록 프로그램 쏘오스(530)를 수정할 수 있다. 일 실시예에 있어서, 구조 정보(510)는 재구성 가능한 프로세서의 기능 유닛들의 구조, 이들간의 경로 연결 정보와 같은 데이터 구조 및 제어 흐름(control flow)의 구조에 관한 정보를 포함한다. 이에 대해 구성 정보(910)는 이렇게 주어진 구조를 가진 재구성 가능한 프로세서의 기능 유닛들간의 경로 연결이 실제로 주어진 응용 프로그램을 실행하기 위해 어떻게 연결되는가에 관한 정보이다. 실행 파일(930)은 구성 정보(910)에 의해 일정 기간 동안 고정된 구조를 가지는 재구성 가능한 프로세서에서 각 기능 유닛들이 실행해야할 명령어들을 포함한다. 구성정보와 명령어 코드는 종종 통합되어 취급되기도 한다. 즉, 한 클럭에서 처리되어야할 구성정보와 명령어 코드가 메모리에 인접하여 저장되고 프로세서에 의해 동시에 패치(fetch)된다.
예시적인 프로그램 개발 시스템에서 시뮬레이터는 컴파일러/스케쥴러로부터 스케쥴링에 관한 정보를 입력받는 것으로 도시되었으나, 이러한 스케쥴링 정보 역시 메모리(900)에 저장되고 시뮬레이터(100)가 메모리로부터 읽어들일 수도 있다.
일 양상에 따르면, 시뮬레이터(100)는 추상화된 구조 모델을 이용한다. 이 모델은 기능 유닛들간의 피연산자 라우팅 경로를 내부결선 로직(interconnection logic)의 시퀀스를 이용하여 표현하는 대신, 피연산자를 생성하는 기능 유닛과 피연산자를 소모하는 기능 유닛 사이의 큐(queue)로 모델링한다. 이에 따라 시뮬레이션 싸이클마다 그 동작을 확인해야할 내부결선 구성요소(interconnection component)의 수가 크게 줄어들기 때문에 시뮬레이션 속도를 높일 수 있다.
도 2는 일 실시예에 따른 재구성 가능한 프로세서의 개략적인 구성을 나타내는 블럭도이다. 도시된 바와 같이, 일 실시예에 따른 재구성 가능한 프로세서의 시뮬레이션 장치는 기능 유닛들간의 라우팅 지연에 관한 정보와, 스케쥴러로부터 수신한 모듈로 스케쥴링(modulo scheduling)에 따른 순환 루프(iteration loop)의 스테이지 정보(stage information)를 기초로, 피연산자를 생성하는 기능 유닛과 그 피연산자를 소모하는 기능 유닛 간의 라우팅 경로를 큐(queue)로 표현하여 프로세서를 모델링하는 프로세서 모델링부(110)와, 이 프로세서 모델링부(110)에서 생성된 프로세서 모델(113)을 기초로 컴파일러로부터 입력되는 바이너리 파일을 모의 실행시켜 결과 값을 출력하는 시뮬레이션부(130)를 포함한다.
도시된 실시예에 있어서, 프로세서 모델링부(110), 시뮬레이션부(130)는 프로그램으로 구현되나 이에 한정되는 것은 아니다. 도시된 실시예에 있어서 프로세서 모델(113) 및 구조정보(510)는 메모리에 저장되는 데이터 혹은 데이터 구조이나 이에 한정되는 것은 아니다.
CGRA 프로세서는 기능 유닛들간의 내부결선 로직이 드문(sparse) 특징을 가지고 있다. 이는 기능 유닛들 사이에 한 싸이클 안에 피연산자를 라우팅하도록 하는 경로(path)가 존재하지 않을 수도 있음을 의미한다. 따라서 CGRA 프로세서는 일반적으로 하나의 피연산자를 라우팅하는데 두 개 이상의 내부결선 구성요소(component)가 사용된다. 즉, 하나의 기능 유닛이 생성한 값은 레지스터 파일이나 멀티플렉서 혹은 다른 기능 유닛들을 순차적으로 거치며 그 값을 소모하는 기능 유닛으로 전달된다. CGRA 프로세서의 스케쥴러(scheduler)는 컴파일 시간(compile time)에 어떤 연산(operation)을 어떤 기능 유닛에 할당(place)시킬지의 문제 뿐 아니라, 연산 사이의 피연산자들을 어떤 내부결선 구성요소들의 연결(chain)을 이용하여 라우팅(routing) 해줄 지의 문제까지 결정해주어야 한다.
일 양상에 따르면, 프로세서 모델(113)은 기능 유닛들간의 피연산자 라우팅 경로를 내부결선 로직의 시퀀스(sequence)를 이용하여 표현하는 대신, 피연산자(operand)를 생성하는 기능 유닛과 피연산자를 소모하는 기능 유닛 사이의 큐(queue)로 모델링한다. 즉, 임의의 피연산자가 t1 이라는 시점에 기능 유닛 f1에서 생성되어, t2 라는 시점에 기능 유닛 f2 에서 소모된다고 하면, 이 큐는 t1시점에서의 f1의 목적지 포트(destination port)와 t2시점에서 f2 출발지 포트(source port)를 이어주는 큐로 모델링된다.
도 4는 기존의 구조 모델(architecture model)의 일 예를 예시한다. 점선으로 표시된 부분은 의미 있는 피연산자가 머물지 않는 구간이고, 흑색으로 칠해진 부분은 기능 유닛 f1이 생성한 피연산자의 흐름을, 실선으로 표시된 부분은 기능 유닛 f2가 생성한 피연산자의 흐름을 도시한다. 기능 유닛 f1 내지 f4는 ALU(arithmetic and Logical Unit)을 나타내고, 기능 유닛 u1은 국부 레지스터 파일(local register file)을 나타낸다.
시각 t 에서 기능 유닛 f1이 생성한 피연산자는 f1 기능 유닛의 출력 버퍼에 도달한다. 시각 t+1 에서 이 피연산자는 기능 유닛 u1의 입력 버퍼에 도달하여 내부에 래치된다. 동시에 기능 유닛 f2 에서 연산된 피연산자가 f2 기능 유닛의 출력 버퍼에 도달한다. 시각 t+2 에서 기능 유닛 f1에서 생성된 피연산자는 기능 유닛 u1의 출력 버퍼에 도달하여 기능 유닛 f4 의 좌측 입력 버퍼에 래치된다. 또한 기능 유닛 f2에서 생성된 피연산자는 기능 유닛 u1의 입력 버퍼에 도달하여 내부에 래치된다. 이후에 시각 t+3 에서 기능 유닛 u1에 래치되어 있던 피연산자는 기능 유닛 u1의 출력 버퍼에 도달하여 기능 유닛 f4의 우측 입력 버퍼에 래치된다.
즉, 기능 유닛 f1 에서 시각 t 에 생성된 피연산자는 기능 유닛 u1을 거쳐 시각 t+2 에 기능 유닛 f4에 도달하여 소모될 준비 상태에 도달한다. 또 기능 유닛 f2 에서 시각 t+1 에 생성된 피연산자는 기능 유닛 u1을 거쳐 시각 t+3 에 기능 유닛 f4에 도달하여 소모될 준비 상태에 도달한다. 이때 기능 유닛 f4에서 두 피연산자의 연산은 시각 t+3에 이루어진다. 따라서 기능 유닛 f1에서 생성된 피연산자는 기능 유닛 f4에서 소모될 때까지 두 클럭이 소요되고, 기능 유닛 f2 에서 생성된 피연산자는 기능 유닛 f4 에서 소모될 때까지 한 클럭이 소요된다.
도 5는 도 4에서 종래의 방법으로 모델링된 구조를 일 양상에 따라 모델링한 일 실시예를 도시한다. 도 5를 참조하면 기능 유닛 f1 내지 f4 에서 입력 버퍼는 생략되었다. 또한 국부 레지스터 파일은 단지 지연의 정도에 해당하는 슬롯을 가진 큐로 모델링되었다. 피연산자 라우팅 큐는 오직 의미있는 피연산자의 전달을 위한 용도로만 존재하므로 시뮬레이터는 해당 피연산자의 라우팅을 위해 사용되는 내부결선 구성요소로 해당 큐만을 고려하면 되고 이는 매 싸이클마다 고려해야하는 내부결선 구성요소의 수를 줄여서 시뮬레이션 시간을 향상시킨다.
이와 같이 데이터 흐름 그래프(dataflow graph)를 반영하여 구조 모델을 생성하기 위해서는 실제로 데이터 흐름 그래프가 구조 상에 어떻게 매핑되었는지를 알려주는 정보가 필요하다. 일 양상에 따르면, 이와 같은 정보는 스케쥴러로부터 공급된다. 스케쥴러는 데이터 흐름 상에 존재하는 구성요소들의 쏘오스 연산(source operation) 과 결과값 연산(destination operation) 의 스케쥴링 정보를 생성하여 이를 시뮬레이터로 제공한다.
CGRA 프로세서의 스케쥴링 방식에는 리스트 스케쥴링(list scheduling) 방식과 모듈로 스케쥴링(Modulo scheduling) 방식이 있다. 일 양상에 따라, 일반적인 리스트 스케쥴링 방식을 이용할 경우, 라우팅 큐(routing queue)는 하나의 버퍼로써 구현될 수 있다. 즉, 피연산자를 생성하는 구성요소가 값을 생성하는 시점에 버퍼에 생성된 값을 써주고, 피연산자를 소모하는 구성요소가 소모 시점에서 버퍼로부터 값을 읽어오도록 함으로써 라우팅 큐를 구현할 수 있다.
그러나 모듈로 스케쥴링 프레임워크(framework)에서는 루프 레벨 병렬처리(loop level parallelism)을 이용하기 위해 소프트웨어 파이프라이닝(software pipelining) 기법을 이용하여 여러 개의 루프 순환(loop iteration)을 겹쳐서 실행하는 오버랩드 스케쥴(overlapped schedule)을 생성하게 된다. 생성된 스케쥴에서 일 순환(iteration)은 여러 개의 스테이지(stage)로 구분되는데, 각 스테이지는 모두 시동 간격(initiation interval) 만큼의 수행 싸이클을 갖는다. 그리고 시동 간격 싸이클 안에는 서로 다른 루프 순환(loop iteration)으로부터 각각 다른 스테이지(stage)에 해당하는 연산(operation)들이 중첩(overlap)되어 스케쥴되게 된다. 결과적으로 모듈로 스케쥴링 프레임워크는 시동 간격 마다 서로 다른 순환 경로에 포함된 동일한 연산을 반복적으로 수행하도록 하는 스케쥴을 생성한다.
도 6은 모듈로 스케쥴링을 설명하기 위한 CGRA 프로세서의 일 예를 도시한다. 도 7은 도 6의 CGRA 프로세서가 4개의 스테이지로 구성된 순환루프(iteration)를 실행할 때 각 기능 유닛들의 처리 흐름을 설명하는 도면이다. 도 6에서 4개의 기능 유닛들은 각각 일 순환을 구성하는 하나의 스테이지의 실행을 전담하고, 각각 앞 스테이지에서 입력받은 데이터를 처리하여 다음 스테이지로 출력하는, 즉 소프트웨어 파이프라인 방식의 처리를 실행한다.
도 7을 참조하면, 시각 t 에서 기능 유닛 f1는 첫번째 순환루프(iteration)의 첫번째 스테이지를 처리하며, 기능 유닛 f2,f3,f4 은 전단계에서 처리된 결과를 기다리고 있다. 시각 t+1 에서 기능 유닛 f1는 두번째 순환루프(iteration)의 첫번째 스테이지를 처리하며, 기능 유닛 f2은 기능 유닛 f1로부터 첫번째 순환루프의 1st 스테이지 처리 결과를 입력받아 첫번째 순환루프의 두번째 스테이지를 처리하며, 기능 유닛 f3, f4는 전단계에서 처리된 결과를 여전히 기다리고 있다. 시각 t+2 에서 기능 유닛 f1는 세번째 순환루프(iteration)의 첫번째 스테이지를 처리하며, 기능 유닛 f2은 기능 유닛 f1로부터 두번째 순환루프의 첫번째 스테이지 처리 결과를 입력받아 두번째 순환루프의 두번째 스테이지를 처리하며, 기능 유닛 f3는 기능 유닛 f2로부터 첫번째 순환루프의 두번째 스테이지 처리 결과를 입력받아 첫번째 순환루프의 세번째 스테이지를 처리하며, 기능 유닛 f4는 전단계에서 처리된 결과를 여전히 기다리고 있다. 시각 t+3 에서 기능 유닛 f1는 네번째 순환루프(iteration)의 첫번째 스테이지를 처리하며, 기능 유닛 f2은 기능 유닛 f1로부터 세번째 순환루프의 첫번째 스테이지 처리 결과를 입력받아 세번째 순환루프의 두번째 스테이지를 처리하며, 기능 유닛 f3는 기능 유닛 f2로부터 두번째 순환루프의 두번째 스테이지 처리 결과를 입력받아 두번째 순환루프의 세번째 스테이지를 처리하며,기능 유닛 f4는 기능 유닛 f3로부터 첫번째 순환루프의 세번째 스테이지 처리 결과를 입력받아 첫번째 순환루프의 네번째 스테이지를 처리한다.
이와 같은 모듈로 스케쥴링 프레임워크에서 생성된 결과를 일 양상에 따른 프로세서 모델을 이용하여 시뮬레이션할 경우, 라우팅 큐를 하나의 버퍼로 구현하게 되면 피연산자 라우팅 경로(operand routing path)에서 소모되는 싸이클이 시동 간격을 초과하는 경우에 대해 피연산자를 소모하는 구성요소가 시뮬레이션되기 이전에 큐에 들어있는 값이 겹쳐쓰기(overwrite)되는 경우가 발생하게 된다. 피연산자를 생성하는 구성요소는 매 시동 간격마다 새로운 값을 라우팅 큐에 써 넣기 때문이다.
일 양상에 따르면, 프로세서 모델링부(110)가 정의하는 큐는 해당 라우팅 경로의 라우팅 지연과 스테이지의 시동 간격(initiation interval)의 비(ratio)에 해당하는 수의 슬롯(slot)을 가진다. 나아가 시뮬레이션부(130)는 각 기능 유닛에서 생성된 피연산자를 해당 큐의 첫번째 슬롯에 기록하고, 매 시동 간격(initiation interval)마다 각 슬롯에 기록된 정보를 인접 슬롯간에 천이(shift)시킨다. 구체적으로 모듈로 스케쥴링 프레임워크에서 시뮬레이션을 하는 경우, 라우팅 큐는 천정값(ceiling), 즉 라우팅 지연값/시동 간격(routing delay / initiation interval) 만큼의 슬롯(slot)으로 구현된다. 이 라우팅 큐는 매 시동 간격마다 이전 슬롯의 값을 다음 슬롯으로 천이시키며, 피연산자를 소모하는 구성요소는 라우팅 큐의 마지막 슬롯에 위치한 값을 읽어온다.
도 8은 일 양상에 따라, 모듈로 스케일링을 된 결과에 적용될 수 있는 일 실시예에 따른 프로세서 모델(113)을 도시한다. 시동 간격은 2 싸이클이 되도록 스케쥴되었다고 가정한다. 두 개의 피연산자 모두 라우팅 지연값(routing delay)이 시동 간격(initiation interval)보다 크기 때문에, 각각의 라우팅 큐는 2개의 슬롯으로 나뉘어지게 된다. 앞서 설명한 바와 같이 기능 유닛들은 매 시동 간격마다 새로운 값을 생성하므로, 시뮬레이션부(130)는 시동 간격이 지난 다음 이전에 생성된 값을 라우팅 큐의 다음 슬롯으로 옮겨준다. 이와 같이 각 피연산자 별 라우팅 큐를 관리함으로써, 시뮬레이션부(130)는 모듈로 스케듈링된 결과에 대해서도 정확한 동작을 모사할 수 있다.
도 3은 또다른 실시예에 따른 시뮬레이터(100)의 구성을 개략적으로 도시한 블럭도이다. 일 양상에 따라, 시뮬레이션 장치는 각 라우팅 큐의 동작에 대한 호스트향 바이너리 코드를 저장하는 모델링 코드 DB(131)를 더 포함하고, 시뮬레이션부(130)는 바이너리 파일을 읽어들여 이 모델링 코드 DB(131)에서 추출한 대응하는 호스트향 바이너리 코드를 실행하여 시뮬레이션을 진행한다. 또다른 양상에 따르면, 시뮬레이션 장치는 모델링 코드 DB(131)에서 추출한 호스트향 바이너리 코드로부터 각 라우팅 큐의 연결을 재구성하여 시뮬레이션을 진행할 수 있다. 도시된 실시예에 있어서, 스케쥴러(330) 및 프로세서 모델링부(110), 구조정보(510) 및 프로세서 모델(113)은 도 2에 도시된 실시예의 그것과 유사하다.
바이너리 번역(Binary translation) 기술은 시뮬레이터상에서 타겟(target)이 되는 기계(machine)의 명령어 바이너리 코드(instruction binary)를 그와 동등한 동작을 하는 호스트 기계(host machine)의 바이너리 코드(binary)로 치환한 다음, 동일한 코드 블락(code block)을 시뮬레이션할 때에는 이전에 치환해 둔 호스트 기계의 바이너리 코드들이 수행되도록 함으로써 시뮬레이션 속도를 빠르게 하는 기술이다.
프로세서가 프로그램 카운터(program counter)가 가리키는 주소에 해당하는 값을 명령어 메모리(instruction memory)에서 읽어 와서 수행되도록 하는 것과 마찬가지로, CGRA 프로세서는 매 싸이클마다 구성 메모리(configuration memory)의 특정한 번지로부터 구성 데이터를 읽어와서 각 구성요소마다 해당 싸이클에서 구성 데이터가 지시하고 있는 동작을 수행하도록 한다. 일 양상에 따르면, 구성 메모리의 각각의 주소별로 해당 구성 데이터에 대한 호스트 바이너리 코드가 생성된다. 이후에 동일한 구성 메모리의 주소에 존재하는 구성 데이터에 대한 시뮬레이션을 수행할 때에는 이전에 생성해둔 호스트 바이너리 코드를 사용하여 시뮬레이션을 진행할 수 있다.
도 3에 도시된 실시예는 일 양상에 따른 프로세서의 구조 모델(113)에 바이너리 변환을 적용한 것이다. 일 실시예에 있어서, 실제로 프로세서 구조에 존재하는 내부 결선 로직들의 동작(behavior)에 대한 호스트 바이너리 코드를 생성하는 대신, 라우팅 큐의 동작을 모델링하는 바이너리 코드가 저장된다. 데이터 흐름 그래프(data flow graph)상의 동작(operation)이 매핑(mapping)되는 구성요소들이 그 생성/소모된 값을 다른 내부결선 구성요소를 통해 주고받는 것으로 기술하는 대신, 라우팅 큐를 이용하는 것으로 기술해 준다. 한편, 라우팅 큐의 동작에 대해서는 ㅅ시동 간격이 지날 때 마다 큐에 존재하는 값을 다음 슬롯으로 넘겨주는 부분만 모델링해주면 되기 때문에 바이너리 번역을 어렵지 않게 적용할 수 있다.
도시된 실시예에 있어서 모델링 코드 DB(131)는 구성 메모리에 대응하여 각 주소별로 구성 데이터에 대한 호스트 바이너리 코드가 저장된다. 이 구성 데이터는 데이터 흐름 그래프 상에서 각 구성요소들간의 라우팅 큐의 동작을 기술하는 데이터이다. 시뮬레이션부(130)는 모델링 코드DB(131)에서 읽어들인 이 호스트 바이너리 코드에 따라 프로세서 모델(113)을 재구성하고, 바이너리 파일(900)에서 실행 파일을 읽어들여 재구성된 프로세서 모델(113)을 기반으로 시뮬레이션을 진행한다.
전술한 실시예로부터 명백한 바와 같이, 일 양상에 따른 재구성 가능한 프로세서의 시뮬레이션 방법은 기능 유닛들간의 라우팅 지연에 관한 정보와, 스케쥴러로부터 수신한 모듈로 스케쥴링(modulo scheduling)에 따른 순환 루프(iteration loop)의 스테이지 정보(stage information)를 기초로, 피연산자를 생성하는 기능 유닛과 소모하는 기능 유닛 사이의 라우팅 경로를 큐(queue)로 표현하여 프로세서를 모델링하는 프로세서 모델링 단계와, 이 프로세서 모델링 단계에서 생성된 프로세서 모델을 기초로 컴파일러로부터 입력되는 바이너리 파일을 모의 실행시켜 결과 값을 출력하는 시뮬레이션 단계를 포함한다.
프로세서 모델링 단계가 정의하는 큐는 해당 라우팅 경로의 라우팅 지연과 스테이지의 시동 간격(initiation interval)의 비(ratio)에 해당하는 수의 슬롯(slot)을 가진다. 또한 각 시뮬레이션 단계에서 각 기능 유닛에서 생성된 피연산자를 해당 큐의 첫번째 슬롯에 기록하고, 매 시동 간격(initiation interval)마다 각 슬롯에 기록된 정보를 인접 슬롯간에 천이(shift)시킨다. 스테이지 정보는 일순환(iteration)의 스테이지 분할 정보와, 각 스테이지에 대해 할당된 기능 유닛들과, 피연산자를 생성하는 기능 유닛과 그 생성된 피연산자를 소모하는 기능 유닛간의 관계에 대한 특정 정보를 포함한다.
또한 컴파일러로부터 입력되는 바이너리 파일은 구성 파일(configuration file)과 실행 파일(execution file)을 포함할 수 있다. 또다른 실시예에 있어서, 시뮬레이션 단계는 바이너리 파일을 읽어들여 각 라우팅 큐의 동작에 대한 호스트향 바이너리 코드를 저장하는 모델링 코드 DB에서 추출한 대응하는 호스트향 바이너리 코드를 실행하여 시뮬레이션을 진행할 수 있다. 이와 같은 시뮬레이션 방법은 전술한 시뮬레이션 장치를 통해 이미 상세히 설명되었으므로 구체적인 설명은 생략한다.
이상에서 첨부된 도면을 참조하여 기술되는 실시예들을 중심으로 설명하였지만 이에 한정되는 것은 아니며 그로부터 자명하게 도출 가능한 변형예들을 포괄하도록 청구범위는 의도되었다.
100 : 시뮬레이터
110 : 프로세서 모델링부 113 : 프로세서 모델
130 : 시뮬레이션부 131 : 모델링 코드
300 : 컴파일러/스케쥴러 330 : 스케쥴러
510 : 구조 정보 530 : 프로그램 쏘오스
900 : 바이너리 파일
910 : 구성 정보 930 : 실행파일

Claims (12)

  1. 기능 유닛들간의 라우팅 지연에 관한 정보와, 스케쥴러로부터 수신한 모듈로 스케쥴링(modulo scheduling)에 따른 순환 루프(iteration loop)의 스테이지 정보(stage information)를 기초로, 피연산자를 생성하는 기능 유닛과 그 피연산자를 소모하는 기능 유닛 간의 라우팅 경로를 큐(queue)로 표현하여 프로세서를 모델링하는 프로세서 모델링부와;
    상기 프로세서 모델링부에서 생성된 프로세서 모델을 기초로 컴파일러로부터 입력되는 바이너리 파일을 모의 실행시켜 결과 값을 출력하는 시뮬레이션부;
    를 포함하는 재구성 가능한 프로세서의 시뮬레이션 장치.
  2. 제 1 항에 있어서,
    상기 프로세서 모델링부가 정의하는 큐는 해당 라우팅 경로의 라우팅 지연과 스테이지의 시동 간격 (initiation interval)의 비(ratio)에 해당하는 수의 슬롯(slot)을 가지는 재구성 가능한 프로세서의 시뮬레이션 장치.
  3. 제 2 항에 있어서, 상기 시뮬레이션부는 각 기능 유닛에서 생성된 피연산자를 해당 큐의 첫번째 슬롯에 기록하고, 매 시동 간격(initiation interval)마다 각 슬롯에 기록된 정보를 인접 슬롯간에 천이(shift)시키는 재구성 가능한 프로세서의 시뮬레이션 장치.
  4. 제 1 항에 있어서, 컴파일러로부터 입력되는 바이너리 파일은 구성 파일(configuration file)과 실행 파일(execution file)을 포함하는 재구성 가능한 프로세서의 시뮬레이션 장치.
  5. 제 1 항에 있어서, 상기 시뮬레이션 장치는 각 라우팅 큐의 동작에 대한 호스트향 바이너리 코드를 저장하는 모델링 코드 DB를 더 포함하고,
    상기 시뮬레이션부는 상기 모델링 코드 DB에서 추출한 호스트향 바이너리 코드로부터 각 라우팅 큐의 연결을 재구성하여 시뮬레이션을 진행하는 재구성 가능한 프로세서의 시뮬레이션 장치.
  6. 기능 유닛들간의 라우팅 지연에 관한 정보와, 스케쥴러로부터 수신한 모듈로 스케쥴링(modulo scheduling)에 따른 순환 루프(iteration loop)의 스테이지 정보(stage information)를 기초로, 피연산자를 생성하는 기능 유닛과 소모하는 기능 유닛 사이의 라우팅 경로를 큐(queue)로 표현하여 프로세서를 모델링하는 프로세서 모델링 단계와;
    상기 프로세서 모델링 단계에서 생성된 프로세서 모델을 기초로 컴파일러로부터 입력되는 바이너리 파일을 모의 실행시켜 결과 값을 출력하는 시뮬레이션 단계;를 포함하는 재구성 가능한 프로세서의 시뮬레이션 방법.
  7. 제 6 항에 있어서,
    상기 프로세서 모델링 단계가 정의하는 큐는 해당 라우팅 경로의 라우팅 지연과 스테이지의 시동 간격 (initiation interval)의 비(ratio)에 해당하는 수의 슬롯(slot)을 가지는 재구성 가능한 프로세서의 시뮬레이션 방법.
  8. 제 7 항에 있어서, 상기 시뮬레이션 단계는 각 기능 유닛에서 생성된 피연산자를 해당 큐의 첫번째 슬롯에 기록하고, 매 시동 간격 (initiation interval)마다 각 슬롯에 기록된 정보를 인접 슬롯간에 천이(shift)시키는 재구성 가능한 프로세서의 시뮬레이션 방법.
  9. 제 6 항에 있어서, 상기 스테이지 정보는 일순환(iteration)의 스테이지 분할 정보와, 각 스테이지에 대해 할당된 기능 유닛들과, 피연산자를 생성하는 기능 유닛과 그 생성된 피연산자를 소모하는 기능 유닛간의 관계에 대한 특정 정보를 포함하는 재구성 가능한 프로세서의 시뮬레이션 방법.
  10. 제 6 항에 있어서, 컴파일러로부터 입력되는 바이너리 파일은 구성 파일(configuration file)과 실행 파일(execution file)을 포함하는 재구성 가능한 프로세서의 시뮬레이션 방법.
  11. 제 6 항에 있어서, 상기 시뮬레이션 단계는 바이너리 파일을 읽어들여 각 라우팅 큐의 동작에 대한 호스트향 바이너리 코드를 저장하는 모델링 코드 DB에서 추출한 대응하는 호스트향 바이너리 코드를 실행하여 시뮬레이션을 진행하는 재구성 가능한 프로세서의 시뮬레이션 방법.
  12. 제 6 항 내지 제 11 항 중의 어느 한 항에 따른 시뮬레이션 방법이 저장된 기록매체.
KR1020100029379A 2010-03-31 2010-03-31 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법 KR101647817B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020100029379A KR101647817B1 (ko) 2010-03-31 2010-03-31 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법
US13/012,945 US8725486B2 (en) 2010-03-31 2011-01-25 Apparatus and method for simulating a reconfigurable processor
EP11154723.8A EP2372587B1 (en) 2010-03-31 2011-02-16 Apparatus and method for simulating a reconfigurable processor
JP2011076608A JP5797438B2 (ja) 2010-03-31 2011-03-30 シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体
CN201110089956.XA CN102207904B (zh) 2010-03-31 2011-03-31 用于对可重构处理器进行仿真的设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100029379A KR101647817B1 (ko) 2010-03-31 2010-03-31 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110109590A true KR20110109590A (ko) 2011-10-06
KR101647817B1 KR101647817B1 (ko) 2016-08-24

Family

ID=44121730

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100029379A KR101647817B1 (ko) 2010-03-31 2010-03-31 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법

Country Status (5)

Country Link
US (1) US8725486B2 (ko)
EP (1) EP2372587B1 (ko)
JP (1) JP5797438B2 (ko)
KR (1) KR101647817B1 (ko)
CN (1) CN102207904B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140109146A (ko) * 2013-03-05 2014-09-15 삼성전자주식회사 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983947B2 (en) * 2011-11-21 2021-04-20 Robert Keith Mykland Method and dynamically reconfigurable processor adapted for management of persistence of information across multiple instruction cycles
KR101926464B1 (ko) * 2012-10-11 2018-12-07 삼성전자 주식회사 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법
KR20140126190A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
KR102204282B1 (ko) * 2013-11-25 2021-01-18 삼성전자주식회사 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법
US11010505B2 (en) 2015-12-01 2021-05-18 International Business Machines Corporation Simulation of virtual processors
US10996970B2 (en) * 2017-12-14 2021-05-04 Samsung Electronics Co., Ltd. Method for data center storage evaluation framework simulation
CN109471636B (zh) * 2018-09-14 2020-07-14 上海交通大学 粗粒度可重构体系结构的算子映射方法及系统
US11237971B1 (en) * 2020-09-16 2022-02-01 SambaNova Systems, Inc. Compile time logic for detecting streaming compatible and broadcast compatible data access patterns

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040226000A1 (en) * 1998-04-10 2004-11-11 Peter Finch Method and apparatus for generating co-simulation and production executables from a single source
KR100813662B1 (ko) * 2006-11-17 2008-03-14 삼성전자주식회사 프로세서 구조 및 응용의 최적화를 위한 프로파일러
JP2009530924A (ja) * 2006-03-17 2009-08-27 アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ 再構成可能なマルチ処理粗粒アレイ

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5841967A (en) 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation
US6421808B1 (en) * 1998-04-24 2002-07-16 Cadance Design Systems, Inc. Hardware design language for the design of integrated circuits
US20010025363A1 (en) * 2000-03-24 2001-09-27 Cary Ussery Designer configurable multi-processor system
WO2001095161A2 (en) * 2000-06-02 2001-12-13 Virtio Corporation Method and system for virtual prototyping
US7054802B2 (en) 2000-10-20 2006-05-30 Quickturn Design Systems, Inc. Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading
US20020133325A1 (en) 2001-02-09 2002-09-19 Hoare Raymond R. Discrete event simulator
US20030149962A1 (en) 2001-11-21 2003-08-07 Willis John Christopher Simulation of designs using programmable processors and electronically re-configurable logic arrays
US7366651B1 (en) 2003-03-14 2008-04-29 Xilinx, Inc. Co-simulation interface
US7234125B1 (en) * 2003-06-23 2007-06-19 Altera Corporation Timing analysis for programmable logic
EP1530137A1 (en) 2003-11-10 2005-05-11 Robert Bosch Gmbh Simulation system and computer-implemented method for simulation and verifying a control system
US7698118B2 (en) * 2004-04-15 2010-04-13 Mentor Graphics Corporation Logic design modeling and interconnection
US20060277020A1 (en) 2005-06-02 2006-12-07 Tharas Systems A reconfigurable system for verification of electronic circuits using high-speed serial links to connect asymmetrical evaluation and canvassing instruction processors
US7380232B1 (en) * 2006-03-10 2008-05-27 Xilinx, Inc. Method and apparatus for designing a system for implementation in a programmable logic device
US8265917B1 (en) * 2008-02-25 2012-09-11 Xilinx, Inc. Co-simulation synchronization interface for IC modeling
US7979759B2 (en) * 2009-01-08 2011-07-12 International Business Machines Corporation Test and bring-up of an enhanced cascade interconnect memory system
KR101635397B1 (ko) * 2010-03-03 2016-07-04 삼성전자주식회사 재구성 가능한 프로세서 코어를 사용하는 멀티코어 시스템의 시뮬레이터 및 시뮬레이션 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040226000A1 (en) * 1998-04-10 2004-11-11 Peter Finch Method and apparatus for generating co-simulation and production executables from a single source
JP2009530924A (ja) * 2006-03-17 2009-08-27 アンテルユニヴェルシテール・ミクロ−エレクトロニカ・サントリュム・ヴェー・ゼッド・ドゥブルヴェ 再構成可能なマルチ処理粗粒アレイ
KR100813662B1 (ko) * 2006-11-17 2008-03-14 삼성전자주식회사 프로세서 구조 및 응용의 최적화를 위한 프로파일러

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BINGFENG MEI 외 3명. 'Architecture Exploration for a Reconfigurable Architecture Template'. IEEE Design & Test of Computers, Vol. 22, no. 2, 2005.04, pp.90-101* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140109146A (ko) * 2013-03-05 2014-09-15 삼성전자주식회사 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법
US9311270B2 (en) 2013-03-05 2016-04-12 Samsung Electronics Co., Ltd. Scheduler and scheduling method for reconfigurable architecture

Also Published As

Publication number Publication date
JP5797438B2 (ja) 2015-10-21
US20110246170A1 (en) 2011-10-06
CN102207904A (zh) 2011-10-05
EP2372587A1 (en) 2011-10-05
EP2372587B1 (en) 2016-12-28
JP2011216092A (ja) 2011-10-27
US8725486B2 (en) 2014-05-13
CN102207904B (zh) 2019-03-29
KR101647817B1 (ko) 2016-08-24

Similar Documents

Publication Publication Date Title
KR101647817B1 (ko) 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법
Staunstrup et al. Hardware/software co-design: principles and practice
Mei et al. Design methodology for a tightly coupled VLIW/reconfigurable matrix architecture: A case study
Chow The Mips-X RISC Microprocessor
Ortego et al. SESC: SuperESCalar simulator
KR100813662B1 (ko) 프로세서 구조 및 응용의 최적화를 위한 프로파일러
US20100100704A1 (en) Integrated circuit incorporating an array of interconnected processors executing a cycle-based program
US8689202B1 (en) Scheduling of instructions
EP1016995A1 (en) Generation of a system model
Ferreira et al. A run-time modulo scheduling by using a binary translation mechanism
Gerum et al. Source level performance simulation of gpu cores
Wirsch et al. Towards transparent dynamic binary translation from RISC-V to a CGRA
Yang et al. An approach to build cycle accurate full system VLIW simulation platform
KR102161055B1 (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
JP2001256048A (ja) データ処理装置のシミュレーション
Hoseininasab et al. Rapid Prototyping of Complex Micro-architectures Through High-Level Synthesis
Anjam Run-time Adaptable VLIW Processors
Zhang et al. High-performance instruction-set simulator for TMS320C62x DSP
Cong Hardware accelerated simulation and automatic design of heterogeneous architecture
Ho Mechanisms towards energy-efficient dynamic hardware specialization
Call Barreiro Dynamic vectorization of instructions
Paulino Generation of Custom Run-time Reconfigurable Hardware for Transparent Binary Acceleration
Zhong et al. Accelerating Data Analytics Kernels with Heterogeneous Computing
Cichon et al. Formal semantics of synchronous transfer architecture
Pétrot et al. On Software Simulation for MPSoC: A Modeling Approach for Functional Validation and Performance Estimation

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
FPAY Annual fee payment

Payment date: 20190717

Year of fee payment: 4