KR20050112890A - 아키텍쳐 시뮬레이터에서의 명령 디코딩 방법 - Google Patents

아키텍쳐 시뮬레이터에서의 명령 디코딩 방법 Download PDF

Info

Publication number
KR20050112890A
KR20050112890A KR1020040038327A KR20040038327A KR20050112890A KR 20050112890 A KR20050112890 A KR 20050112890A KR 1020040038327 A KR1020040038327 A KR 1020040038327A KR 20040038327 A KR20040038327 A KR 20040038327A KR 20050112890 A KR20050112890 A KR 20050112890A
Authority
KR
South Korea
Prior art keywords
decoding
instructions
codes
flat
program
Prior art date
Application number
KR1020040038327A
Other languages
English (en)
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 KR1020040038327A priority Critical patent/KR20050112890A/ko
Priority to US11/081,997 priority patent/US7457738B2/en
Publication of KR20050112890A publication Critical patent/KR20050112890A/ko

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 시뮬레이션 명령들을 디코딩하기 위해서, 출현 빈도가 높은 하나 또는 그 이상의 명령들에 대한 플랫 방식 디코딩 코드를 포함하는 새로운 디코딩 프로그램을 작성하고, 상기 새로운 디코딩 프로그램으로 상기 명령들을 디코딩한다. 새로운 디코딩 프로그램은 출현 빈도가 높은 명령들에 대한 플랫 방식 디코딩 코드들과 트리 방식 디코딩 코드들을 포함한다.

Description

아키텍쳐 시뮬레이터에서의 명령 디코딩 방법{INSTRUCTION DECODING METHOD IN AN ARCHITENCTURAL SIMULATOR}
본 발명은 아키텍쳐 시뮬레이터(architectural simulator)에 관한 것으로, 좀 더 구체적으로는 아키텍쳐 시뮬레이터에서의 명령 디코딩 방법에 관한 것이다.
새로운 칩의 개발 과정은 일반적으로 하드웨어의 설계, 최적화 그리고 제작 단계로 나누어진다. 칩의 시뮬레이션은 이러한 각 단계에서 설계된 칩의 동작을 검증하고 칩의 최적화를 위한 벤치마킹을 수행하는데 이용되며, 칩이 제작된 후 어플리케이션 프로그램의 작성에도 이용된다.
이와 같은 시뮬레이션을 위한 하드웨어 기술 언어(Hardware Description Language; HDL)는 낮은 레벨(low level)의 언어로 작성된다.
일반적으로, 시뮬레이터에서 명령(instruction)을 디코딩하는 데에는 많은 시간이 소요된다. 그러므로, 명령 디코딩 시간을 줄인다면 시뮬레이션 전체 시간을 단축시킬 수 있다.
따라서 본 발명의 목적은 디코딩 속도가 향상된 명령 디코딩 방법을 제공하는데 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 일 특징에 의하면, 시뮬레이션 명령들을 디코딩하는 방법은: 출현 빈도가 높은 하나 또는 그 이상의 명령들에 대한 플랫 방식 디코딩 코드를 포함하는 새로운 디코딩 프로그램을 작성하는 단계, 그리고 상기 새로운 디코딩 프로그램으로 상기 명령들을 디코딩하는 단계를 포함한다.
바람직한 실시예에 있어서, 상기 새로운 디코딩 프로그램은 상기 출현 빈도가 높은 명령들에 대한 플랫 방식 디코딩 코드들과 트리 방식 디코딩 코드들을 포함한다.
이 실시예에 있어서, 상기 명령들을 디코딩하는 단계는, 상기 플랫 방식 디코딩 코드들에 의해 우선 디코딩된다.
본 발명의 다른 특징에 의하면, 시뮬레이션 명령들을 디코딩하는 방법은:트리 방식 디코딩 코드들을 이용하여 상기 명령들을 디코딩하면서 각 명령의 출력 빈도를 카운트하는 단계와, 상기 카운트된 출현 빈도에 근거해서 출현 빈도가 높은 하나 또는 그 이상의 명령들에 대한 플랫 방식 디코딩 코드를 포함하는 새로운 디코딩 프로그램을 작성하는 단계, 그리고 상기 새로운 디코딩 프로그램으로 상기 명령들을 디코딩하는 단계를 포함한다.
이 실시예에 있어서, 상기 새로운 디코딩 프로그램은, 상기 출현 빈도가 높은 명령들에 대한 플랫 방식 디코딩 코드들과 상기 트리 방식 디코딩 코드들을 포함한다.
이 실시예에 있어서, 상기 카운트 단계는, 소정 시간동안, 상기 트리 방식 디코딩 코드들을 이용하여 상기 명령들 중 일부를 디코딩하면서 각 명령의 출현 횟수를 카운트하는 단계를 포함한다.
이 실시예에 있어서, 상기 새로운 디코딩 프로그램으로 상기 명령들을 디코딩하는 단계는, 상기 트리 방식 코드에 의해서 디코딩된 명령들을 제외한 나머지 명령들을 상기 플랫 방식 디코딩 코드들에 의해 우선 디코딩하는 단계를 포함한다.
이 실시예에 있어서, 상기 나머지 명령들 중 상기 플랫 방식 디코딩 코드들에 의해서 디코딩되지 않은 명령은 상기 트리 방식 디코딩 코드들에 의해서 디코딩된다.
본 발명의 다른 특징에 의하면: 시뮬레이션 명령들을 디코딩하는 방법은: 출현 빈도가 높은 명령들에 대한 디코딩을 위한 플랫 방식 디코딩 프로그램과 출현 빈도가 낮은 나머지 명령들에 대한 트리 방식 디코딩 프로그램을 포함하는 새로운 디코딩 프로그램을 이용하여 상기 명령들을 디코딩하는 단계를 포함한다.
바람직한 실시예에 있어서, 상기 명령들은 상기 플랫 방식 디코딩 프로그램에 의해 우선 디코딩된다.
이 실시예에 있어서, 상기 명령들 중 상기 플랫 방식 디코딩 프로그램에 의해 디코딩되지 않은 명령은 상기 트리 방식 디코딩 프로그램에 의해 디코딩된다.
(실시예)
이하 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.
일반적으로 명령은 오퍼레이션 코드(operation code)와 오퍼랜드(operand)를 포함한다. 본 명세서에서는 오퍼레이션 코드가 상위 8 비트이고, 오퍼랜드가 하위 20 비트인 28 비트 명령을 일 예로서 설명한다. 그러나, 명령, 오퍼레이션 코드 및 오퍼랜드 각각의 크기는 다양하게 변경될 수 있다.
명령 디코딩 방식(오퍼레이션 코드 디코딩 방식)은 크게 트리(tree) 방식과 플랫(flat) 방식으로 구분된다. 도 1은 트리 방식의 디코딩을 보여주고 있고, 도 2는 트리 방식 디코딩 코드의 일 예를 보여주고 있다.
트리 방식은, 오퍼레이션 코드의 최상위 비트(B[27])부터 최하위 비트(B[20])까지 순차적으로 디코딩해서 오퍼레이션 코드(B[27:20])가 어떤 명령을 알아내는 방식이다. 이와 같은 트리 방식은 오퍼레이션 코드(B[27:20])를 1비트씩 순차적으로 디코딩해야 하므로 디코딩 시간이 길다는 단점이 있다.
도 3은 플랫 방식 디코딩 프로그램의 일 예를 보여주고 있다. 플랫 방식은 오퍼레이션 코드(B[27:20])의 전체 비트들을 한 번에 명령 코드와 비교하는 방식이다. 플랫 방식 디코딩 프로그램은 모든 명령들에 대한 디코딩 코드를 저장해야 하므로 메모리를 많이 차지하는 단점이 있으나, 디코딩 속도가 빠르다는 장점이 있다.
그러므로, 본 발명은 디코딩 코드를 증가를 최소화하면서도 디코딩 속도가 향상된 새로운 디코딩 프로그램을 제안한다. 본 발명의 디코딩 프로그램은 트리 방식과 플랫 방식을 혼합한 새로운 형태이다.
도 4는 대한민국공개특허 2001-55517호에서 개시하고 있는 마이크로프로세서에서 응용프로그램의 수행시 사용되는 명령어 집합(instruction set)의 빈도수에 대한 분석결과를 나타내는 그래프로서, 실제 프로그램 수행시에는 특정한 몇 개의 명령어가 집중적으로 많이 사용되고 있음을 보인다.
도 4를 참조하면, 데이터 이동(load), 조건부 분기(conditional branch), 가산(add), 비교(compare) 및 저장(store) 등의 특정 명령들이 집중적으로 사용되고 있다.
본 발명의 새로운 디코딩 프로그램은 도 4에 도시된 바와 같이 사용 빈도가 높은 특정 명령들은 플랫 방식으로 디코딩하고, 나머지 사용 빈도가 낮은 명령들은 트리 방식으로 디코딩함으로써 디코딩 속도를 향상시킨다.
도 5는 본 발명의 바람직한 실시예에 따른 디코딩 방법의 제어 수순을 보여주는 플로우차트이다. 단계 S100에서, 우선 도 2에 도시된 트리 방식의 디코딩 코드들을 이용하여 소정 시간 동안 시뮬레이션 명령들에 대한 디코딩이 수행된다. 디코딩 과정 중, 각 명령의 출현 횟수가 카운트된다.
단계 S110에서, 출현 빈도가 높은 명령들에 대한 플랫 방식 디코딩 코드들이 작성된다. 작성된 플랫 방식 디코딩 코드들과 도 2에 도시된 트리 방식 디코딩 코드들을 포함하는 본 발명의 바람직한 실시예에 따른 새로운 디코딩 프로그램이 작성된다. 본 발명의 바람직한 실시예에 따른 새로운 디코딩 프로그램의 일 예가 도 6에 도시되어 있다.
단계 S120에서, 시뮬레이션 명령들 중 디코딩되지 않은 나머지 명령들에 대한 플랫 방식 디코딩이 수행된다.
단계 S130에서, 상기 플랫 방식 디코딩 코드들에 의해 디코딩되지 않은 명령은 트리 방식 디코딩 코드들에 의해 디코딩된다.
출현 빈도가 높은 명령들은 사용자에 의해 임의로 설정될 수 있다. 이러한 경우, 단계 S100은 생략되고, 단계 S120에서 출현 빈도가 높은 명령들에 대한 플랫 방식 디코딩 코드들이 선행된 후 트리 방식 디코딩 코드들이 배열된다. 그러므로, 시뮬레이션 명령들은 플랫 방식으로 우선 디코딩되고, 플랫 방식으로 디코딩되지 않을 경우에만 트리 방식으로 디코딩된다.
이와 같은 본 발명의 새로운 디코딩 프로그램은 트리 방식의 디코딩 코드들에, 출현 빈도가 높은 명령들에 대한 플랫 방식 디코딩 프로그램이 부가되어 전체적인 프로그램 크기는 약간 증가하나 디코딩 속도는 현저히 향상된다. 이는 앞서 설명한 도 4에서, 몇몇 명령들의 출현 빈도가 다른 명령들에 비해 월등히 높기 때문이다.
예시적인 바람직한 실시예들을 이용하여 본 발명을 설명하였지만, 본 발명의 범위는 개시된 실시예들에 한정되지 않는다는 것이 잘 이해될 것이다. 오히려, 본 발명의 범위에는 다양한 변형 예들 및 그 유사한 구성들을 모두 포함될 수 있도록 하려는 것이다. 따라서, 청구 범위는 그러한 변형 예들 및 그 유사한 구성들 모두를 포함하는 것으로 가능한 폭넓게 해석되어야 한다.
이와 같은 본 발명에 의하면, 출현 빈도가 높은 명령들을 플랫 방식으로 디코딩함으로써 디코딩 속도가 향상된다.
도 1은 트리 방식의 디코딩을 보여주는 도면;
도 2는 트리 방식 디코딩 코드의 일 예를 보여주는 도면;
도 3은 플랫 방식 디코딩 프로그램의 일 예를 보여주는 도면;
도 4는 마이크로프로세서에서 응용프로그램의 수행시 사용되는 명령어 집합(instruction set)의 빈도수에 대한 분석결과를 나타내는 그래프;
도 5는 발명의 바람직한 실시예에 따른 디코딩 방법의 제어 수순을 보여주는 플로우차트; 그리고
도 6은 본 발명의 바람직한 실시예에 따른 새로운 디코딩 프로그램의 일 예를 보여주는 도면이다.

Claims (11)

  1. 시뮬레이션 명령들을 디코딩하는 방법에 있어서:
    출현 빈도가 높은 하나 또는 그 이상의 명령들에 대한 플랫 방식 디코딩 코드를 포함하는 새로운 디코딩 프로그램을 작성하는 단계; 그리고
    상기 새로운 디코딩 프로그램으로 상기 명령들을 디코딩하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  2. 제 1 항에 있어서,
    상기 새로운 디코딩 프로그램은 상기 출현 빈도가 높은 명령들에 대한 플랫 방식 디코딩 코드들과 트리 방식 디코딩 코드들을 포함하는 것을 특징으로 하는 디코딩 방법.
  3. 제 2 항에 있어서,
    상기 명령들을 디코딩하는 단계는,
    상기 플랫 방식 디코딩 코드들에 의해 우선 디코딩되는 것을 특징으로 하는 디코딩 방법.
  4. 시뮬레이션 명령들을 디코딩하는 방법에 있어서:
    트리 방식 디코딩 코드들을 이용하여 상기 명령들을 디코딩하면서 각 명령의 출력 빈도를 카운트하는 단계와;
    상기 카운트된 출현 빈도에 근거해서 출현 빈도가 높은 하나 또는 그 이상의 명령들에 대한 플랫 방식 디코딩 코드를 포함하는 새로운 디코딩 프로그램을 작성하는 단계; 그리고
    상기 새로운 디코딩 프로그램으로 상기 명령들을 디코딩하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  5. 제 4 항에 있어서,
    상기 새로운 디코딩 프로그램은, 상기 출현 빈도가 높은 명령들에 대한 플랫 방식 디코딩 코드들과 상기 트리 방식 디코딩 코드들을 포함하는 것을 특징으로 하는 디코딩 방법.
  6. 제 5 항에 있어서,
    상기 카운트 단계는,
    소정 시간동안, 상기 트리 방식 디코딩 코드들을 이용하여 상기 명령들 중 일부를 디코딩하면서 각 명령의 출현 횟수를 카운트하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  7. 제 6 항에 있어서,
    상기 새로운 디코딩 프로그램으로 상기 명령들을 디코딩하는 단계는,
    상기 트리 방식 코드에 의해서 디코딩된 명령들을 제외한 나머지 명령들을 상기 플랫 방식 디코딩 코드들에 의해 우선 디코딩하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  8. 제 7 항에 있어서,
    상기 나머지 명령들 중 상기 플랫 방식 디코딩 코드들에 의해서 디코딩되지 않은 명령은 상기 트리 방식 디코딩 코드들에 의해서 디코딩되는 것을 특징으로 하는 디코딩 방법.
  9. 시뮬레이션 명령들을 디코딩하는 방법에 있어서:
    출현 빈도가 높은 명령들에 대한 디코딩을 위한 플랫 방식 디코딩 프로그램과 출현 빈도가 낮은 나머지 명령들에 대한 트리 방식 디코딩 프로그램을 포함하는 새로운 디코딩 프로그램을 이용하여 상기 명령들을 디코딩하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  10. 제 9 항에 있어서,
    상기 명령들은 상기 플랫 방식 디코딩 프로그램에 의해 우선 디코딩되는 것을 특징으로 하는 디코딩 방법.
  11. 제 10 항에 있어서,
    상기 명령들 중 상기 플랫 방식 디코딩 프로그램에 의해 디코딩되지 않은 명령은 상기 트리 방식 디코딩 프로그램에 의해 디코딩되는 것을 특징으로 하는 디코딩 방법.
KR1020040038327A 2004-05-28 2004-05-28 아키텍쳐 시뮬레이터에서의 명령 디코딩 방법 KR20050112890A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040038327A KR20050112890A (ko) 2004-05-28 2004-05-28 아키텍쳐 시뮬레이터에서의 명령 디코딩 방법
US11/081,997 US7457738B2 (en) 2004-05-28 2005-03-16 Method for decoding instruction in architectural simulator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040038327A KR20050112890A (ko) 2004-05-28 2004-05-28 아키텍쳐 시뮬레이터에서의 명령 디코딩 방법

Publications (1)

Publication Number Publication Date
KR20050112890A true KR20050112890A (ko) 2005-12-01

Family

ID=35426893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040038327A KR20050112890A (ko) 2004-05-28 2004-05-28 아키텍쳐 시뮬레이터에서의 명령 디코딩 방법

Country Status (2)

Country Link
US (1) US7457738B2 (ko)
KR (1) KR20050112890A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073763B (zh) * 2010-12-31 2012-09-05 清华大学 基于fpga开发板的全系统模拟加速方法
WO2017009996A1 (ja) * 2015-07-16 2017-01-19 三菱電機株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544067A (en) * 1990-04-06 1996-08-06 Lsi Logic Corporation Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation
US5452239A (en) * 1993-01-29 1995-09-19 Quickturn Design Systems, Inc. Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system
JP2591418B2 (ja) 1993-02-26 1997-03-19 日本電気株式会社 Cpuシミュレータ
US6126329A (en) * 1993-06-08 2000-10-03 Rational Software Coporation Method and apparatus for accurate profiling of computer programs
JPH1083311A (ja) 1996-09-06 1998-03-31 Mitsubishi Electric Corp シミュレータ
JP4158239B2 (ja) 1998-09-08 2008-10-01 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US6446241B1 (en) * 1999-07-15 2002-09-03 Texas Instruments Incorporated Automated method for testing cache
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
KR100324253B1 (ko) 1999-12-10 2002-02-25 윤덕용 마이크로 프로세서를 위한 저전력 인스트럭션 디코딩 방법
US7111282B2 (en) * 2001-06-12 2006-09-19 Hewlett-Packard Development Company, L.P. Instrumenting a software program and collecting data from the instrumented software program by type
US7080365B2 (en) * 2001-08-17 2006-07-18 Sun Microsystems, Inc. Method and apparatus for simulation system compiler
JP2004118518A (ja) * 2002-09-26 2004-04-15 Matsushita Electric Ind Co Ltd シミュレータ、そのシミュレータをコンピュータ読み取り可能に記録した記録媒体
WO2005020292A2 (en) * 2003-08-26 2005-03-03 Nusym Technology, Inc. Methods and systems for improved integrated circuit functional simulation

