KR100924383B1 - 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법 - Google Patents

하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법 Download PDF

Info

Publication number
KR100924383B1
KR100924383B1 KR1020080005843A KR20080005843A KR100924383B1 KR 100924383 B1 KR100924383 B1 KR 100924383B1 KR 1020080005843 A KR1020080005843 A KR 1020080005843A KR 20080005843 A KR20080005843 A KR 20080005843A KR 100924383 B1 KR100924383 B1 KR 100924383B1
Authority
KR
South Korea
Prior art keywords
instruction
instructions
memory
primitive
module
Prior art date
Application number
KR1020080005843A
Other languages
English (en)
Other versions
KR20090079688A (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 KR1020080005843A priority Critical patent/KR100924383B1/ko
Publication of KR20090079688A publication Critical patent/KR20090079688A/ko
Application granted granted Critical
Publication of KR100924383B1 publication Critical patent/KR100924383B1/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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/126Job scheduling, e.g. queuing, determine appropriate device
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0781Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및 방법에 관한 것으로서, 명령어 캐시를 저장하는 명령어 캐시 메모리; 상기 명령어 캐시 메모리로부터 명령어를 패치하는 명령어 패치 모듈; 상기 명령어 패치 모듈이 상기 명령어 캐시 메모리로부터 패치한 명령어를 저장하는 명령어 큐 모듈; 상기 명령어 큐 모듈에 저장된 명령어를 판독하는 명령어 디스패치 모듈; 상기 명령어 디스패치 모듈이 판독한 명령어 중 메모리 관련 명령어를 저장하며, 메모리 관련 명령어를 실행한 결과를 저장하여 원래의 실행 순서대로 재정렬하는 메모리관련 명령어 버퍼; 상기 명령어 디스패치 모듈이 판독한 명령어 중 범용 명령어 관련 정보 또는 프리미티브 명령어 관련 정보를 저장하며, 상기 범용 명령어 또는 프리미티브 명령어를 실행한 결과를 저장하여 원래의 실행 순서대로 재정렬하는 레지스터관련 명령어 버퍼; 및 상기 메모리관련 명령어 버퍼에 저장되어 있는 명령어 또는 상기 레지스터관련 명령어 버퍼에 저장되어 있는 정보 사이의 데이터 의존도(Dependency)를 조사하여 명령어 순서를 비순차적으로 재배치하는 명령어 스케줄러 모듈;을 포함한다.
하드웨어/소프트웨어 통합 설계, 스케줄링, 프리미티브 명령어

Description

하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및 방법 {System for scheduling based on HW/SW Co-design and Method therefor}
본 발명은 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및 방법에 관한 것으로서, 특히 하드웨어/소프트웨어 통합 설계 시에 하드웨어로 처리해야 할 태스크와 소프트웨어로 처리해야 할 태스크를 효과적으로 수행하기 위한 프리미티브 명령어를 정의하고 이를 처리하는 하드웨어 모듈과 데이터 패스를 설계함으로써 태스크에 대한 수행 순서를 결정하는데 있어서 최대한 병렬적으로 수행할 수 있도록 비순차적으로 스케줄링하는 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및 방법에 관한 것이다.
최근 범용 프로세서의 성능은 급속하게 발전하고 있으며, 단위 시간에 수행할 수 있는 연산의 개수 또한 비약적으로 증가하고 있다. 그러나, 상술한 바와 같은 범용 프로세서의 성능 향상에 불구하고, 대량의 데이터를 단시간 내에 처리해야 하는 통신 기기 시스템, 영상 압축 시스템 등의 고성능이 필요한 시스템을 범용 프로세서를 사용하는 소프트웨어로 구현하는 경우, 목표로 하는 성능을 구현하기 곤 란하며 전력 소모가 커진다는 문제점이 있다.
이러한 문제점을 해결하기 위하여, 초고밀도 집적 회로 설계 기술을 이용하여 주문형 반도체(ASIC : Application Specific Integrated Circuit)를 사용하여 시스템 전체를 설계하는 방법이 있다. 주문형 반도체는 범용 프로세서와 비교하여 성능, 면적 또는 전력 소비 등의 제약 조건을 만족시키는데 유리하나, 특정 애플리케이션에 최적화되어 있으므로 디자인 과정의 후반부에 발생할 수 있는 디자인 변화를 수용하기 어려우며, 한번 구현되면 수정 및 확장이 곤란하므로 유연성이 부족하고 장기간의 개발 기간이 요구되는 문제점이 있다.
최근에는 고성능의 복잡한 시스템을 소프트웨어만으로 설계하는 방법과 하드웨어만으로 설계하는 방법의 문제점을 보완하기 위하여, 하드웨어의 우수한 성능과 수정 및 확장이 용이한 소프트웨어의 유연성을 모두 충족시키기는 하드웨어/소프트웨어 통합 설계 기법이 제안되었다.
특히 ASIP(Application Specific Instruction Set Processor) 방식은 구현하고자 하는 시스템에서 소프트웨어로 처리하여야 하는 태스크를 마이크로프로세서의 범용 명령어로 처리하고, 하드웨어로 처리하여야 할 태스크를 어플리케이션 특수 명령어로 처리하는 하드웨어/소프트웨어 통합 설계 기법이다. 상기 ASIP 방식은 다양한 시스템에 적용할 수 있으며 하드웨어 설계의 장점인 최적 설계에 따른 저전력 및 고성능을 구현할 수 있어서, 다양하고 빠르게 변화하고 있는 멀티미디어 통신 시스템의 개발에 적합하다.
그러나, 종래의 ASIP 방식은 단일 파이프라인 구조로 구성되므로 어플리케이 션 특수 명령어를 수행할 수 있는 실행 유닛이 다수 구성되어 있음에도 불구하고 소프트웨어 태스크를 처리할 범용 명령어와 하드웨어 태스크를 처리할 어플리케이션 특수 명령어를 병렬적으로 처리하지 못하는 비효율성이 문제점으로 지적되어 왔다.
본 발명이 해결하고자 하는 과제는, 상기 문제점을 해결하기 위한 것으로서, 하드웨어/소프트웨어 통합 설계 시에 하드웨어로 처리해야 할 태스크와 소프트웨어로 처리해야 할 태스크를 효과적으로 수행하기 위한 프리미티브 명령어를 정의하고, 범용 명령어를 처리하는 실행 유닛과 프리미티브 명령어를 처리할 수 있는 실행 유닛을 최대한 병렬적으로 사용할 수 있는 멀티플 이슈 슈퍼스칼라 파이프라인 구조 및 비순차 명령어 실행 스케줄러를 사용함으로써, 시스템의 성능을 향상시키는 스케줄링 시스템 및 방법을 제공하는 것이다.
본 발명은 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템에 관한 것으로서, 명령어 캐시를 저장하는 명령어 캐시 메모리; 상기 명령어 캐시 메모리로부터 명령어를 패치하는 명령어 패치 모듈; 상기 명령어 패치 모듈이 상기 명령어 캐시 메모리로부터 패치한 명령어를 저장하는 명령어 큐 모듈; 상기 명령어 큐 모듈에 저장된 명령어를 판독하는 명령어 디스패치 모듈; 상기 명령어 디스패치 모듈이 판독한 명령어 중 메모리 관련 명령어를 저장하며, 메모리 관련 명령어를 실행한 결과를 저장하여 원래의 실행 순서대로 재정렬하는 메모리관련 명령어 버퍼; 상기 명령어 디스패치 모듈이 판독한 명령어 중 범용 명령어 관련 정보 또는 프리미티브 명령어 관련 정보를 저장하며, 상기 범용 명령어 또는 프리미티브 명령어를 실행한 결과를 저장하여 원래의 실행 순서대로 재정렬하는 레지스터관련 명령어 버퍼; 및 상기 메모리관련 명령어 버퍼에 저장되어 있는 명령어 또는 상기 레지스터관련 명령어 버퍼에 저장되어 있는 정보 사이의 데이터 의존도(Dependency)를 조사하여 명령어 순서를 비순차적으로 재배치하는 명령어 스케줄러 모듈;을 포함한다.
바람직하게는, 상기 메모리관련 명령어 버퍼에 의해 재정렬된 결과를 메모리 접근 모듈을 이용하여 저장하는 데이터 캐시 메모리;를 더 포함하는 것을 특징으로 한다.
또한 바람직하게는, 상기 레지스터관련 명령어 버퍼에 의해 재정렬된 결과를 저장하는 범용 레지스터 파일 또는 프리미티브 레지스터 파일을 더 포함하는 것을 특징으로 한다.
그리고 바람직하게는, 상기 메모리 관련 명령어는 메모리 접근 유닛이 유휴 상태일 때 실행하며, 상기 범용 명령어 또는 프리미티브 명령어는 범용 명령어 실행 유닛 또는 프리미티브 명령어 실행 유닛이 유휴 상태일 때 실행하는 것을 특징으로 한다.
한편, 본 발명은 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 방법에 관한 것으로서, (a) 명령어 패치 모듈이 명령어 캐시 메모리로부터 명령어를 패치하여 명령어 큐 모듈에 저장하는 단계; (b) 명령어 디스패치 모듈이 상기 명령어 큐 모듈에 저장된 명령어를 판독하여 메모리 관련 명령어는 메모리관련 명령어 버퍼에 저장하고, 범용 명령어 관련 정보 또는 프리미티브 명령어 관련 정보는 레지스터관련 명령어 버퍼에 저장하는 단계; (c) 명령어 스케줄러 모듈이 상기 메모리관련 명 령어 버퍼에 저장된 명령어 또는 상기 레지스터관련 명령어 버퍼에 저장된 정보 간의 데이터 의존도(Dependency)를 조사하여 명령어 순서를 비순차적으로 재배치하는 단계; (d) 재배치된 명령어를 실행하며 실행한 결과를 상기 메모리관련 명령어 버퍼 또는 상기 레지스터관련 명령어 버퍼에 저장하고 원래의 실행 순서대로 재정렬하는 단계; 및 (e) 재정렬된 상기 메모리 관련 명령어의 실행 결과는 데이터 캐시 메모리에 저장하며, 재정렬된 상기 범용 명령어 또는 프리미티브 명령어의 실행 결과는 범용 레지스터 파일 또는 프리미티브 레지스터 파일에 저장하는 단계;를 포함한다.
바람직하게는, 상기 (d) 단계의 재배치된 명령어가 메모리 관련 명령어인 경우 메모리 접근 유닛이 유휴 상태일 때 실행하며, 상기 (d) 단계의 재배치된 명령어가 범용 명령어 또는 프리미티브 명령어인 경우 범용 명령어 실행 유닛 또는 프리미티브 명령어 실행 유닛이 유휴 상태일 때 실행하는 것을 특징으로 한다.
본 발명에 따르면, 프리미티브 명령어를 사용함으로써 어플리케이션의 병목 부분에서도 데이터 처리가 신속하며 수정 또는 재사용이 용이한 소프트웨어의 유연성을 획득할 수 있는 최적화된 하드웨어/소프트웨어 통합 설계를 할 수 있는 효과가 있다.
본 발명에 따르면, 하드웨어 태스크와 소프트웨어 태스크에 대하여 인위적으로 스케줄링을 하지 않더라도 하드웨어 스케줄러를 이용하여 동적인 스케줄링이 가 능하므로, 하드웨어/소프트웨어 태스크들은 명령어 레벨에서 병렬적으로 수행될 수 있으며, 시스템 설계시 스케줄링 설계에 대한 비용을 최소화하면서도 고성능을 구현할 수 있는 효과도 있다.
본 발명의 실시를 위한 구체적인 내용을 설명하기에 앞서, 본 발명의 기술적 요지와 직접적 관련이 없는 구성에 대하여는 본 발명의 기술적 요지를 흩뜨리지 않는 범위 내에서 생략하였음을 유의하여야 할 것이다.
또한, 본 명세서 및 청구범위에 사용된 용어나 단어는 발명자가 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 할 것이다.
일반적인 RISC(Reduced Instruction Set Computer) 구조의 프로세서는 하나의 프로그램을 여러 명령어의 조합을 통해 실행한다. 이러한 명령어들은 짧은 사이클 동안 데이터 읽기/쓰기/덧셈 연산과 같은 기본적인 작업을 수행하는데, 도 1의 (a)와 같이 C 언어로 구현된 하나의 프로그램은 도 1의 (b)에 도시된 바와 같은 다수의 범용 명령어로 구현된다.
반면, 본 발명에서 제안하는 프리미티브 명령어는 도 1의 (c)에 도시된 pi.sad 명령어와 같이, 상술한 범용 명령어의 조합으로 새롭게 정의되는 명령어로 서, 하나의 명령으로 여러 개의 데이터를 처리(SIMD, Single Instruction stream Multiple Data stream)하는 벡터 연산을 수행한다. 일반적인 범용 프로세서에서는 본 발명에서 제안하는 프리미티브 명령어를 짧은 사이클 동안 수행할 수 없기 때문에 특별히 구현된 하드웨어 블록이 요구된다.
본 발명에서는, 종래의 단일 파이프라인 구조를 갖는 ASIP 방식의 문제점을해결하고자, 범용 명령어와 프리미티브 명령어를 병렬적으로 다중 이슈하여 범용 명령어 실행 유닛과 프리미티브 명령어 실행 유닛의 현재 가용성을 조사하고, 각 명령어 간의 데이터 종속성을 조사하여 비순차적으로 명령어를 실행할 수 있다.
이하, 본 발명에 따른 프리미티브 명령어에 관하여 더욱 상세히 설명한다.
일반적인 C 기반의 소프트웨어 비디오 코덱 등은 함수 기반으로 설계되어 있기 때문에 연산 트리 그래프를 작성할 수 있으며, 프로파일링을 통하여 연산 트리 그래프의 세부 노드를 완성할 수 있다.
일반적인 소프트웨어 코덱은 순차적으로 상위 함수가 하위 함수를 호출하는 구조로 구성된다. 즉, 하위 함수를 포함하는 부모 함수로부터 하위 함수를 갖지 않는 최하위 자식 함수까지의 계층적 구조로 분해할 수 있다.
노드의 호출 횟수와 연산량을 분석하는 프로파일링 후, 임의의 함수는 {Calls, Node_Complexity}를 원소로 하는 노드로 정의할 수 있다.
상기 Calls는 노드가 전체 프로그램에서 몇 번 호출되었는가를 나타내는 척도(measure)이고, Node_Complexity는 노드가 한 번 호출될 때 해당 노드를 포함한 모든 하위 노드의 연산량을 의미한다. 특히, Node_Complexity는 해당 노드를 프리미티브 명령어로 정의한 후, 성능 향상의 정도를 예측하거나 하드웨어의 설계 비용을 나타내는 척도로 사용할 수 있다.
본 발명에 따른 프로파일링은 주로 소프트웨어의 최적화를 위해 사용되는 방법으로서, 많은 시간이 걸리는 핫 스팟(Hot Spot)을 찾아내기 위해 사용되는 방법 중 하나이다. 기존의 Vtune과 같은 프로파일러들은 명령어 기반으로 성능을 측정하기 때문에, 여러 개의 스칼라 인스트럭션의 조합으로 새롭게 정의되는 프리미티브 명령어 단위는 측정이 어렵다.
그 다음, 완성된 연산 트리 그래프로부터 프리미티브 명령어를 정의할 목표 노드를 결정하며, 결정한 목표 노드 내에서 클러스터링(Clustering)과 리파인먼트(Refinement) 작업을 통해 프리미티브 명령어를 결정한다.
하드웨어/소프트웨어 통합 설계에 의하여 원하는 성능 향상도를 정확하게 획득하기 위해서는 작성된 연산 트리 그래프에서 프리미티브 명령어로 정의할 노드를 적절하게 결정해야 한다. 즉, 프리미티브 명령어로 정의했을 때, 불필요한 하드웨어 비용을 지불하지 않기 위해서 향상도가 지나치게 크거나 작지 않도록 결정해야 한다.
따라서 상술한 프로파일링 후, 얻어지는 전체 연산량과 각 노드의 {Calls, Node_Complexity} 정보를 이용해 해당 노드 내에 프리미티브 명령어가 정의되었을 때, 성능 향상의 정도를 예측하여 목표 노드를 결정한다.
다음의 [수학식 1]에 의해 현재의 상황을 기준으로 n배의 성능 향상을 달성하기 위해 추가적으로 필요한 향상도 Gest를 예측한다.
Figure 112008004523253-pat00001
상기 [수학식 1]에서, T는 프리미티브 명령어를 정의하기 전 소프트웨어의 초기 전체 연산량을 의미한다. 또한, n'은 이전 단계에서 달성한 성능 향상도로서, 이전 단계에서 프리미티브 명령어를 정의함으로써 변화된 전체 연산량 T'를 이용하여 다음의 [수학식 2]와 같이 정의된다.
Figure 112008004523253-pat00002
그리고 나서, 추가적으로 필요한 향상도 Gest와, 프리미티브 명령어로 변경한 결과 획득할 수 있는 노드의 향상도를 비교하여 목표 노드를 결정하기 위한 노드 향상도를 예측한다.
상술한 바와 같이, 연산 트리 그래프에서 Node_Complexity는 한 번 호출될 때 해당 노드를 포함한 모든 하위 노드의 연산량을 의미하기 때문에 해당 노드를 프리미티브 명령어로 정의할 때 Node_Complexity는 한 번의 호출 당 감소시킬 수 있는 최대 연산량을 의미하게 된다. 또한 Calls는 해당 노드가 전체 프로그램에서 호출된 횟수를 의미하기 때문에, Node_Complexity X Calls는 전체 프로그램에서 감소시킬 수 있는 최대 연산량을 의미하게 된다.
하드웨어 디자이너가 프리미티브 명령어를 어떻게 설계하는가에 따라서 한 번 호출 시 예측 수행 사이클(Estimated Primitive Instruction Execution Cycles)을 정의할 수 있는데, 이를 P라고 정의한다. 이때, Calls X P 는 프리미티브 명령어로 변경하는 경우, 증가하는 전체 연산량에 해당한다.
따라서, 하나의 노드 A를 프리미티브 명령어로 변경하는 경우, 획득할 수 있는 노드 A의 성능 향상도 GA는 다음의 [수학식 3]과 같이 예측할 수 있다.
Figure 112008004523253-pat00003
상기 [수학식 3]에서, ACalls는 노드 A의 Calls를 나타내며, ANC는 노드 A의 Node_Complexity를 나타내고, AP는 노드 A를 프리미티브 명령어로 정의할 때, 설계하고자 하는 목표 수행 사이클을 나타낸다.
상기 [수학식 1]과 [수학식 3]을 이용하여 연산 트리 그래프의 후보 노드 중 목표 노드를 적절히 선택할 수 있도록 다음의 [수학식 4]와 같은 판별식을 정의한다.
Figure 112008004523253-pat00004
상기 [수학식 4]를 이용하여, 목표 노드의 향상도 GA가 추가적으로 필요한 향상도 Gest보다 큰지를 판단한다. 판단 결과, 상기 [수학식 4]에서의
Figure 112008004523253-pat00005
의 경우와 같이 목표 노드의 향상도 GA가 추가적으로 필요한 향상도 Gest보다 큰 경우 연산 트리 그래프의 자식 노드를 갖지 않는 모든 최하위 자식 노드에 대해서
Figure 112008004523253-pat00006
의 조건을 만족하는 노드 중 가장 작은 향상도를 갖는 노드를 목표 노드로 선택한다. 상기 [수학식 4]에서의
Figure 112008004523253-pat00007
의 경우는 프리미티브 명령어의 결정 후, n배의 성능 향상을 달성할 가능성이 높기 때문이다.
상기 판단 결과, 상기 [수학식 4]에서의
Figure 112008004523253-pat00008
의 경우와 같이 목표 노드의 향상도 GA가 추가적으로 필요한 향상도 Gest보다 작거나 동일한 경우에는 연산 트리 그래프의 모든 최하위 노드에 대해서
Figure 112008004523253-pat00009
의 조건을 만족하는 노드 중 가장 높은 향상도를 갖는 노드를 목표 노드로 선택한다.
상기 [수학식 4]에서의
Figure 112008004523253-pat00010
의 경우는 n 배의 성능 향상을 달성할 가능성이 거의 없기 때문이다. 판별 순서는 모든 최하위 노드에 대해서
Figure 112008004523253-pat00011
의 조건을 만족하는 노드가 존재하지 않으면
Figure 112008004523253-pat00012
의 조건으로 판별하는 순서를 취한다.
결정된 목표 노드에 대한 프리미티브 명령어 결정 과정은 크게 여러 명령어를 하나의 블록 단위로 생성하는 클러스터링 과정과 생성된 블록을 C 레벨에서 적당한 단위로 구분하기 위한 리파인먼트 과정의 두 과정으로 구성된다.
클러스터링 과정은 명령어 단위에서 호출 횟수가 동일한 명령어를 브랜치 단위로 분리해 기본 블록(Basic Block)을 생성하는 과정이다. 일반적으로 연산량 집약적(Computation-intensive)인 프로그램의 경우 특정 명령어들의 집합들이 반복적으로 수행되기 때문에 여러 개의 의미 있는 기본 블록들을 생성할 수 있다.
여러 명령어의 조합으로 이루어진 기본 블록은 레벨 0의 프리미티브 명령어로 정의될 수 있지만, 하나의 블록의 결과가 다시 다른 블록에 영향을 주는 폐 루프(Closed Loop Flow)를 형성하게 되면, 상위 레벨에서 블록들을 묶어 새로운 기본 블록을 생성하여 레벨 1의 프리미티브 명령어로 정의한다.
그러나, 명령어를 수행하기 위해 초기 셋업 과정에 해당하는 기본 블록이 존재할 수 있으므로, 대응되는 C 코드를 살펴본 후, 리파인먼트(Refinement) 과정을 거쳐 최종적으로 프리미티브 명령어를 결정한다.
따라서 여러 개의 폐 루프가 생성되면 결정된 프리미티브 명령어는 하나의 노드 내에서 여러 개가 가능하며, 비용 비교 과정 중에 목표값을 만족하지 못해 프리미티브 명령어 결정 과정을 반복하게 되는 경우, 프리미티브 명령어를 기본 블록으로 간주하고 클러스터링과 리파인먼트 과정을 다시 수행해 더 큰 단위로 프리미티브 명령어를 재정의한다.
만일 결정된 목표 노드가 상기 [수학식 4]에서의
Figure 112008004523253-pat00013
의 경우에 해당하면, 노 드 자체를 프리미티브 명령어로 정의하더라도 n배의 성능 향상을 달성할 수 없으므로, 클러스터링 과정에서 목표 노드 자체를 프리미티브 명령어로 정의한다.
결정된 프리미티브 명령어는 소프트웨어 비디오 코덱 등에 여러 스칼라 인스트럭션의 조합으로 이루어진 특정 블록을 대체하는 새로운 명령어로 사용된다.
프리미티브 명령어의 사용은 그것의 하드웨어의 설계에 따라 연산량이 달라지게 되지만, 범용 프로세서의 연산량보다는 작기 때문에 결과적으로 전체 연산량의 감소를 가져오게 된다. 위의 과정을 통해 결정된 프리미티브 명령어는 소프트웨어의 블록을 대체하게 되고 목표값을 달성하기 위한 비용 비교 과정을 거쳐 최종적인 프리미티브 명령어 세트를 얻게 된다.
결정된 프리미티브 명령어에 대해서는 비용 함수를 비교하여 미리 설정된 하드웨어/소프트웨어 통합 설계의 목표값을 만족하는지를 판단하게 되는데, 목표값을 만족하는 경우 프리미티브 명령어를 확정한다. 목표값을 만족하지 못하는 경우에는 목표값을 만족할 때까지 상술한 과정들을 반복한다.
상기 비용 비교 과정은 기존 소프트웨어보다 n배 이상의 성능 향상을 만족하기 위해서 결정된 프리미티브 명령어 세트가 적절히 결정되었나를 판별하는 과정으로, 판별 여부에 따른 반복 횟수에 따라 프리미티브 명령어의 크기와 수행 사이클이 결정된다.
만일 소프트웨어의 초기 전체 연산량을 T라고 정의하면, 프리미티브 명령어 로 변화된 모든 노드들의 속도 향상 이득을 합쳐 전체 이득 GT를 계산하여 다음의 [수학식 6]을 통해 비교한다. 프리미티브 명령어로 변화된 모든 노드들의 속도 향상 이득은 다음의 [수학식 5]와 같이 정의한다. [수학식 6]을 만족할 때, 프리미티브 명령어로 변화된 모든 노드들을 n배의 성능 향상을 위한 프리미티브 명령어 세트로 정의하고 반복 과정을 종료한다.
Figure 112008004523253-pat00014
Figure 112008004523253-pat00015
상기 [수학식 5]에서, k는 프리미티브 명령어로 변화된 노드의 총 개수를 나타낸다.
이하, 본 발명의 일실시예에 따른 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템에 관하여 도 2를 참조하여 설명한다.
도 2는 본 발명의 일실시예에 따른 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템에 관한 전체 구성도이다.
상기 도 2에 도시된 바와 같이, 본 발명의 일실시예에 따른 하드웨어/소프트 웨어 통합 설계 기반의 스케줄링 시스템은 명령어 캐시 메모리(10), 명령어 패치 모듈(20), 명령어 디스패치 모듈(30), 명령어 큐 모듈(40), 메모리관련 명령어 버퍼(50), 레지스터관련 명령어 버퍼(60), 명령어 스케줄러 모듈(70) 및 데이터 캐시 메모리(80)를 포함하며, 범용 명령어 실행유닛, 프리미티브 명령어 실행유닛, 범용 레지스터 파일, 프리미티브 레지스터 파일 및 메모리 접근 유닛을 포함한다.
상기 명령어 캐시 메모리(10)는 명령어 캐시를 저장한다.
또한, 상기 명령어 패치 모듈(20)은 상기 명령어 캐시 메모리(10)로부터 명령어를 패치한다.
이때, 버스의 넓이는 모든 명령어에 있어서 하나의 클록당 다중 패치가 가능하도록 설계하는 것이 바람직하다.
또한, 상기 명령어 디스패치 모듈(30)은 상기 명령어 큐 모듈(40)에 저장된 명령어를 판독한다.
마찬가지로, 버스는 다중으로 명령어를 이동시킬 수 있도록 충분한 넓이로 설계하는 것이 바람직하다.
또한, 상기 명령어 큐 모듈(40)은 상기 명령어 패치 모듈(20)이 상기 명령어 캐시 메모리(10)로부터 패치한 명령어를 저장한다.
또한, 상기 메모리관련 명령어 버퍼(50)는 상기 명령어 디스패치 모듈(30)이 판독한 명령어 중 메모리 관련 명령어를 저장하며, 메모리 관련 명령어를 실행한 결과를 저장하여 원래의 실행 순서대로 재정렬한다.
또한, 상기 레지스터관련 명령어 버퍼(60)는 상기 명령어 디스패치 모듈(30) 이 판독한 명령어 중 범용 명령어 관련 연산 또는 상기 프리미티브 명령어 관련 연산 정보를 저장하며, 범용 명령어 또는 프리미티브 명령어를 실행한 결과를 저장하여 원래의 실행 순서대로 재정렬한다. 재정렬된 결과는 범용 레지스터 파일 또는 프리미티브 레지스터 파일에 저장한다.
또한, 상기 명령어 스케줄러 모듈(70)은 상기 메모리관련 명령어 버퍼(50)에 저장되어 있는 명령어 간의 데이터 의존도(Dependency)를 조사하여 명령어 순서를 비순차적으로 재배치한다. 이에 의해, 데이터 의존도 때문에 명령어가 실행되지 못하는 경우를 방지할 수 있다. 재배치된 메모리 관련 명령어는 상기 메모리 접근 유닛이 아무런 작업을 하지 않는 유휴 상태일 때 실행된다.
아울러, 상기 명령어 스케줄러 모듈(70)은 상기 레지스터관련 명령어 버퍼(60)에 저장되어 있는 연산 정보에 대하여 데이터 의존도를 조사하여 상술한 바와 같이 명령어 순서를 비순차적으로 재배치함으로써, 데이터 의존도 때문에 명령어가 실행되지 못하는 경우를 방지한다.
상기 연산 정보에 대하여 재배치된 명령어는 범용 명령어 실행 유닛 또는 프리미티브 명령어 실행 유닛이 유휴 상태일 때 각 실행 유닛을 이용하여 실행된다.
그리고, 상기 데이터 캐시 메모리(80)는 메모리 관련 명령어가 실행되어 상기 메모리관련 명령어 버퍼(50)에 의해 순서대로 재정렬된 결과를 메모리 접근 유닛을 이용하여 저장한다. 상기 데이터 캐시 메모리(80)에 저장된 정보는 범용 레지스터 파일 또는 프리미티브 레지스터 파일에 저장할 수도 있다.
이하, 본 발명의 일실시예에 따른 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 방법에 관하여 도 3을 참조하여 설명한다.
도 3은 본 발명의 일실시예에 따른 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 방법에 관한 전체 흐름도이다.
상기 도 3에 도시된 바와 같이, 상기 명령어 패치 모듈(20)이 상기 명령어 캐시 메모리(10)로부터 명령어를 패치하여 상기 명령어 큐 모듈(40)에 저장한다(S2).
다음으로, 상기 명령어 디스패치 모듈(30)이 상기 명령어 큐 모듈(40)에 저장된 명령어를 판독하여 메모리 관련 명령어는 상기 메모리관련 명령어 버퍼(50)에 저장하고, 범용 명령어 관련 연산 또는 프리미티브 명령어 관련 연산 정보는 상기 레지스터관련 명령어 버퍼(60)에 저장한다(S4).
다음으로, 상기 명령어 스케줄러 모듈(70)이 상기 메모리관련 명령어 버퍼(50)에 저장된 명령어 또는 상기 레지스터관련 명령어 버퍼(60)에 저장된 연산 정보 간의 데이터 의존도를 조사하여 상술한 바와 같이 명령어 순서를 비순차적으로 재배치한다(S6).
다음으로, 재배치된 명령어를 실행하며 실행한 결과를 다시 상기 메모리관련 명령어 버퍼(50) 또는 상기 레지스터관련 명령어 버퍼(60)에 저장하고 원래의 실행 순서대로 재정렬한다(S8).
재배치된 메모리 관련 명령어는 상기 메모리 접근 유닛이 유휴 상태일 때 실행하며, 재배치된 범용 명령어 또는 프리미티브 명령어는 상기 범용 명령어 실행 유닛 또는 프리미티브 명령어 실행 유닛이 유휴 상태일 때 실행한다.
마지막으로, 재정렬된 상기 메모리 관련 명령어의 실행 결과를 상기 데이터 캐시 메모리(80)에 저장하며, 재정렬된 상기 범용 명령어 또는 프리미티브 명령어의 실행 결과를 상기 범용 레지스터 파일 또는 프리미티브 레지스터 파일에 저장한다(S10).
이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것이 아니며, 기술적 사상의 범주를 일탈함이 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주되어야 할 것이다.
도 1은 일반적인 C 언어 및 범용 명령어와 본 발명의 일실시예에 따른 프리미티브 명령어에 관한 예시도.
도 2는 본 발명의 일실시예에 따른 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템에 관한 전체 구성도.
도 3은 본 발명의 일실시예에 따른 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 방법에 관한 전체 흐름도.

Claims (6)

  1. 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템에 있어서,
    명령어 캐시를 저장하는 명령어 캐시 메모리(10);
    상기 명령어 캐시 메모리(10)로부터 명령어를 패치하는 명령어 패치 모듈(20);
    상기 명령어 패치 모듈(20)이 상기 명령어 캐시 메모리(10)로부터 패치한 명령어를 저장하는 명령어 큐 모듈(40);
    상기 명령어 큐 모듈(40)에 저장된 명령어를 판독하는 명령어 디스패치 모듈(30);
    상기 명령어 디스패치 모듈(30)이 판독한 명령어 중 메모리 관련 명령어를 저장하며, 메모리 관련 명령어를 실행한 결과를 저장하여 원래의 실행 순서대로 재정렬하는 메모리관련 명령어 버퍼(50);
    상기 명령어 디스패치 모듈(30)이 판독한 명령어 중 범용 명령어 관련 정보 또는 프리미티브 명령어 관련 정보를 저장하며, 상기 범용 명령어 또는 프리미티브 명령어를 실행한 결과를 저장하여 원래의 실행 순서대로 재정렬하는 레지스터관련 명령어 버퍼(60); 및
    상기 메모리관련 명령어 버퍼(50)에 저장되어 있는 명령어 또는 상기 레지스터관련 명령어 버퍼(60)에 저장되어 있는 정보 사이의 데이터 의존도(Dependency)를 조사하여 명령어 순서를 비순차적으로 재배치하는 명령어 스케줄러 모듈(70);을 포함하는 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템.
  2. 제 1 항에 있어서,
    상기 메모리관련 명령어 버퍼(50)에 의해 재정렬된 결과를 메모리 접근 모듈을 이용하여 저장하는 데이터 캐시 메모리(80);를 더 포함하는 것을 특징으로 하는 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템.
  3. 제 1 항에 있어서,
    상기 레지스터관련 명령어 버퍼(60)에 의해 재정렬된 결과를 저장하는 범용 레지스터 파일 또는 프리미티브 레지스터 파일을 더 포함하는 것을 특징으로 하는 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템.
  4. 제 1 항에 있어서,
    상기 메모리 관련 명령어는 메모리 접근 유닛이 유휴 상태일 때 실행하며, 상기 범용 명령어 또는 프리미티브 명령어는 범용 명령어 실행 유닛 또는 프리미티브 명령어 실행 유닛이 유휴 상태일 때 실행하는 것을 특징으로 하는 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템.
  5. 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 방법에 있어서,
    (a) 명령어 패치 모듈(20)이 명령어 캐시 메모리(10)로부터 명령어를 패치하여 명령어 큐 모듈(40)에 저장하는 단계;
    (b) 명령어 디스패치 모듈(30)이 상기 명령어 큐 모듈(40)에 저장된 명령어를 판독하여 메모리 관련 명령어는 메모리관련 명령어 버퍼(50)에 저장하고, 범용 명령어 관련 정보 또는 프리미티브 명령어 관련 정보는 레지스터관련 명령어 버퍼(60)에 저장하는 단계;
    (c) 명령어 스케줄러 모듈(70)이 상기 메모리관련 명령어 버퍼(50)에 저장된 명령어 또는 상기 레지스터관련 명령어 버퍼(60)에 저장된 정보 간의 데이터 의존도(Dependency)를 조사하여 명령어 순서를 비순차적으로 재배치하는 단계;
    (d) 재배치된 명령어를 실행하며 실행한 결과를 상기 메모리관련 명령어 버퍼(50) 또는 상기 레지스터관련 명령어 버퍼(60)에 저장하고 원래의 실행 순서대로 재정렬하는 단계; 및
    (e) 재정렬된 상기 메모리 관련 명령어의 실행 결과는 데이터 캐시 메모리(80)에 저장하며, 재정렬된 상기 범용 명령어 또는 프리미티브 명령어의 실행 결과는 범용 레지스터 파일 또는 프리미티브 레지스터 파일에 저장하는 단계;를 포함하는 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 방법.
  6. 제 5 항에 있어서,
    상기 (d) 단계의 재배치된 명령어가 메모리 관련 명령어인 경우 메모리 접근 유닛이 유휴 상태일 때 실행하며, 상기 (d) 단계의 재배치된 명령어가 범용 명령어 또는 프리미티브 명령어인 경우 범용 명령어 실행 유닛 또는 프리미티브 명령어 실행 유닛이 유휴 상태일 때 실행하는 것을 특징으로 하는 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 방법.
KR1020080005843A 2008-01-18 2008-01-18 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법 KR100924383B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080005843A KR100924383B1 (ko) 2008-01-18 2008-01-18 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080005843A KR100924383B1 (ko) 2008-01-18 2008-01-18 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법

Publications (2)

Publication Number Publication Date
KR20090079688A KR20090079688A (ko) 2009-07-22
KR100924383B1 true KR100924383B1 (ko) 2009-10-30

Family

ID=41290846

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080005843A KR100924383B1 (ko) 2008-01-18 2008-01-18 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법

Country Status (1)

Country Link
KR (1) KR100924383B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415420B1 (en) 1999-04-30 2002-07-02 Incentia Design Systems, Inc. Synthesizing sequential devices from hardware description languages (HDLS)
KR20050064281A (ko) * 2003-12-23 2005-06-29 한국전자통신연구원 애플리케이션 특수 명령어 세트 프로세서 합성 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415420B1 (en) 1999-04-30 2002-07-02 Incentia Design Systems, Inc. Synthesizing sequential devices from hardware description languages (HDLS)
KR20050064281A (ko) * 2003-12-23 2005-06-29 한국전자통신연구원 애플리케이션 특수 명령어 세트 프로세서 합성 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문

Also Published As

Publication number Publication date
KR20090079688A (ko) 2009-07-22

Similar Documents

Publication Publication Date Title
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US7526634B1 (en) Counter-based delay of dependent thread group execution
WO2006115635A2 (en) Automatic configuration of streaming processor architectures
JP5611756B2 (ja) プログラム・フロー制御
JP2019079530A (ja) マルチスレッドプロセッサでのタスクのスケジューリング
JP2005531848A (ja) 再構成可能なストリーミングベクトルプロセッサ
US10268519B2 (en) Scheduling method and processing device for thread groups execution in a computing system
KR20090045944A (ko) 종속 명령 스레드 스케줄링
US10318261B2 (en) Execution of complex recursive algorithms
Wang et al. Ant colony optimizations for resource-and timing-constrained operation scheduling
KR20160065145A (ko) 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법
CN114217966A (zh) 基于资源调整的深度学习模型动态批处理调度方法和系统
US11669366B2 (en) Reduction of a number of stages of a graph streaming processor
Li et al. Efficient algorithms for task mapping on heterogeneous CPU/GPU platforms for fast completion time
CN115860066A (zh) 一种基于批处理的神经网络推理流水线复用的方法
US8041551B1 (en) Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
CN108021563B (zh) 一种指令间数据依赖的检测方法和装置
Breß et al. Self-Tuning Distribution of DB-Operations on Hybrid CPU/GPU Platforms.
KR100924383B1 (ko) 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법
US20010039610A1 (en) Data processing device, method of operating a data processing device and method for compiling a program
KR20150040663A (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
US7426628B2 (en) Run-time node prefetch prediction in dataflow graphs
JP3759729B2 (ja) スペキュレーティブ・レジスタの調整
Ammari et al. Multiprocessor platform-based design for multimedia
US11416261B2 (en) Group load register of a graph streaming processor

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: 20121011

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee