KR20080034020A - 추정장치, 테이블 관리장치, 선택장치, 테이블관리방법, 그 테이블 관리방법을 컴퓨터로 실현시키는프로그램 및 그 프로그램을 기록하는 기록매체 - Google Patents

추정장치, 테이블 관리장치, 선택장치, 테이블관리방법, 그 테이블 관리방법을 컴퓨터로 실현시키는프로그램 및 그 프로그램을 기록하는 기록매체 Download PDF

Info

Publication number
KR20080034020A
KR20080034020A KR1020087005362A KR20087005362A KR20080034020A KR 20080034020 A KR20080034020 A KR 20080034020A KR 1020087005362 A KR1020087005362 A KR 1020087005362A KR 20087005362 A KR20087005362 A KR 20087005362A KR 20080034020 A KR20080034020 A KR 20080034020A
Authority
KR
South Korea
Prior art keywords
branch
basic block
executed
path
entry
Prior art date
Application number
KR1020087005362A
Other languages
English (en)
Other versions
KR100958299B1 (ko
Inventor
노리후미 요시마쓰
마코토 요시다
Original Assignee
자이단호진 후쿠오카켄 산교·가가쿠기쥬츠신코자이단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 자이단호진 후쿠오카켄 산교·가가쿠기쥬츠신코자이단 filed Critical 자이단호진 후쿠오카켄 산교·가가쿠기쥬츠신코자이단
Publication of KR20080034020A publication Critical patent/KR20080034020A/ko
Application granted granted Critical
Publication of KR100958299B1 publication Critical patent/KR100958299B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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
    • 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
    • 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/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

실행된 명령의 이력을 관리하여 이루어지는 핫 패스 검출처리 등에 적합한 추정장치 등을 제공한다. 핫 패스 추정장치1은, 분기명령을 특정하는 분기명령 특정정보, 실행된 각 분기명령의 분기처 어드레스, 분기 횟수 및 실행 빈도 정보를 하나의 엔트리로 하여 각 분기명령 특정정보에는 정해진 수의 엔트리가 대응하는 테이블과, 실행된 분기명령에 관한 정보가 테이블에 저장되어 있지 않으면 새로운 엔트리를 테이블에 추가할지, 테이블의 엔트리의 하나를 치환할지, 실행된 분기명령에 관한 정보를 테이블에 저장하지 않을지를 선택하여 처리하는 이력 관리부11과, 테이블에 의거하여 핫 패스 검색부13에 의해 검색된 명령 패스가 이미 검출된 것이 아닌 경우에 명령 패스를 외부로 출력하는 핫 패스 퀄리파이부7을 구비한다.

Description

추정장치, 테이블 관리장치, 선택장치, 테이블 관리방법, 그 테이블 관리방법을 컴퓨터로 실현시키는 프로그램 및 그 프로그램을 기록하는 기록매체{ESTIMATOR, TABLE MANAGING DEVICE, SELECTING DEVICE, TABLE MANAGING METHOD, PROGRAM FOR ALLOWING COMPUTER TO EXECUTE THE TABLE MANAGING METHOD, AND RECORDING MEDIUM WHERE THE PROGRAM IS RECORDED}
본 발명은, 추정장치(推定裝置), 테이블 관리장치, 선택장치, 테이블 관리방법, 그 테이블 관리방법을 컴퓨터로 실현시키는 프로그램 및 그 프로그램을 기록하는 기억매체에 관한 것으로서, 특히 복수의 분기명령(分岐命令)을 포함하는 명령 패스(命令 path) 중에서 실행되는 빈도가 높은 명령 패스를 추정하는 추정장치 등에 관한 것이다.
프로그램의 실행 중에 실행 빈도가 높은 루프 구조의 패스(이하에서는 「핫 패스(hot-path)」라고 한다)를 고정밀도로 추정하는 장치로서, 예를 들면 특허문헌1에 기재된 것이 알려져 있다. 도13∼도15를 참조하여 특허문헌1에 기재된 추정장치의 개요를 설명한다.
도13은, 특허문헌1에 기재된 핫 패스 추정장치101의 개략적인 블럭도이다. 핫 패스 추정장치101은, 하드웨어 어시스트부(hardware assist部 ; HW 어시스트부)105와 소프트웨어 프로파일러부(software profiler部 ; SW 프로파일러부)107과 버퍼109를 구비한다.
HW 어시스트부105는 테이블을 관리하여, CPU103에 의해 분기명령이 실행된 경우에 테이블에 새롭게 분기명령에 관한 어드레스 정보를 추가하거나 분기명령의 실행 횟수를 카운트하거나 한다. 또한 테이블이나 카운터가 오버플로우(overflow)되었을 경우에는, CPU103에 통지하여 CPU103이 테이블을 버퍼109로 출력하는 처리를 한다.
SW 프로파일러부107은, 버퍼109와 테이블의 합산처리를 하고 BH법에 의거하여 높은 빈도로 반복하여 실행되는 명령열(命令列 ; 핫 패스)을 추정한다. 이 BH법은, 분기명령의 실행에 의해 분기명령의 어드레스, 분기처의 어드레스, 분기된(혹은 분기되지 않은) 횟수 등의 이력(履歷)에 의거하여 핫 패스의 추정을 하는 방법이다.
도14는, 프로세서 코어(processor core)에서 실행되는 기본 블록의 관계와 분기명령의 실행 횟수의 하나의 예를 나타내는 도면이다. 프로그램을 구성하는 명령열은, 프로그램 실행의 흐름을 변경하는 분기명령과 그 이외의 명령으로 구성되어 있다. 그리고 프로그램은, 어드레스순으로 보아 분기명령 이외의 명령과 마지막에 위치하는 분기명령으로 구성되는 블록으로 구분할 수 있고, 이 블록은 기본 블록이라고 불린다. 도14에 있어서 기호 A∼G는 기본 블록을 나타내고, 수치는 분기명령의 분기 횟수를 나타낸다. 도14의 기본 블록의 관계에서는, 기본 블록A, B, C, F의 루프 구조의 패스가 핫 패스로서 검출된다.
도15는, 기본 블록이 도14에 나타낸 관계에 있는 경우에, 도13의 HW 어시스트부105에 의해 관리되는 테이블의 하나의 예를 나타내는 도면이다. 도15에 있어서, BSA는 기본 블록의 시작 어드레스인 기본 블록 시작 어드레스이고, BIA는 분기명령의 어드레스인 분기명령 어드레스이고, BTA는 분기처의 어드레스인 분기처 어드레스이고, COUNT는 분기명령의 실행 횟수이다. 도13의 SW 프로파일러부107은, 도15에 나타낸 테이블과 버퍼109에 의거하여 핫 패스의 추정처리를 한다.
특허문헌1 : 일본국 공개특허공보 특개2005-92532호 공보
[발명이 이루고자 하는 기술적 과제]
그러나 특허문헌1에 기재된 핫 패스 추정장치는, 테이블이나 카운트의 오버플로우에 의해 테이블에 저장된 정보를 버퍼109로 대피시킨다. 그 때문에 큰 용량의 버퍼가 필요하고 또한 CPU103이 버퍼109로의 대피처리를 하기 때문에 CPU103에 있어서의 처리가 중단되게 된다.
또한 테이블의 정보는 버퍼109로 대피되기 때문에, 동일한 분기명령에 관한 정보여도, 대피전의 정보는 버퍼109에서, 대피후의 정보는 테이블에서 각각 관리되고 있거나, 대피가 여러 번 이루어지면 버퍼109 내의 복수의 장소에 기억되어 있을 가능성이 있다. 그 때문에 SW 프로파일러부107에 의해 핫 패스 추정처리가 이루어지는 때에는, 테이블과 버퍼109에 대피된 정보의 합산처리가 필요하였다.
또한 SW 프로파일러부107에 의한 처리는 복잡하기 때문에, 하드웨어에 의한 실현은 곤란하여서 소프트웨어에 의해 실현되고 있었다. 이 처리는 CPU103에 의해 실행되는 경우도 있고, 이러한 경우에는, 테이블 합산처리나 핫 패스 추정처리 때문에도 CPU의 처리가 중단되게 된다.
또한 핫 패스 추정장치101은 검출된 핫 패스를 기억하지만, 같은 핫 패스라도 중복하여 검출되면 중복하여 기억하고 있어서, 검출된 핫 패스를 기억하는 기억영역도 방대하게 필요하였다.
또한 이러한 과제는 핫 패스 추정처리에 한하지 않고, 실행된 명령의 이력을 관리하여 이루어지는 다른 처리에 관해서도 존재하는 것이다.
그래서 본 발명의 목적은, 실행된 명령의 이력을 관리하여 이루어지는 처리의 간소화에 적합한 추정장치, 테이블 관리장치, 선택장치, 테이블 관리방법, 그 테이블 관리방법을 컴퓨터로 실현시키는 프로그램, 그 프로그램을 기록하는 기억매체를 제공하는 것에 있다.
[발명의 구성]
청구항1에 관한 발명은, 복수의 분기명령을 포함하는 명령 패스 중에 실행되는 빈도가 높은 명령 패스를 추정하는 추정장치에 있어서, 분기명령을 특정하는 분기명령 특정정보, 실행된 각 분기명령의 분기처 어드레스, 분기 횟수 및 실행 빈도 정보를 하나의 엔트리로 하는 테이블로서, 상기 각 분기명령 특정정보에는 정해진 수의 엔트리가 대응하는 테이블과, 분기명령이 실행되면, 실행된 분기명령의 분기명령 특정정보 및 실행된 분기명령의 분기처 어드레스가 상기 분기명령 특정정보에 대응하는 엔트리에 저장되어 있을 것인지 아닌지를 판단하여, 저장되어 있지 않으면, 상기 분기명령 특정정보에 대응하는 각 엔트리의 실행 빈도 정보에 의거하여, 상기 분기명령 특정정보 및 상기 분기처 어드레스에 관한 엔트리를 상기 테이블에 추가할지, 상기 테이블의 엔트리의 하나를 상기 분기명령 특정정보 및 상기 분기처 어드레스에 관한 엔트리로 치환할지 또는 상기 분기명령 특정정보 및 상기 분기처 어드레스에 관한 정보를 테이블에 저장하지 않을지를 선택하여 처리하는 이력 관리 수단과, 상기 테이블에 저장된 정보에 의거하여 명령 패스를 검색하는 검색수단과, 상기 검색수단에 의해 검색된 명령 패스가 이미 검출된 것인지 아닌지를 판단하여, 이미 검출된 것이 아닐 때에는 당해 명령 패스를 외부로 출력하는 퀄리파이 수단을 구비하는 것이다.
청구항2에 관한 발명은, 실행되는 명령 패스의 기본 블록에 대하여 실행된 각 실행 기본 블록 및 상기 각 실행 기본 블록의 다음에 실행되는 차기 기본 블록에 관련되는 정보인 기본 블록 실행순서 관련정보를 하나의 엔트리로 하는 테이블을 관리하는 테이블 관리장치에 있어서, 상기 테이블의 엔트리 수는 미리 정해진 수 이하이고, 기본 블록이 실행되면, 실행된 실행 기본 블록 및 상기 실행 기본 블록의 다음에 실행되는 차기 기본 블록에 관련되는 엔트리가 상기 테이블에 등록되어 있는지 아닌지를 판단하고, 등록되어 있지 않으면, 상기 테이블에 저장되어 있는 정보에 의거하여, 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 엔트리를 상기 테이블에 추가할지, 상기 테이블의 엔트리의 하나를 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 엔트리로 치환할지 또는 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 정보를 상기 테이블에 저장하지 않을지 중에 어느 하나를 선택하여 처리를 하는 이력 관리 수단을 구비하는 것이다.
또한 청구항2에 관한 발명으로서, 기본 블록 실행순서 관련정보는, 실행 기본 블록의 시작 어드레스 및 차기 기본 블록의 시작 어드레스를 포함하는 것이어도 좋다. 또한 기본 블록 실행순서 관련정보는 차기 기본 블록의 시작 어드레스를 포함하고, 기본 블록 실행순서 관련정보의 엔트리는 실행 기본 블록의 시작 어드레스에 의거하여 생성되는 인덱스 어드레스에 의해 억세스되는 것이어도 좋다.
청구항3에 관한 발명은, 청구항2의 테이블 관리장치로서, 상기 기본 블록 실행순서 관련정보에는 실행 기본 블록 및 차기 기본 블록의 실행 빈도를 나타내는 실행 빈도 정보가 포함되고 있고, 상기 이력 관리 수단은 기본 블록이 실행되면 상기 테이블에 저장되어 있는 실행 빈도 정보에 의거하여 처리의 선택을 하는 것이다.
청구항4에 관한 발명은, 청구항2 또는 청구항3의 테이블 관리장치로서, 상기 테이블은, 기본 블록 실행순서 관련정보를 하나의 엔트리로 하여 같은 인덱스 어드레스가 주어진 복수의 서브 테이블을 포함하고, 상기 이력 관리 수단은, 실행 기본 블록을 특정하는 정보에 의거하여 생성되는 인덱스 어드레스를 사용하여 상기 서브 테이블의 엔트리에 억세스하는 것이다.
청구항5에 관한 발명은, 복수의 분기명령을 포함하는 명령 패스 중에 실행되는 빈도가 높은 명령 패스를 추정하는 추정장치에 있어서, 실행된 각 분기명령의 분기처 어드레스 및 전회에 실행된 분기명령의 분기처 어드레스인 기본 블록 시작 어드레스와 분기 횟수 및 실행 빈도 정보를 하나의 엔트리로서 저장하는 복수 세트의 분기 이력 테이블로서, 동일한 인덱스 어드레스에 의해 억세스 가능한 복수 세트의 분기 이력 테이블과, 분기명령이 실행되면, 전회에 실행된 분기명령의 분기처 어드레스인 기본 블록 시작 어드레스에 의거하여 생성되는 인덱스 어드레스에 의해 상기 각 분기 이력 테이블의 엔트리를 읽어내고, 읽어낸 엔트리가, 실행된 분기명령의 분기처 어드레스 및 상기 기본 블록 시작 어드레스에 관련되는 것인지의 판단을 하고, 어느 하나의 엔트리가 관련되면 당해 엔트리의 분기 횟수 및 실행 빈도 정보를 갱신하고, 어느 쪽의 엔트리도 관련되지 않으면 읽어낸 엔트리의 실행 빈도 정보에 의거하여 엔트리의 갱신처리를 하는 분기 이력 관리 수단과, 실행된 각 분기명령의 분기처 어드레스와 분기 횟수 및 실행 빈도 정보를 하나의 엔트리로서 저장하는 복수 세트의 리턴 분기 이력 테이블로서, 동일한 인덱스 어드레스에 의해 억세스 가능한 복수 세트의 리턴 분기 이력 테이블과, 분기명령이 실행되면, 실행된 상기 분기명령의 분기처 어드레스가 상기 분기명령의 어드레스보다 작은 경우에, 전회에 실행된 분기명령의 분기처 어드레스인 기본 블록 시작 어드레스에 의거하여 생성되는 인덱스 어드레스에 의해 상기 각 리턴 분기 이력 테이블의 엔트리를 읽어내고, 읽어낸 엔트리가 상기 분기처 어드레스에 관련되는 것인지의 판단을 하고, 어느 하나의 엔트리가 관련되면 당해 엔트리의 분기 횟수 및 실행 빈도 정보를 갱신하는 처리 및 분기 횟수가 임계치보다 크면 패스 검색 처리의 시작을 지시하는 처리를 하고, 어느 쪽의 엔트리도 관련되지 않으면 읽어낸 엔트리의 실행 빈도 정보에 의거하여 엔트리의 갱신처리를 하는 리턴 분기 이력 관리 수단과, 상기 리턴 분기 이력 관리 수단에 의해 패스 검색 처리의 시작이 지시되면 상기 분기 이력 테이블에 저장된 정보에 의거하여 명령 패스를 검색하는 검색수단을 구비한 것이다.
청구항6에 관한 발명은, 검색수단에 의해 검색된 명령 패스를 선택하여 출력하는 선택장치로서, 검색수단에 의해 검색된 명령 패스를 나타내는 패스 특정 정보를 기억하는 기억수단과, 검색수단에 의해 명령 패스가 검색되면, 검색된 명령 패스를 특정하는 패스 특정 정보와 상기 기억수단에 기억된 패스 특정 정보를 비교하는 비교수단과, 상기 비교수단의 비교결과에 의거하여 상기 검색수단에 의해 검색된 명령 패스를 외부로 출력하는 출력수단을 구비하고, 상기 검색된 명령 패스를 나타내는 패스 특정 정보가 상기 기억수단에 기억되어 있지 않으면, 상기 비교수단은 당해 패스 특정 정보를 상기 기억수단에 기억시키고 상기 출력수단은 상기 검색수단에 의해 검색된 명령 패스를 외부로 출력하고, 상기 검색된 명령 패스를 나타내는 패스 특정 정보가 상기 기억수단에 기억되어 있으면, 상기 비교수단은 당해 패스 특정 정보를 상기 기억수단에 기억시키지 않고 상기 출력 수단은 상기 검색수단에 의해 검색된 명령 패스를 외부로 출력하지 않는 것이다.
청구항7에 관한 발명은, 청구항6의 선택장치로서, 상기 명령 패스는 분기명령을 포함하고, 상기 패스 특정 정보는 명령 패스의 분기명령이 실행될 경우와 실행되지 않을 경우를 구별하는 정보를 포함하는 것이다.
청구항8에 관한 발명은, 실행되는 명령 패스의 기본 블록에 대하여 실행된 각 실행 기본 블록 및 상기 각 실행 기본 블록의 다음에 실행되는 차기 기본 블록에 관련되는 정보인 기본 블록 실행순서 관련정보를 하나의 엔트리로 하는 테이블을 관리하는 테이블 관리방법에 있어서, 상기 테이블의 엔트리 수는 미리 정해진 수 이하이고, 기본 블록이 실행되면, 이력 관리 수단이, 실행된 실행 기본 블록 및 상기 실행 기본 블록의 다음에 실행되는 차기 기본 블록에 관련되는 엔트리가 상기 테이블에 등록되어 있는지 아닌지를 판단하고, 등록되어 있지 않으면, 상기 테이블에 저장되어 있는 정보에 의거하여, 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 엔트리를 상기 테이블에 추가할지, 상기 테이블의 엔트리의 하나를 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 엔트리로 치환할지 또는 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 정보를 상기 테이블에 저장하지 않을지 중에 어느 하나를 선택하여 처리를 하는 이력관리 스텝을 포함하는 것이다.
청구항9에 관한 발명은, 청구항8의 테이블 관리방법을 컴퓨터로 실행시키는 것이 가능한 프로그램이다.
청구항10에 관한 발명은, 청구항9의 프로그램을 컴퓨터로 실행하는 것이 가능하게 기록한 기록매체이다.
[발명의 효과]
본원의 각 청구항에 관한 발명에 의하면, 처리에 사용되는 정보가 중요하다고 판단되는 것에 제한되어 있어서, 실행된 명령의 이력을 관리하여 이루어지는 처리의 간소화에 적합하다.
또한 본원의 청구항1 내지 5 및 청구항8 내지 10에 관한 발명에 의하면, 테이블에 저장되는 정보가 한정되어 있어서 버퍼로의 대피처리가 필요하지 않고 합산처리도 필요하지 않다. 그 때문에 CPU와는 다른 하드웨어에 의한 실현이 용이하게 되어 CPU의 처리가 중단되지 않게 된다.
또한 본원의 청구항1, 3, 4 및 5에 관한 발명에 의하면, 갱신 빈도정보를 사용하여 테이블을 관리하기 때문에, 중요성이 높은 정보가 테이블에 저장되어 테이블을 사용한 처리의 정확성의 향상에 적합하다.
또한 본원의 청구항1 및 4에 관한 발명에 의하면, 복수의 테이블을 사용하여 처리를 함으로써, 예를 들면 각 테이블에 대한 처리를 병렬하여 수행하는 등에 의해 처리시간을 단축할 수 있다.
또한 본원의 청구항1, 6 및 7에 관한 발명에 의하면, 검출된 명령 패스 중에 중복되어 검출된 것을 제외하여 외부로 출력하기 때문에, 전송에 관한 오버헤드(overhead)가 줄어들어 기억하는 기억영역이 절약된다.
도1은, 본 발명의 실시예에 관한 핫 패스 추정장치1의 개략적인 블럭도이다.
도2는, 도1의 분기 이력 관리부15에 의해 관리되는 분기 이력 테이블의 하나의 예를 나타내는 도면이다.
도3은, 도1의 분기 이력 관리부15가 도2의 분기 이력 테이블을 2세트 사용하여 수행하는 분기 이력 관리의 하나의 예를 개략적으로 나타내는 도면이다.
도4는, 도1의 분기 이력 관리부15가 도2의 분기 이력 테이블을 여러 개 사용하여 수행하는 분기 이력 관리의 하나의 예를 나타내는 흐름도이다.
도5는, 도1의 리턴 분기 이력 관리부17에 의해 관리되는 분기 이력 테이블의 하나의 예를 나타내는 도면이다.
도6은, 도1의 리턴 분기 이력 관리부17의 동작의 하나의 예를 나타내는 흐름도이다.
도7은, 도1의 핫 패스 검색부13의 동작의 하나의 예를 나타내는 흐름도이다.
도8은, 고스트 스크립트(ghostscript)의 실행에 의해 검출된 핫 패스의 예를 나타내는 그래프이다.
도9는, 도8에서 검출된 핫 패스 중에 본 발명의 실시예에 의해 검출된 핫 패스의 예를 나타내는 그래프이다.
도10은, 도1의 핫 패스 퀄리파이부7에 의한 검출처리에 사용되는 핫 패스 패스 시그네쳐 정보의 하나의 예를 나타내는 도면이다.
도11은, 기본 블록의 분기명령에 대한 패스 시그네쳐의 각 비트의 할당의 하나의 예를 나타내는 도면이다.
도12는, 도1의 핫 패스 퀄리파이부7의 개략적인 블럭도이다.
도13은, 종래의 핫 패스 추정장치101의 개략적인 블럭도이다.
도14는, 프로세서 코어에서 실행되는 기본 블록의 관계와 분기명령의 실행 횟수의 하나의 예를 나타내는 도면이다.
도15는, 도14에 나타낸 기본 블록간의 관계의 경우에 도13의 HW 어시스트부105에 의해 관리되는 테이블의 하나의 예를 나타내는 도면이다.
*** 도면의 주요부분에 대한 부호의 설명 ***
1 핫 패스 추정장치(hot-path 推定裝置)
5 핫 패스 검출부(hot-path 檢出部)
7 핫 패스 퀄리파이부(hot-path qualify部)
11 이력 관리부(履歷 管理部)
13 핫 패스 검색부(hot-path 檢索部)
15 분기 이력 관리부(分岐 履歷 管理部)
17 리턴 분기 이력 관리부(return 分岐 履歷 管理部)
도1은, 본 발명의 실시예에 관한 핫 패스 추정장치1의 개략적인 블럭도이다.
도1을 참조하면, 핫 패스 추정장치1은 핫 패스 검출부5와 핫 패스 퀄리파이부(hot-path qualify部)7을 구비한다. 핫 패스 검출부5는 분기명령 선택부9와 이력 관리부11과 핫 패스 검색부13을 구비한다. 이력 관리부11은 분기 이력 관리부15와 리턴 분기 이력 관리부17을 구비한다.
분기명령 선택부9는, CPU3에 의해 실행되는 명령 중에 분기명령을 선택하여 분기명령의 어드레스인 분기명령 어드레스(BIA) 및 분기처의 어드레스인 분기처 어드레스(BTA)를 취득하는 것이다.
분기 이력 관리부15는, 분기명령 선택부9에 의해 취득된 BIA와 BTA 및 전회(前回)의 분기처 어드레스를 기본 블록 시작 어드레스(BSA)로 하여, 도2에 예시된 분기 이력 테이블을 사용하여 분기명령의 분기 이력정보의 관리를 하는 것이다.
리턴 분기 이력 관리부17은, 도5에 예시된 리턴 분기 이력 테이블을 사 용하여 분기명령 선택부9에 의해 취득된 BTA가 BIA보다 작을 경우의 분기 횟수(COUNT) 등을 관리하는 것이다.
핫 패스 검색부13은, 도2에 예시된 분기 이력 테이블을 사용하여 명령 패스를 검색하는 것이다.
핫 패스 퀄리파이부7은, 핫 패스 검색부13에 의해 검색된 핫 패스 정보가 중복하여 검출된 것인지 아닌지를 판단하고, 중복하여 검출된 것이 아닌 경우에 핫 패스 정보를 외부로 출력하는 것이다.
계속하여 도2∼도4를 참조하여 도1의 분기 이력 관리부15에 대하여 설명한다.
도2는, 도1의 분기 이력 관리부15에 의해 관리되는 분기 이력 테이블의 하나의 예를 나타내는 도면이다. 도2의 분기 이력 테이블의 예는, 2n개의 인덱스 어드레스에 의하여 기본 블록 시작 어드레스(BSA), 분기명령 어드레스(BIA), 분기처 어드레스(BTA), 분기 횟수(COUNT) 및 미스 카운트 값(Miss COUNT)을 하나의 엔트리로 하는 것이다.
계속하여 도3과 도4를 사용하여 도1의 분기 이력 관리부15가 도2의 분기 이력 테이블을 사용하여 수행하는 분기 이력 관리의 예를 설명한다.
도3은, 도1의 분기 이력 관리부15가 도2의 분기 이력 테이블을 2세트 사용하여 수행하는 분기 이력 관리의 하나의 예를 개략적으로 나타내는 도면이다. 도3을 참조하여 도1의 분기 이력 관리부15가 도2의 분기 이력 테이 블을 2세트 사용하여 수행하는 분기 이력 관리의 하나의 예를 설명한다. 이하에서는 2세트의 테이블을 각각 세트0과 세트1이라고 한다.
도3을 참조하면, 도1의 분기 이력 관리부15는, 전회의 BTA를 BSA로 하고 이 BSA와 도1의 분기명령 선택부9에 의해 얻어진 BIA 및 BTA에 의하여 BSA와 BIA와 BTA의 쌍으로 이루어진 분기 정보31을 생성한다.
다음에 도1의 분기 이력 관리부15는, BSA의 하위 n비트를 사용하여 세트0의 분기 이력 테이블35를 억세스하여 BSA와 BIA와 BTA의 쌍으로 이루어진 분기 정보33을 취득하고, 마찬가지로 세트1의 분기 이력 테이블39를 억세스하여 BSA와 BIA와 BTA의 쌍으로 이루어진 분기 정보37을 취득한다.
다음에 도1의 분기 이력 관리부15는, 분기 정보31과 분기 정보33 및 분기 정보37을 비교하여 분기 정보31이 분기 정보33과 분기 정보37의 일방과 일치하면, 일치하는 분기 정보에 대응하는 분기 횟수(COUNT)를 1증가시키고 미스 카운트 값을 새로운 분기 횟수로부터 계산된 값으로 한다. 분기 정보31이 분기 정보33이나 분기 정보37과 일치하지 않는 경우에는 대응하는 미스 카운트 값이 0인지 아닌지를 판단하여, 미스 카운트 값이 0인 것이 있으면, 대응하는 분기 이력 테이블의 행을 새로운 BSA와 BIA와 BTA로 치환하고 카운트 값을 0으로 하고 미스 카운트 값을 갱신하고, 다른 미스 카운트 값을 1감소시킨다.(미스 카운트 값이 0인 것이 여러 개 있는 경우에는 어느 쪽의 테이블도 갱신 가능하여, 예를 들면 일방의 테이블을 갱신하고 타방의 테이블은 갱신하지 않는 것으로 한다.) 미스 카운트 값이 0인 것이 없으면, 분기 이력 테이블의 각각에서 대응하는 미스 카운트 값을 1감소시킨다.(분기 정보31은 분기 이력 테이블35에도 분기 이력 테이블37에도 저장되지 않는다.)
상기한 바와 같이 도1의 분기 이력 관리부15는, 분기 이력 테이블을 2세트 사용했을 경우의 분기 이력을 관리한다. 도3의 예에서는 BSA(기본 블록 시작 어드레스)의 하위 n비트에 의해 인덱스 어드레스를 생성하고 있어, 다른 기본 블록의 시작 어드레스가 동일한 인덱스 어드레스에 대응할 가능성이 있다. 도3의 예에 의하면, 동일한 인덱스 어드레스에 대응하는 분기명령의 분기처의 정보에 관하여, 보다 빈번하게 수행되는 2개의 것이, 2세트의 테이블이 대응하는 인덱스 어드레스에 의해 관리되는 것이 기대된다.
계속하여 도4를 참조하여 도1의 분기 이력 관리부15가 도2의 테이블을 여러 개 사용하여 수행하는 분기 이력 관리의 동작을 설명한다. 도4는, 도1의 분기 이력 관리부15가 도2의 분기 이력 테이블을 복수 세트 사용하여 수행하는 분기 이력 관리의 하나의 예를 나타내는 흐름도이다.
도4를 참조하면, 도1의 분기 이력 관리부15는, 도1의 분기명령 선택부9에 의해 얻어진 BIA 및 BTA를 취득하고(도4의 스텝STL1), 전회의 BTA를 BSA로 하여 BSA와 BIA와 BTA의 분기 정보를 생성한다(도4의 스텝STL2). 다음에 도1의 분기 이력 관리부15는, BSA에 의거한 인덱스 어드레스에 의하여 분기 이력 테이블의 전체 세트로부터 BSA와 BIA와 BTA의 분기 정보를 읽어낸다(도4의 스텝STL3). 다음에 도4의 스텝STL2에서 생성된 BSA와 BIA와 BTA의 분기 정보와 도4의 스텝STL3에서 읽어낸 BSA와 BIA와 BTA의 분기 정보 를 비교하여(도4의 스텝STL4), 일치하는 것이 있는지 아닌지를 판단한다(도4의 스텝STL5). 일치하는 것이 있으면, 대응하는 분기 이력 테이블의 카운트 값을 1증가시키고 대응하는 분기 이력 테이블의 미스 카운트 값을 새로운 카운트 값으로부터 계산된 값으로 갱신하여(도4의 스텝STL6), 도4의 처리를 종료한다. 일치하는 것이 없으면, 미스 카운트 값이 0인 것이 있는지 아닌지의 판단을 한다(도4의 스텝STL7). 미스 카운트 값이 0인 것이 있으면 그것을 새로운 BSA와 BIA와 BTA로 치환하고, 카운트 값을 1로 하고, 미스 카운트 값을 갱신하여(도4의 스텝STL8), 도4의 처리를 종료한다(미스 카운트 값이 0인 것이 여러 개 있는 경우에는, 예를 들면 하나의 테이블을 갱신하고 다른 테이블은 갱신하지 않는다). 미스 카운트 값이 0인 것이 없다(즉 미스 카운트 값이 모두 양의 정수)면 미스 카운트 값을 1감소시키고(도4의 스텝STL9), 도4의 처리를 종료한다.
상기한 바와 같이 도1의 분기 이력 관리부15는, 분기 이력 테이블을 여러 개 사용했을 경우의 분기 이력을 관리하여, 도3의 예와 같이 분기 이력 테이블의 동일한 인덱스 어드레스에 대응하는 분기명령에 관하여, 보다 빈번하게 수행되는 분기처의 정보를 관리하는 것이 기대된다.
계속하여 도5와 도6을 참조하여 도1의 리턴 분기 이력 관리부17에 대하여 설명한다.
도5는, 도1의 리턴 분기 이력 관리부17에 의해 관리되는 분기 이력 테이블의 하나의 예를 나타내는 도면이다. 도5의 리턴 분기 이력 테이블의 예 는, 2m개의 인덱스 어드레스에 의하여 분기처 어드레스(BTA), 분기 횟수(COUNT) 및 미스 카운트 값(Miss COUNT)을 하나의 엔트리로 하는 것이다.
계속하여 도6을 참조하여 도1의 리턴 분기 이력 관리부17이 도5의 테이블을 여러 개 사용하여 수행하는 리턴 분기 이력 관리의 동작을 설명한다. 도6은, 도1의 리턴 분기 이력 관리부17이 도5의 리턴 분기 이력 테이블을 복수 세트 사용하여 수행하는 분기 이력 관리의 하나의 예를 나타내는 흐름도이다.
도6을 참조하면, 도1의 리턴 분기 이력 관리부17은 도1의 분기명령 선택부9에 의해 얻어진 BIA 및 BTA를 취득한다(도6의 스텝STR1).
다음에 도1의 리턴 분기 이력 관리부17은, BTA와 BIA를 비교하여 BTA가 BIA보다 작을 경우(분기처의 기본 블록이 이전에 처리를 한 것인 가능성이 있을 경우)에는 도6의 스텝STR3의 처리를 하고, 그렇지 않은 경우에는 도6의 스텝STR1의 처리로 되돌아간다(도6의 스텝STR2).
도6의 스텝STR3에 있어서, 도1의 리턴 분기 이력 관리부17은, 전회의 BTA를 BSA로 하고 BSA에 의거한 인덱스 어드레스에 의해 분기 이력 테이블의 전체 세트로부터 BTA를 읽어낸다.
다음에 도1의 리턴 분기 이력 관리부17은, 도6의 스텝STR1에 있어서 얻어진 BTA와 도6의 스텝STR3에 있어서 읽어낸 BTA를 비교하여(도6의 스텝STR4), 일치하는 것이 있는지 아닌지를 판단한다(도6의 스텝STR5). 일치하는 것이 있으면 도6의 스텝STR6의 처리를 하고, 일치하는 것이 없으면 도6의 스텝STR7 이하의 처리를 한다.
도6의 스텝STR6에 있어서, 도1의 리턴 분기 이력 관리부17은, 대응하는 리턴 분기 이력 테이블의 카운트 값을 1증가시키고, 카운트 값이 임계치보다 큰 값인 경우에는 도1의 핫 패스 검색부13에 의한 핫 패스 검색 처리를 시작하고 카운트 값을 0으로 초기화하고, 대응하는 리턴 분기 이력 테이블의 미스 카운트 값을 갱신한다. 그리고 도6의 처리를 종료한다.
도6의 스텝STR7에 있어서, 도1의 리턴 분기 이력 관리부17은 미스 카운트 값이 0인 것이 있는지 아닌지를 판단한다. 0인 것이 있으면 새로운 BTA로 치환하고 카운트 값을 1로 하고 미스 카운트 값의 갱신을 하여(도6의 스텝STR8), 도6의 처리를 종료한다. 0인 것이 없으면 미스 카운트 값을 1빼고(도6의 스텝STR9), 도6의 처리를 종료한다.
계속하여 도7을 참조하여 도1의 핫 패스 검색부13의 처리를 설명한다. 도7은, 도1의 핫 패스 검색부13의 동작의 하나의 예를 나타내는 흐름도이다.
도7을 참조하면, 도1의 핫 패스 검색부13은, 핫 패스 시작 어드레스에 BTA의 값을 등록하고(도7의 스텝STS1), BTA를 기초로 인덱스 어드레스를 생성하여 분기 이력 테이블을 읽어낸다(도7의 스텝STS2).
도1의 핫 패스 검색부13은, BTA와 읽어낸 BSA를 비교한다(도7의 스텝STS3). 도1의 핫 패스 검색부13은, 일치하는 것이 있으면 도7의 스텝STS5이 후의 처리를 하고, 일치하는 것이 없으면 검색을 종료한다.
도7의 스텝STS5에 있어서, BSA가 복수의 세트에서 일치하는지 아닌지를 판단하고, 복수의 세트에서 일치하면 카운트 값을 비교하여 큰 카운트 값에 대응하는 BSA를 다음의 분기처로서 선택하여(도7의 스텝STS6), 도7의 스텝STS7의 처리를 한다. 복수의 세트에서 일치하지 않는 경우에는 도7의 스텝STS7의 처리를 한다.
도7의 스텝STS7에 있어서, 도1의 핫 패스 검색부13은, 분기의 심도(深度)가 최대치를 넘지 않는지를 판단한다. 여기에서 핫 패스는 핫 패스를 구성하는 분기명령에 있어서의 분기처 어드레스에 의해 나타낼 수 있고, 이 분기명령의 수가 핫 패스에 있어서의 분기의 심도라고 불린다. 도1의 핫 패스 검색부13은, 분기의 심도가 최대치를 넘으면 검색을 종료하고, 그렇지 않으면 도7의 스텝STS8의 처리를 한다.
도7의 스텝STS8에 있어서, 도1의 핫 패스 검색부13은, 도7의 스텝STS2에서 읽어낸 분기처 어드레스BTA가 핫 패스 시작 어드레스와 일치하는지 아닌지를 판단하여(도7의 스텝STS8), 일치하지 않으면 도7의 스텝STS2의 처리로 되돌아가고, 일치하면 핫 패스로서 도1의 핫 패스 퀄리파이부7로 출력하고(도7의 스텝STS9), 도7의 처리를 종료한다.
계속하여 도8∼도12를 참조하여 도1의 핫 패스 퀄리파이부7에 의해 중복되어 검출되는 핫 패스의 검출처리를 설명한다.
도8은, 고스트 스크립트(ghostscript)의 실행에 의해 검출된 핫 패스의 예를 나타내는 그래프이다. 고스트 스크립트는 프린터 등의 인쇄장치에서 널리 사용되고 있는 프로그램으로서, 포스트 스크립트(postscript)라고 하는 형식으로 기술된 문자정보나 화상정보를 입력으로 하여, 각각의 인쇄장치로 인쇄 가능한 형식의 정보로의 변환을 한다. 입력되는 문자정보나 화상정보에 의해 프로그램의 안에서 높은 빈도로 실행되는 명령열이 달라지기 때문에, 본 발명에 의한 추정장치에 의해 얻어지는 정보를 프로그램 실행의 최적화에 이용할 수 있다. 도8의 그래프에 있어서, 가로축은 명령의 실행 횟수를 나타내고, 세로축은 검출된 핫 패스를 나타낸다.
도8의 그래프에 있어서, 예를 들면 실행 횟수가 40,000,000회를 넘은 경우에 세로축의 값이 15, 70 부근의 핫 패스가 반복하여 검출되고 있는 것 같이, 핫 패스는 중복하여 검출되는 경우가 있다. 도1의 핫 패스 퀄리파이부7이 중복되어 검출되는 핫 패스 정보를 검출하여 외부에 전송하지 않도록 함으로써, 핫 패스 정보의 전송에 관한 오버 헤드가 줄어들어 핫 패스 정보를 기억하는 기억영역이 절약된다.
도9는, 도8에 있어서 검출된 핫 패스 중에 본 발명의 실시예에 의해 검출된 핫 패스의 예를 나타내는 그래프이다. 도9에 나타나 있는 바와 같이 본 발명에 의하면, 중복되지 않고 핫 패스를 검출할 수 있다.
도10은, 도1의 핫 패스 퀄리파이부7에 의한 검출처리에 사용되는 핫 패스 패스 시그네쳐 정보(hot-path path signature 情報)의 하나의 예를 나타내는 도면이다. 도10(a)에 나타낸 바와 같이 핫 패스 패스 시그네쳐 정보는, 32비트의 핫 패스 시작 어드레스(BSA)와 3비트의 분기의 수와 8비트의 패스 시그네쳐를 구비한다. 패스 시그네쳐의 각 비트는, 예를 들면 도10(b)에 나타낸 바와 같이 분기명령이 실행되지 않는 경우(즉 다음의 어드레스의 명령을 실행하는 경우)에는 0이고, 실행되는 경우에는 1이다. 분기의 수는 패스 시그네쳐의 각 비트 중에 유효한 것을 나타낸다. 이러한 패스 시그네쳐 정보는 핫 패스 검출처리에서 작성되는 것으로 한다.
계속하여 도11을 참조하여 도10의 패스 시그네쳐의 각 비트가 나타내는 정보를 설명한다. 도11은, 기본 블록의 분기명령에 대한 패스 시그네쳐의 각 비트의 할당의 하나의 예를 나타내는 도면이고, 기본 블록A∼G는 알파벳순으로 어드레스가 할당되어 있는 것으로 한다. 도11을 참조하면, 패스 시그네쳐의 각 비트는, 예를 들면 기본 블록A의 다음에 기본 블록B가 실행되는 경우에는 0이, 기본 블록D가 실행되는 경우에는 1이 할당된다. 다른 기본 블록에 관해서도 마찬가지로, 알파벳순으로 다음의 기본 블록이 다음에 실행되는 경우에는 0이, 다른 기본 블록이 실행되는 경우에는 1이 할당된다. 이러한 패스 시그네쳐를 사용함으로써 분기명령을 포함하는 명령 패스의 특정이 가능하게 된다.
계속하여 도12를 참조하여 도1의 핫 패스 퀄리파이부7의 동작의 하나의 예를 설명한다. 도12는, 도1의 핫 패스 퀄리파이부7의 개략적인 블럭도이다. 도12에 있어서, 핫 패스 퀄리파이부7은 패스 시그네쳐 비교부41과 핫 패스 정보 출력부43을 구비하고, 패스 시그네쳐 비교부41은 새로운 패스 시그네 쳐 기억부45와 기출된 패스 시그네쳐 기억부47을 구비한다.
도12의 패스 시그네쳐 비교부41은, 핫 패스 검출부5에 의해 검출된 핫 패스에 대응되는 패스 시그네쳐를 새로운 패스 시그네쳐 기억부45에 기억하고, 새로운 패스 시그네쳐 기억부45에 기억된 패스 시그네쳐와 기출된 패스 시그네쳐 기억부47에 기억된 패스 시그네쳐를 비교한다. 도12의 패스 시그네쳐 비교부41은, 새로운 패스 시그네쳐 기억부45에 기억된 패스 시그네쳐가 기출된 패스 시그네쳐 기억부47에 기억되어 있던 것과 일치하지 않는 경우에는, 핫 패스 정보 출력부43에 대하여 핫 패스 검출부5에 의해 검출된 핫 패스 정보를 출력시키고 새로운 패스 시그네쳐 기억부45에 기억된 패스 시그네쳐를 기출된 패스 시그네쳐 기억부47에 기억시킨다. 여기에서 기출된 패스 시그네쳐 기억부47은, 미리 정해진 엔트리 수(entry 數 ; 예를 들면 16엔트리)를 유지하는 것으로서, 새롭게 패스 시그네쳐를 추가하는 경우에 이미 미리 정해진 엔트리 수의 패스 시그네쳐가 기억되어 있는 경우에는, 가장 사용되지 않고 있는 엔트리와 교체시키는 등의 처리를 하는 것으로 한다. 도12의 패스 시그네쳐 비교부41은, 새로운 패스 시그네쳐가 기출된 패스 시그네쳐 기억부에 기억되어 있는 경우에는, 핫 패스 정보를 외부로 출력하지 않도록 한다.
상기와 같이 하여, 도12의 핫 패스 퀄리파이부7이 중복하여 검출되는 핫 패스 정보를 검출하여 외부에 전송하지 않도록 함으로써, 핫 패스 정보의 전송에 관한 오버헤드가 줄어들어 핫 패스 정보를 기억하는 기억영역이 절약된다.

Claims (10)

  1. 복수의 분기명령(分岐命令)을 포함하는 명령 패스(命令 path) 중에 실행되는 빈도가 높은 명령 패스를 추정하는 추정장치(推定裝置)에 있어서,
    분기명령을 특정하는 분기명령 특정정보, 실행된 각 분기명령의 분기처 어드레스, 분기 횟수 및 실행 빈도 정보를 하나의 엔트리(entry)로 하는 테이블로서, 상기 각 분기명령 특정정보에는 정해진 수의 엔트리가 대응하는 테이블(table)과,
    분기명령이 실행되면, 실행된 분기명령의 분기명령 특정정보 및 실행된 분기명령의 분기처 어드레스가 상기 분기명령 특정정보에 대응하는 엔트리에 저장되어 있는지 아닌지를 판단하여, 저장되어 있지 않으면, 상기 분기명령 특정정보에 대응하는 각 엔트리의 실행 빈도 정보에 의거하여, 상기 분기명령 특정정보 및 상기 분기처 어드레스에 관한 엔트리를 상기 테이블에 추가할지, 상기 테이블의 엔트리의 하나를 상기 분기명령 특정정보 및 상기 분기처 어드레스에 관한 엔트리로 치환할지 또는 상기 분기명령 특정정보 및 상기 분기처 어드레스에 관한 정보를 테이블에 저장하지 않을지를 선택하여 처리하는 이력 관리 수단(履歷 管理 手段)과,
    상기 테이블에 저장된 정보에 의거하여 명령 패스를 검색하는 검색수단과,
    상기 검색수단에 의해 검색된 명령 패스가 이미 검출된 것인지 아닌 지를 판단하여, 이미 검출된 것이 아닐 때에는 당해 명령 패스를 외부로 출력하는 퀄리파이 수단(qualify 手段)을 구비하는 추정장치.
  2. 실행되는 명령 패스의 기본 블록에 대하여 실행된 각 실행 기본 블록 및 상기 각 실행 기본 블록의 다음에 실행되는 차기 기본 블록에 관련되는 정보인 기본 블록 실행순서 관련정보를 하나의 엔트리로 하는 테이블을 관리하는 테이블 관리장치에 있어서,
    상기 테이블의 엔트리 수는 미리 정해진 수 이하이고,
    기본 블록이 실행되면, 실행된 실행 기본 블록 및 상기 실행 기본 블록의 다음에 실행되는 차기 기본 블록에 관련되는 엔트리가 상기 테이블에 등록되어 있는지 아닌지를 판단하고, 등록되어 있지 않으면, 상기 테이블에 저장되어 있는 정보에 의거하여, 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 엔트리를 상기 테이블에 추가할지, 상기 테이블의 엔트리의 하나를 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 엔트리로 치환할지 또는 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 정보를 상기 테이블에 저장하지 않을지 중에 어느 하나를 선택하여 처리를 하는 이력 관리 수단을 구비하는 테이블 관리장치.
  3. 제2항에 있어서,
    상기 기본 블록 실행순서 관련정보에는 실행 기본 블록 및 차기 기본 블록의 실행 빈도를 나타내는 실행 빈도 정보가 포함되어 있고,
    상기 이력 관리 수단은 기본 블록이 실행되면 상기 테이블에 저장되어 있는 실행 빈도 정보에 의거하여 처리의 선택을 하는 테이블 관리장치.
  4. 제2항 또는 제3항에 있어서,
    상기 테이블은, 기본 블록 실행순서 관련정보를 하나의 엔트리로 하여 같은 인덱스 어드레스가 부여된 복수의 서브 테이블(sub table)을 포함하고,
    상기 이력 관리 수단은, 실행 기본 블록을 특정하는 정보에 의거하여 생성되는 인덱스 어드레스를 사용하여 상기 서브 테이블의 엔트리에 억세스하는 테이블 관리장치.
  5. 복수의 분기명령을 포함하는 명령 패스 중에 실행되는 빈도가 높은 명령 패스를 추정하는 추정장치에 있어서,
    실행된 각 분기명령의 분기처 어드레스 및 전회(前回)에 실행된 분기명령의 분기처 어드레스인 기본 블록 시작 어드레스와 분기 횟수 및 실행 빈도 정보를 하나의 엔트리로서 저장하는 복수 세트의 분기 이력 테이블로서, 동일한 인덱스 어드레스에 의해 억세스 가능한 복수 세트의 분기 이력 테이블(分岐 履歷 table)과,
    분기명령이 실행되면, 전회에 실행된 분기명령의 분기처 어드레스인 기본 블록 시작 어드레스에 의거하여 생성되는 인덱스 어드레스에 의해 상기 각 분기 이력 테이블의 엔트리를 읽어내고, 읽어낸 엔트리가, 실행된 분기명령의 분기처 어드레스 및 상기 기본 블록 시작 어드레스에 관련되는 것인지의 판단을 하고, 어느 하나의 엔트리가 관련되면 당해 엔트리의 분기 횟수 및 실행 빈도 정보를 갱신하고, 어느 쪽의 엔트리도 관련되지 않으면 읽어낸 엔트리의 실행 빈도 정보에 의거하여 엔트리의 갱신처리를 하는 분기 이력 관리 수단(分岐 履歷 管理 手段)과,
    실행된 각 분기명령의 분기처 어드레스와 분기 횟수 및 실행 빈도 정보를 하나의 엔트리로서 저장하는 복수 세트의 리턴 분기 이력 테이블로서, 동일한 인덱스 어드레스에 의해 억세스 가능한 복수 세트의 리턴 분기 이력 테이블(return 分岐 履歷 table)과,
    분기명령이 실행되면, 실행된 상기 분기명령의 분기처 어드레스가 상기 분기명령의 어드레스보다 작은 경우에, 전회에 실행된 분기명령의 분기처 어드레스인 기본 블록 시작 어드레스에 의거하여 생성되는 인덱스 어드레스에 의해 상기 각 리턴 분기 이력 테이블의 엔트리를 읽어내고, 읽어낸 엔트리가 상기 분기처 어드레스에 관련되는 것인지의 판단을 하고, 어느 하나의 엔트리가 관련되면 당해 엔트리의 분기 횟수와 실행 빈도 정보를 갱신 하는 처리 및 분기 횟수가 임계치보다 크면 패스 검색 처리의 시작을 지시하는 처리를 하고, 어느 쪽의 엔트리도 관련되지 않으면 읽어낸 엔트리의 실행 빈도 정보에 의거하여 엔트리의 갱신처리를 하는 리턴 분기 이력 관리 수단(return 分岐 履歷 管理 手段)과,
    상기 리턴 분기 이력 관리 수단에 의해 패스 검색 처리의 시작이 지시되면 상기 분기 이력 테이블에 저장된 정보에 의거하여 명령 패스를 검색하는 검색수단을 구비하는 추정장치.
  6. 검색수단에 의해 검색된 명령 패스를 선택하여 출력하는 선택장치로서,
    검색수단에 의해 검색된 명령 패스를 나타내는 패스 특정 정보를 기억하는 기억수단과,
    검색수단에 의해 명령 패스가 검색되면, 검색된 명령 패스를 특정하는 패스 특정 정보와 상기 기억수단에 기억된 패스 특정 정보를 비교하는 비교수단과,
    상기 비교수단의 비교결과에 의거하여 상기 검색수단에 의해 검색된 명령 패스를 외부로 출력하는 출력수단을 구비하고,
    상기 검색된 명령 패스를 나타내는 패스 특정 정보가 상기 기억수단에 기억되어 있지 않으면, 상기 비교수단은 당해 패스 특정 정보를 상기 기억 수단에 기억시키고 상기 출력수단은 상기 검색수단에 의해 검색된 명령 패스를 외부로 출력하고, 상기 검색된 명령 패스를 나타내는 패스 특정 정보가 상기 기억수단에 기억되어 있으면, 상기 비교수단은 당해 패스 특정 정보를 상기 기억수단에 기억시키지 않고 상기 출력수단은 상기 검색수단에 의해 검색된 명령 패스를 외부로 출력하지 않는 선택장치.
  7. 제6항에 있어서,
    상기 명령 패스는 분기명령을 포함하고,
    상기 패스 특정 정보는 명령 패스의 분기명령이 실행될 경우와 실행되지 않을 경우를 구별하는 정보를 포함하는 선택장치.
  8. 실행되는 명령 패스의 기본 블록에 대하여 실행된 각 실행 기본 블록 및 상기 각 실행 기본 블록의 다음에 실행되는 차기 기본 블록에 관련되는 정보인 기본 블록 실행순서 관련정보를 하나의 엔트리로 하는 테이블을 관리하는 테이블 관리방법에 있어서,
    상기 테이블의 엔트리 수는 미리 정해진 수 이하이고,
    기본 블록이 실행되면, 이력 관리 수단이, 실행된 실행 기본 블록 및 상기 실행 기본 블록의 다음에 실행되는 차기 기본 블록에 관련되는 엔트리 가 상기 테이블에 등록되어 있는지 아닌지를 판단하고, 등록되어 있지 않으면, 상기 테이블에 저장되어 있는 정보에 의거하여, 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 엔트리를 상기 테이블에 추가할지, 상기 테이블의 엔트리의 하나를 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 엔트리로 치환할지 또는 상기 실행 기본 블록 및 상기 차기 기본 블록에 관련되는 정보를 상기 테이블에 저장하지 않을지 중에 어느 하나를 선택하여 처리를 하는 이력관리 스텝을 포함하는 테이블 관리방법.
  9. 제8항에 기재된 테이블 관리방법을 컴퓨터로 실행시키는 것이 가능한 프로그램.
  10. 제9항에 기재된 프로그램을 컴퓨터로 실행하는 것이 가능하게 기록한 기록매체.
KR1020087005362A 2005-10-17 2006-10-16 추정장치, 테이블 관리장치, 선택장치, 테이블관리방법, 그 테이블 관리방법을 컴퓨터로 실현시키는프로그램 및 그 프로그램을 기록하는 기록매체 KR100958299B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2005-00301104 2005-10-17
JP2005301104A JP2007109116A (ja) 2005-10-17 2005-10-17 推定装置、テーブル管理装置、選択装置、テーブル管理方法、そのテーブル管理方法をコンピュータに実現させるプログラム、及び、そのプログラムを記録する記憶媒体

Publications (2)

Publication Number Publication Date
KR20080034020A true KR20080034020A (ko) 2008-04-17
KR100958299B1 KR100958299B1 (ko) 2010-05-19

Family

ID=37962418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087005362A KR100958299B1 (ko) 2005-10-17 2006-10-16 추정장치, 테이블 관리장치, 선택장치, 테이블관리방법, 그 테이블 관리방법을 컴퓨터로 실현시키는프로그램 및 그 프로그램을 기록하는 기록매체

Country Status (4)

Country Link
US (1) US20090327673A1 (ko)
JP (1) JP2007109116A (ko)
KR (1) KR100958299B1 (ko)
WO (1) WO2007046324A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8448140B2 (en) 2008-07-02 2013-05-21 Tokyo Institute Of Technology Execution time estimation method and device

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5552042B2 (ja) * 2010-12-27 2014-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム解析の方法、システムおよびプログラム
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
JP5752631B2 (ja) * 2012-03-27 2015-07-22 住友重機械工業株式会社 画像生成方法、画像生成装置、及び操作支援システム
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US10108424B2 (en) * 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
EP2972782A1 (en) * 2013-03-15 2016-01-20 Intel Corporation Path profiling using hardware and software combination
US10540180B2 (en) * 2014-12-07 2020-01-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Reconfigurable processors and methods for collecting computer program instruction execution statistics
CN108476417B (zh) * 2015-12-15 2021-12-07 昕诺飞控股有限公司 用于管理邻居表的方法和适用于管理邻居表的通信设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2982506B2 (ja) * 1992-08-18 1999-11-22 日本電気株式会社 分岐ヒストリテーブル制御回路
CN1159648C (zh) * 1994-12-02 2004-07-28 现代电子美国公司 有限游程转移预测方法
JPH11306044A (ja) * 1998-04-22 1999-11-05 Hitachi Ltd データプロセッサ
JP3502543B2 (ja) * 1998-04-23 2004-03-02 株式会社東芝 テストケース生成システム及びテストケース生成方法
US6205545B1 (en) * 1998-04-30 2001-03-20 Hewlett-Packard Company Method and apparatus for using static branch predictions hints with dynamically translated code traces to improve performance
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
JP2000194602A (ja) * 1998-12-28 2000-07-14 Nec Corp 情報処理装置、マイクロプロセッサ及び外部キャッシュメモリの制御方法
JP4485772B2 (ja) * 2003-09-17 2010-06-23 財団法人福岡県産業・科学技術振興財団 推定装置、推定方法及び推定処理を実行させるためのコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体
US20050216714A1 (en) * 2004-03-25 2005-09-29 Intel Corporation Method and apparatus for predicting confidence and value
US7890738B2 (en) * 2005-01-20 2011-02-15 International Business Machines Corporation Method and logical apparatus for managing processing system resource use for speculative execution
US7711936B2 (en) * 2007-08-28 2010-05-04 Sun Microsystems, Inc. Branch predictor for branches with asymmetric penalties

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8448140B2 (en) 2008-07-02 2013-05-21 Tokyo Institute Of Technology Execution time estimation method and device
KR101406693B1 (ko) * 2008-07-02 2014-06-12 고쿠리츠다이가쿠호진 토쿄고교 다이가꾸 실행시간 추정방법, 실행시간 추정 프로그램 및 실행시간 추정장치

Also Published As

Publication number Publication date
KR100958299B1 (ko) 2010-05-19
US20090327673A1 (en) 2009-12-31
JP2007109116A (ja) 2007-04-26
WO2007046324A1 (ja) 2007-04-26

Similar Documents

Publication Publication Date Title
KR100958299B1 (ko) 추정장치, 테이블 관리장치, 선택장치, 테이블관리방법, 그 테이블 관리방법을 컴퓨터로 실현시키는프로그램 및 그 프로그램을 기록하는 기록매체
US10891229B2 (en) Multi-level caching method and multi-level caching system for enhancing graph processing performance
US7558802B2 (en) Information retrieving system
US7493480B2 (en) Method and apparatus for prefetching branch history information
JP3225912B2 (ja) 情報検索装置、方法及び記録媒体
JP2006031109A (ja) 管理システム及び管理方法
CN107426041B (zh) 一种解析命令的方法和装置
CN113544640A (zh) 分支指令的处理方法、分支预测器及处理器
JP5039754B2 (ja) データアクセス違反を検出する方法および装置
JP2013228999A (ja) データベース処理装置、方法、プログラム及びデータ構造
US6701461B2 (en) Method and apparatus for testing a cache
JP3798998B2 (ja) 分岐予測装置および分岐予測方法
CN116991855B (zh) 哈希表处理方法、装置、设备、介质、控制器及固态硬盘
JP4177833B2 (ja) リンクリストへのマルチプロセスアクセス方法および装置
US8819036B2 (en) Computer product, search method, search apparatus, and node
JPH076089A (ja) データを迅速に検索する方法及び装置
CN109255238B (zh) 终端威胁检测与响应方法及引擎
US7159019B2 (en) Information collection apparatus and method
JP4498342B2 (ja) 情報推薦システム及び情報推薦プログラム
JP5585489B2 (ja) 検索支援装置、プログラム及び方法
CN117472798B (zh) 高速缓存的路预测方法、装置、电子设备及存储介质
JP2629613B2 (ja) 分岐予測装置
CN117648131A (zh) 目标地址获取方法、分支预测器的训练方法及相关装置
JP2004110216A (ja) 検索装置および方法
JP3702950B2 (ja) 連想記憶メモリ装置

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
LAPS Lapse due to unpaid annual fee