Also Published As

Publication number Publication date
US7457738B2 (en) 2008-11-25
US20050268289A1 (en) 2005-12-01

Similar Documents

Publication Publication Date Title
US20070208959A1 (en) Instruction conversion apparatus and instruction conversion method providing power control information, program and circuit for implementing the instruction conversion, and microprocessor for executing the converted instruction
KR20150052108A (ko) 패턴 인식 프로세싱 시스템에서의 전력 관리를 위한 방법들 및 시스템들
JP2003050696A (ja) 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
JP4864840B2 (ja) マイクロプロセッサ
GB2308470A (en) Bit-width reduction of processor instructions
Reshadi et al. Hybrid-compiled simulation: An efficient technique for instruction-set architecture simulation
US7228528B2 (en) Building inter-block streams from a dynamic execution trace for a program
CN103064654A (zh) 集成电路、电子系统及提供otp内存配置可更新的方法
KR20050112890A (ko) 아키텍쳐 시뮬레이터에서의 명령 디코딩 방법
EP1680734B1 (en) Method and system for fast access to stack memory
CN108920188B (zh) 一种扩展寄存器堆的方法及装置
US6370638B1 (en) Apparatus and method of computer program control in computer systems using pipeline processing
US8032876B2 (en) Method and apparatus for restructuring a software program hierarchy
KR100308211B1 (ko) 압축 명령을 갖는 마이크로 컴퓨터 시스템
CN100543668C (zh) 信息处理装置及信息处理方法
WO2005119439A3 (en) Retargetable instruction set simulators
US20040243791A1 (en) Processing partial register writes in an out-of-order processor
WO2002023331A3 (en) Remote incremental program binary compatibility verification using api definitions
US20070074186A1 (en) Method and system for performing reassociation in software loops
WO2003098431A3 (en) Method and apparatus for decoding instruction sequences
US8700886B2 (en) Processor configured for operation with multiple operation codes per instruction
TWI683202B (zh) 數位波形訊號產生裝置
JP3381253B2 (ja) シミュレーション装置
JPH02250122A (ja) Cpuシミュレータ
CN116909530A (zh) 一种基于tcl信息传输功能的脚本实现方法

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination