KR19980033137A - 이진 프로그램 변환장치, 이진 프로그램 변환방법 및 프로그램기록매체 - Google Patents

이진 프로그램 변환장치, 이진 프로그램 변환방법 및 프로그램기록매체 Download PDF

Info

Publication number
KR19980033137A
KR19980033137A KR1019970054724A KR19970054724A KR19980033137A KR 19980033137 A KR19980033137 A KR 19980033137A KR 1019970054724 A KR1019970054724 A KR 1019970054724A KR 19970054724 A KR19970054724 A KR 19970054724A KR 19980033137 A KR19980033137 A KR 19980033137A
Authority
KR
South Korea
Prior art keywords
instruction
binary program
program
executed
execution
Prior art date
Application number
KR1019970054724A
Other languages
English (en)
Other versions
KR100297172B1 (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 KR19980033137A publication Critical patent/KR19980033137A/ko
Application granted granted Critical
Publication of KR100297172B1 publication Critical patent/KR100297172B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

최초의 이진 프로그램을 캐시 메모리를 갖춘 컴퓨터에서 고속으로 실행되는 새로운 이진 프로그램으로 변환시킬 수 있는 이진 프로그램 변환장치를 제공한다. 이진 프로그램 변환장치는 실행부와 생성부와 작성부를 구비한다. 실행부는 최초의 이진 프로그램을 실행한다. 생성부는 실행부에서 실행된 복수의 제1 명령블록을 나타내는 실행 블록정보를 생성한다. 작성부는 생성부에 의해 생성된 실행 블록정보에 근거하여, 복수의 제1 명령블록에 대응하는 제2 명령블록을 갖는 이진 프로그램으로서 컴퓨터에서 실행되었을 때에, 컴퓨터에 실행부에서 실행된 제1 명령블록에 대응하는 제2 명령블록을 캐시 메모리의 다른 위치에 기억시키는 새로운 이진 프로그램을 작성한다.

Description

이진 프로그램 변환장치, 이진 프로그램 변환방법 및 프로그램 기록매체
본 발명은 이진 프로그램을, 어떤 컴퓨터에서 고속으로 실행할 수 있는 새로운 이진 프로그램으로 변환시키는 이진 프로그램 변환장치 및 변환 방법에 관한 것이다. 또한, 본 발명은 컴퓨터를, 그와 같은 이진 프로그램 변환장치로서 기능시키기 위한 프로그램이 기록된 프로그램 기록매체에 관한 것이다.
컴퓨터 시스템의 성능을 향상시키기위하여, 메인 메모리를 고속화하기 위한 여러가지 노력이 행하여지고 있다. 그렇지만, 캐시 메모리가 개발되고 나서는, 메인 메모리를 고속화하지 않고서 컴퓨터의 성능을 향상시키는 것이 가능해졌다.
캐시 메모리는 용량이 작은 고속 액세스가 가능한 메모리로서, 메인 메모리와 CPU 사이에 설치된다. 캐시 메모리를 구비한 컴퓨터 시스템에서는, 어떤 워드(명령 혹은 데이터)가 CPU에 의해서 요구되었을 때, 요구된 워드가 캐시 메모리내에 존재하고 있는가 아닌가가 판단된다. 그리고, 요구된 워드가 캐시 메모리내에 존재하고 있는 경우에는, 캐시 메모리내의 그 워드가 CPU에 전달된다. 한편, 요구된 워드가 캐시 메모리내에 존재하고 있지 않는 경우에는, 메인 메모리로부터 요구된 워드를 포함한, 블록, 라인 혹은 세트라고 불리는 소정 사이즈의 데이터가 인출되어, 캐시 메모리에 기억된다. 그리고, 캐시 메모리내에 기억된 데이터(라인)에 포함되는 요구된 워드가 CPU에 전달된다.
즉, 프로그램이라고 하는 것은, 최근 사용한 명령 혹은 데이터를 재차 사용하는 경향과, 짧은 시간 동안에 어드레스가 인접한 워드를 사용하는 경향이 있다. (전자의 특성, 후자의 특성은, 각각, 시간적 참조 지역성(temporal locality of reference), 공간적 참조 지역성(spatial locality of reference)이라 불린다.) 바꾸어 말하면, 프로그램을 실행하였을 때에, CPU가 가까운 장래에 요구하는 메인 메모리내의 워드를 어느 정도 예측할 수 있다.
캐시 메모리에는 그와 같은 워드가 기억되기때문에, 캐시 메모리를 구비한 컴퓨터내의 CPU는 프로그램의 실행에 필요하게 되는 대부분의 워드를, 메인 메모리의 액세스 속도가 아니라, 캐시 메모리의 액세스 속도에 부응한 속도로 취득할 수 있다. 그 결과, 캐시 메모리를 구비한 컴퓨터는 캐시 메모리를 구비하고 있지 않는 고속 메인 메모리를 구비한 시스템과 동등한 속도로 동작하게 된다. 더구나, 캐시 메모리를 구비한 컴퓨터는 소용량이고 고속인 메모리밖에 필요로 하지 않기때문에, 캐시 메모리를 사용하면, 어떤 성능을 가진 시스템을 보다 저 가격으로 실현할 수 있게 된다. 이를 위하여, 최근 대부분의 컴퓨터 시스템은 캐시 메모리를 구비하고 있다.
또한, 최근 퍼스널 컴퓨터도 보급되어, 메모리 디바이스의 가격은 대단히 싸지고 있다. 따라서, 컴퓨터의 성능을 향상시키기위해서, 메인 메모리의 히트율(hit ratio:적중률)이 향상되도록 프로그램(소프트웨어)을 개량한다고 하는 것은 거의 의미가 없어지고 있다. 왜냐하면, 염가로 된 다수의 메모리 디바이스를 탑재하여 대용량의 메인 메모리가 실현된 컴퓨터에 있어서 메인 메모리의 히트율은, 동작 속도에 영향을 주지 않을 정도로 높기 때문이다.
이 때문에, 프로그램의 개선에 의해 컴퓨터의 성능을 향상시키기 위해서는, 캐시 메모리의 히트율이 향상되도록 프로그램을 바꾸는 쪽이 보다 효과적이라고 판단되고 있다. 즉, 캐시 메모리의 성능을 최대한으로 인출시킬 수 있도록, 프로그램의 참조 지역성을 높이는 것이 보다 중요해지고 있다.
어떤 컴퓨터내의 캐시 메모리의 히트율을 향상시키기 위하여, 종래에는, 그 컴퓨터용으로 개발된 컴파일러를 사용하여 원시 프로그램을 컴파일하는 것이 행하여지고 있었다. 즉, 이 리컴파일러 기술을 이용하기위해서는, 프로그램 이용자가 실제로 사용되는 프로그램인 이진 프로그램뿐만 아니라, 그 원시 프로그램도 관리해 둘 필요가 있었다.
또한, 컴퓨터 하드웨어의 진보는 대단히 빠르고, 새로운 컴퓨터 구조에 대응한 컴파일러의 개발에는 시간이 걸리기때문에, 컴파일러의 개발이 완료하기 전에, 더 진보된 하드웨어가 개발되어 버리는 경우도 있었다. 즉, 종래의 리컴파일러 기술에 의한 대응은 하드웨어의 진보를 따라잡지 못한다고 하는 문제도 있었다.
이러한 이유에서, 원시 프로그램을 사용하지 않고, 프로그램을 목적으로 하는 컴퓨터에 적합한 것으로 변환시킬 수 있는 프로그램 변환기술이 요망되고 있다.
그래서, 본 발명의 과제는, 최초의 이진 프로그램을, 그 원시 코드를 사용하지 않고, 어떤 컴퓨터에서, 보다 고속으로 동작하는 별도의 이진 프로그램으로 변환시킬 수 있는 이진 프로그램 변환장치, 방법을 제공하는 것에 있다.
또한, 본 발명의 다른 과제는, 컴퓨터를 그와 같은 이진 프로그램 변환장치로서 기능시키기 위한 프로그램이 기록된 프로그램 기록매체를 제공하는 것에 있다.
본 발명의 제1 형태의 이진 프로그램 변환장치는, 복수의 제1 명령블록으로 이루어지는 제1 이진 프로그램을 변환함으로써, 캐시 메모리를 구비한 어떤 컴퓨터에서 실행되는 제2 이진 프로그램을 생성하기위하여 사용된다. 이진 프로그램 변환장치는 실행부와 생성부와 작성부를 구비한다.
실행부는 제1 이진 프로그램을 실행한다. 생성부는 실행부에서 실행된 복수의 제1 명령블록을 나타내는 실행 블록정보를 생성한다.
작성부는 생성부에 의해 생성된 실행 블록정보에 근거하여, 복수의 제1 명령블록에 대응하는 제2 명령블록을 갖는 제2 이진 프로그램으로서, 컴퓨터에서 실행되었을 때에, 컴퓨터에, 실행부에서 실행된 제1 명령블록에 대응하는 제2 명령블록을 다른 위치의 캐시 메모리에 기억시키는 제2 이진 프로그램을 작성한다.
즉, 이진 프로그램 변환장치는 이진 코드(실행 블록)의 배열 변환을 포함하는 처리를 실행함으로써, 어떤 이진 프로그램(제1 이진 프로그램)을 캐시 메모리를 구비한 컴퓨터에서 고속으로 실행되는 새로운 이진 프로그램(제2 이진 프로그램)으로 변환시킨다. 따라서, 본 이진 프로그램 변환장치에 의하면, 원시 프로그램을 사용하지 않더라도(관리해 두지 않더라도), 캐시 메모리를 구비한 컴퓨터에서의 사용에 적합한 이진 프로그램을 얻을 수 있다.
본 발명의 제1 형태의 이진 프로그램 변환장치를 실현할 때에는, 실행부에서 실행된 제1 명령블록에 대응하는 제2 명령블록이 연속하여 배치된 부분을 가지는 제2 이진 프로그램을 작성하는 작성부를 이용하여도 좋다.
제1 형태의 이진 프로그램 변환장치에 생성부와 제어부를 부가할 수도 있다. 생성부는 작성부에 의해 작성된 제2 이진 프로그램이 컴퓨터에서 실행되었을 때에 사용되는 캐시 메모리의 라인을 나타내는 라인 데이터를 생성한다.
제어부는 복수의 제3 명령블록으로 이루어지는 제3 이진 프로그램을 실행하도록 실행부를 제어한다. 그리고, 제어부는 실행부에 의해 실행된 제3 명령블록을 나타내는 제2 실행 블록정보를 생성하도록 생성부를 제어한다. 더욱이, 제어부는 제2 실행 블록정보와 라인 데이터에 근거하여, 복수의 제3 명령블록에 대응하는 제4 명령블록을 갖는 제4 이진 프로그램으로서, 컴퓨터에서 실행되었을 때에, 컴퓨터에, 실행부에서 실행된 제3 명령블록에 대응하는 제4 명령블록을 캐시 메모리의 라인 데이터에 의해 표시되는 라인을 제외한 라인내의 다른 위치에 기억시키는 제4 이진 프로그램을 작성하도록 작성부를 제어한다.
이와 같이 구성된 이진 프로그램 변환장치에 의하면, 동시에 실행되는 2개의 이진 프로그램(제1, 제3 이진 프로그램)을, 컴퓨터에서 고속으로 동작하는 새로운 2개의 이진 프로그램(제2, 제4 이진 프로그램)으로 변환시킬 수 있다.
이진 프로그램 변환장치에, 실행부에 의한 제1 이진 프로그램의 실행 상태를 모니터함으로써, 데이터 액세스에 의해 캐시 메모리 각 라인의 이용 빈도를 인식하는 인식부와, 인식부의 인식 결과에 근거하여, 캐시 메모리의 전 라인중에서 실행부에 의해 실행된 제1 명령블록에 대응하는 제2 명령블록의 기억에 사용할 라인을 선택하는 선택부를 부가하여도 좋다. 이 경우, 컴퓨터에서 실행되었을 때에, 실행부에서 실행된 제1 명령블록에 대응하는 제2 명령블록을 캐시 메모리의, 선택부에서 선택된 라인내의 다른 위치에 기억시키는 제2 이진 프로그램을 작성하는 작성부를 컴퓨터에 채용해 둔다.
이와 같이 구성된 이진 프로그램 변환장치에 의하면, 명령 액세스와 데이터 액세스의 경합에 의한 오류가 거의 발생하지 않는 새로운 이진 프로그램(제2 이진 프로그램)을 얻을 수 있다.
더욱이, 실행부에서 실행된 제1 명령블록에 대응하는 제2 명령블록이 연속하여 배치된 부분을 갖는 제2 이진 프로그램을 작성하는 작성부를 사용할 경우에는, 탐색부와 변경부를 부가하여 이진 프로그램 변환장치를 구성할 수 있다.
탐색부는 작성부에서 작성된 제2 이진 프로그램중에서, 말미에 분기명령이 존재하는 제2 명령블록으로서, 그 분기명령의 분기위치가 다음 명령블록인 제2 명령블록을 탐색한다. 변경부는 탐색부에서 탐색된 제2 명령블록과 그 다음 제2 명령블록 사이의 이행이 분기에 관계없이 행하여지도록 분기명령의 분기조건 및 분기위치를 변경한다.
이와 같이 구성된 이진 프로그램 변환장치에 의하면 보다 고속으로 실행되는 이진 프로그램을 얻을 수 있게 된다.
본 발명의 제2 형태의 이진 프로그램 변환장치는 제1 이진 프로그램을 어떤 컴퓨터에서 실행되는 제2 이진 프로그램으로 변환시키기위하여 사용된다.
제2 형태의 이진 프로그램 변환장치는 탐색부와 작성부를 구비한다. 탐색부는 제1 이진 프로그램중에서 각각 적어도 1개의 미리 정해진 명령코드로 이루어지는 제1 명령열을 탐색한다. 작성부는 탐색부에서 탐색된 제1 명령열을 제1 명령열에 할당된 제2 명령열로 치환함으로써, 제2 이진 프로그램을 작성한다.
즉, 이진 프로그램 변환장치는 명령열을 치환함으로써, 어떤 최초의 이진 프로그램(제1 이진 프로그램)을 목적으로 하는 컴퓨터에서 고속으로 실행되는 새로운 이진 프로그램(제2 이진 프로그램)으로 변환시킨다. 따라서, 본 이진 프로그램 변환장치에 의하면, 원시 프로그램을 사용하지않더라도(관리해 두지 않더라도) 목적으로 하는 컴퓨터에서의 사용에 적합한 이진 프로그램을 얻을 수 있다.
또한, 본 발명의 이진 프로그램 변환장치는 프로그램 기록매체에 기억된 프로그램을 통상의 컴퓨터에서 실행하는 것에 의해서도 실현할 수 있다.
본 발명의 제1 형태의 이진 프로그램 변환방법은 복수의 제1 명령블록으로 이루어지는 제1 이진 프로그램을 변환함으로써, 캐시 메모리를 구비한 어떤 컴퓨터에서 실행되는 제2 이진 프로그램을 생성하기위하여 사용된다.
제1 형태의 이진 프로그램 변환방법은 실행 단계와 생성 단계와 작성 단계를 구비한다.
실행 단계에서는, 제1 이진 프로그램이 실행된다. 생성 단계에서는 실행 단계에서 실행된 제1 명령블록을 나타내는 실행 블록정보가 생성된다.
작성 단계에서는 생성 단계에서 생성된 실행 블록정보에 근거하여, 복수의 제1 명령블록에 대응하는 제2 명령블록을 갖는 제2 이진 프로그램으로서, 컴퓨터에서 실행되었을 때에, 실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록을 캐시 메모리의 다른 위치에 기억시키는 제2 이진 프로그램이 컴퓨터에 작성된다.
제1 형태의 이진 프로그램 변환방법에, 실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록이 연속하여 배치된 부분을 갖는 제2 이진 프로그램을 작성하는 작성 단계를 채용하여도 좋다.
제1 형태의 이진 프로그램 변환방법에는, 생성 단계와 제어 단계를 부가할 수도 있다. 생성 단계에서는 작성 단계에서 작성된 제2 이진 프로그램이 컴퓨터에서 실행되었을 때에 사용되는 캐시 메모리의 라인을 나타내는 라인 데이터를 생성하는 처리가 행하여진다. 제어 단계에서는 복수의 제3 명령블록으로 이루어지는 제3 이진 프로그램을 실행하도록 실행 단계를 제어하고, 실행 단계에서 실행된 제3 명령블록을 나타내는 제2 실행 블록정보를 생성하도록 생성 단계를 제어하며, 제2 실행 블록정보와 라인 데이터에 근거하여, 복수의 제3 명령블록에 대응하는 제4 명령블록을 갖는 제4 이진 프로그램으로서, 컴퓨터에서 실행되었을 때에, 컴퓨터에, 실행 단계에서 실행된 제3 명령블록에 대응하는 제4 명령블록을 캐시 메모리의 라인 데이터에 의해서 표시되는 라인을 제외한 라인내의 다른 위치에 기억시키는 제4 이진 프로그램을 작성하도록 작성 단계를 제어하는 처리가 행하여진다.
본 발명의 제1 형태의 이진 프로그램 변환방법에, 인식 단계와 선택 단계를 부가할 수도 있다. 인식 단계에서는 실행 단계에 의한 제1 이진 프로그램의 실행 상태를 모니터함으로써, 데이터 액세스에 의한 캐시 메모리 각 라인의 이용 빈도를 인식하는 처리가 행하여진다. 선택 단계에서는 인식 단계의 인식 결과에 근거하여, 캐시 메모리 전 라인중에서 실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록의 기억에 사용할 라인을 선택하는 처리가 행하여진다. 이 경우, 컴퓨터에서 실행되었을 때에, 컴퓨터에, 실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록을 캐시 메모리의, 선택 단계에서 선택된 라인내의 다른 위치에 기억시키는 제2 이진 프로그램을 작성하는 처리가 행하여지는 작성 단계가 사용된다.
실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록이 연속하여 배치된 부분을 갖는 제2 이진 프로그램을 작성하는 작성 단계를 채용한 이진 프로그램 변환방법에는, 탐색 단계와 변경 단계를 부가해 두는 것이 바람직하다.
탐색 단계에서는, 작성 단계에서 작성된 제2 이진 프로그램중에서, 말미에 분기명령이 존재하는 제2 명령블록으로서, 그 분기명령의 분기위치가 다음 명령블록인 제2 명령블록을 탐색하는 처리가 행하여진다. 변경 단계에서는, 탐색 단계에서 탐색된 제2 명령블록과 그 다음 제2 명령블록 사이의 이행이 분기에 관계없이 행하여지도록, 분기명령의 분기조건 및 분기위치를 변경하는 처리가 행하여진다.
본 발명의 제2 형태의 이진 프로그램 변환방법은, 제1 이진 프로그램을 어떤 컴퓨터에서 실행되는 제2 이진 프로그램으로 변환하기위하여 사용된다. 제2 형태의 이진 프로그램 변환방법은 탐색 단계와 작성 단계를 포함한다. 탐색 단계에서는 제1 이진 프로그램중에서, 각각 적어도 1개의 미리 정해진 명령코드로 이루어지는 제1 명령열이 탐색된다. 작성 단계에서는 탐색 단계에서 탐색된 제1 명령열이 제1 명령열에 할당된 제2 명령열로 치환되어, 제2 이진 프로그램이 작성된다.
도 1은 본 발명의 일 실시형태에 의한 이진 프로그램 변환장치의 설명도.
도 2는 실시형태의 이진 프로그램 변환장치가 구비하는 트레이스 애널라이저에 의해 생성되는 텍스트 테이블의 설명도.
도 3은 트레이스 애널라이저에 의해 생성되는 데이터 사용 라인 테이블의 설명도.
도 4는 이진 프로그램 변환장치가 구비하는 캐시 할당기에 의해 생성되는 라인 테이블의 설명도.
도 5는 이진 프로그램 변환장치에 의해 변환되는 이진 프로그램의 설명도.
도 6은 이진 프로그램 변환장치의 동작 순서의 설명도.
도 7은 동시에 실행되는 두개의 실행가능 목적 프로그램을 변환할 때의, 이진 프로그램 변환장치의 동작 순서의 전반을 나타내는 설명도.
도 8은 동시에 실행되는 두개의 실행가능 목적 프로그램을 변환할 때의, 이진 프로그램 변환장치의 동작 순서의 후반을 나타내는 설명도.
도 9는 캐시 할당기의 동작 순서를 나타낸 흐름도.
도 10은 이진 프로그램 변환장치가 구비하는 목적 코드 변환기의 전체적인 동작 순서를 나타낸 흐름도.
도 11은 목적 코드 변환기가 실행하는 블록 복사처리의 흐름도.
도 12는 목적 코드 변환기가 실행하는 복사처리의 흐름도.
도 13은 목적 코드 변환기가 실행하는 분기조건 반전처리의 흐름도.
도 14는 목적 코드 변환기가 실행하는 CTI 재배치처리의 흐름도.
도 15는 목적 코드 변환기가 실행하는 분기 예측처리의 흐름도.
도 16은 목적 코드 변환기가 실행하는 어드레스 정수 재배치처리의 흐름도.
도 17은 동시에 실행되는 2개의 실행가능 목적 프로그램을 변환할 때의 이진 프로그램 변환장치의 동작 순서를 나타낸 설명도.
도 18은 이진 프로그램 변환장치에 의해 생성된 두개의 실행가능 목적 프로그램이 실행되었을 때에 캐시 메모리가 어떻게 사용되는지를 나타낸 설명도.
도 19 내지 도 26은 실시형태의 이진 프로그램 변환장치에 의한 프로그램의 변환동작을 설명하기위한 부분 프로그램 리스트.
도 27의 (a) 및 (b)는 각각 변환 전, 변환 후의 이진 프로그램을 실행시켰을 때에 캐시 메모리가 어떻게 사용되는지를 나타내는 설명도.
도면의 주요 부분에 대한 부호의 설명
11 : 링크 에디터
12 : 프로파일러
13 : 트레이스 애널라이저
14 : 캐시 할당기
15 : 목적 코드 변환기
이하, 도면을 참조하여, 본 발명의 일 실시형태를 구체적으로 설명한다.
실시형태의 이진 프로그램 변환장치는 이진 프로그램을, 캐시 메모리를 구비한 컴퓨터에서 고속으로 동작하는 이진 프로그램으로 변환시키는 장치이다. 이진 프로그램 변환장치는 CD-ROM과 같은 기록매체에 수납된 프로그램을 컴퓨터에 설치함으로써 기능적으로 실현된다.
이 때문에, 본 이진 프로그램 변환장치의 동작 순서를 설명하기 전에, 본 실시형태에서 이용한 컴퓨터의 구성, 구조를 간단하게 설명해 둔다.
컴퓨터는 연속하는 64 바이트로 이루어지는 라인으로 분할된, 1M 바이트의 캐시 메모리를 구비한다. 즉, 캐시 메모리는 16384 (= 1M바이트/64바이트)의 라인으로 이루어진다. 16384 개의 라인은 0에서 16383의 번호로 관리된다.
또한, 컴퓨터는 가상 메모리를 지원하고 있다. 즉, CPU로부터의 가상 어드레스는 메인 메모리, 캐시 메모리 액세스로 이용되는 물리 어드레스로 변환된다.
이 컴퓨터에서는 1바이트의 어떤 명령/데이터가 CPU에 의해 요구되었을 경우, 그 명령/데이터가 캐시 메모리상에 존재하고 있는지 어떤지가 조사된다. 그 명령/데이터가 캐시 메모리상에 존재하고 있지 않는 경우에는, 메인 메모리로부터 해당 명령/데이터를 포함하는 64바이트 데이터가 인출되어 캐시 메모리에 기억된다. 그리고, 캐시 메모리내의, 그 인출된 데이터에 포함되는 명령/데이터가 CPU에 전달된다.
요구된 명령/데이터를 포함하는 인출된 데이터가 수납되는 라인은 그 명령/데이터의 가상 어드레스에서 임의적으로 결정된다. 구체적으로는, 가상 어드레스를 캐시 사이즈로 나눈 나머지가, 인출된 데이터가 수납되는 라인의 인덱스로서 사용된다.
이와 같은 것들을 전제로서, 이하, 실시형태의 이진 프로그램 변환장치의 동작이 설명된다. 또한, 이하의 설명에서는, 컴파일된 원시 프로그램(혹은, 원시 코드)을 목적 프로그램이라 표기하고, 목적 프로그램을 수납한 파일을 목적 파일이라 표기한다. 또한, 하나 또는 복수의 목적 프로그램을 링크함으로써 얻어지는 컴퓨터상에서 실행 가능한 프로그램을 실행가능 목적 프로그램이라 표기한다. 또한, 이진 프로그램을 목적 프로그램과 실행가능 목적 프로그램의 총칭으로서 사용하기로 한다.
우선, 1개의 실행가능 목적 프로그램의 변환이 행하여지는 경우를 예로, 이진 프로그램 변환장치의 동작의 개요를 설명한다.
이미 설명한 바와 같이, 이진 프로그램 변환장치는, 본 장치용으로 개발된 이진 프로그램 변환프로그램을 컴퓨터에 설치함으로써 기능적으로 실현된다. 이진 프로그램 변환프로그램이 기동되었을 때, 컴퓨터는 도 1에 모식적으로 나타낸 바와 같이, 링크 에디터(11), 프로파일러(12), 트레이스 애널라이저(13), 캐시 할당기(14), 목적 코드 변환기(15)로 이루어지는 이진 프로그램 변환장치로서의 동작을 개시한다.
링크 에디터(11)는 캐시 메모리의 사이즈와 같은 사이즈(실시형태에서는, 1메가 바이트)의 캐시 블로킹 영역(이하, CaB 영역이라 표기한다)을 변환시켜야 되는 실행가능 목적 프로그램에 부가한다. 구체적으로는, 링크 에디터(11)는 변환되어야 되는 실행가능 목적 프로그램에 CaB 영역(상세한 것은 후술)을 확보하기위한 함수를 링크함으로써, 별도의 실행가능 목적 프로그램을 생성한다. 또한, 링크 에디터는 목적 코드 변환기에 의해 완전한 재배치를 가능하게 하기위하여, 재배치 정보(어드레스 정수)를 실행가능 목적 프로그램내에 수납한다. 또한, 이하의 설명에서는, 링크 에디터에 의해 생성되는 실행가능 목적 프로그램의 CaB 영역을 제외한 영역을 MTXT 영역이라 표기하기로 한다.
프로파일러(12)는 CaB 영역이 확보된 실행가능 목적 프로그램을 트레이스(실행)함으로써, 실행된 명령코드에 관한 정보로 이루어지는 실행 프로파일을 생성한다.
트레이스 애널라이저(13)는 프로파일러(12)에 의해 생성된 실행 프로파일을 해석하여, 텍스트 테이블과 데이터 사용 라인 테이블을 생성한다. 텍스트 테이블은 실행가능 목적의 변환에 필요한 정보를 유지한 테이블이다. 보다 구체적으로는, 텍스트 테이블은 도 2에 나타낸 바와 같이, 10개의 항목으로 이루어지는 레코드를 유지한다. 데이터 사용 라인 테이블은 도 3에 나타낸 바와 같이, 캐시 라인 번호 (LINE) 와, 그 번호로 식별되는 라인이 데이터의 기억에 이용된 횟수 (USE) 로 이루어지는 레코드를 유지한다.
캐시 할당기(14)는 트레이스 애널라이저(13)에 의해 생성된 텍스트 테이블내의 정보에 근거하여, 프로파일러(11)에 의해 실행된 MTXT 영역내의 모든 명령블록을 수납하는데 필요한 기억 용량을 인식한다. 그리고, 캐시 할당기(14)는 실행된 명령블록을 유지하는데 필요한 캐시 라인의 최소수인 L을 구하고, 데이터 사용 라인 테이블내의 정보에 근거하여, 데이터 액세스에 의해 이용 빈도가 적은 L 개의 라인을 선택한다. 이어서, 캐시 할당기(14)는 선택한 라인을 각각 연속한 라인으로 이루어지는 몇개의 그룹으로 분류하며, 분류한 그룹을 나타내는 정보를 유지한 라인 테이블을 생성한다. 구체적으로는, 캐시 할당기(14)는 도 4에 나타낸 바와 같이, 각각 연속한 라인으로 이루어지는 영역의 선두 라인번호( FROM), 종료 라인번호(TO), 라인수(NUM)를 포함하는 레코드를 갖는 라인 테이블을 생성한다.
또한, 실행된 모든 명령블록을 수납하는데 필요한 기억 용량이 캐시 메모리의 용량을 초과하고 있는 경우, 캐시 할당기(14)는 상기한 처리와는 다른 처리를 행한다. 이 처리에 대한 상세한 것은 후술한다.
라인 테이블이 생성된 뒤, 목적 코드 변환기(15)는 실행가능 목적 프로그램을 변환하기 위한 처리를 개시한다.
실행가능 목적 프로그램을 변환할 때, 목적 코드 변환기(15)는 텍스트 테이블 및 라인 테이블내의 정보에 근거하여, 실행된 MTXT 영역내의 명령블록을 캐시 할당기(14)에 의해 선택된 캐시 라인에 대응하는 CaB 영역내의 영역에 복사한다. 그리고, 목적 코드 변환기(15)는 CaB 영역에 복사가 생성된 MTXT 영역내의 각 명령블록의 선두에, CaB 영역내의 복사의 선두에서 행하여지는 분기의 무조건 분기명령을 기록한다. 더욱이, 목적 코드 변환기(15)는 CTI(제어 전달 명령: Control Transfer Instruction; Branch, cal1, jmp1 등)의 목적 오프셋/어드레스를 변경한다. 즉, 목적 코드 변환기(15)는 CaB 영역내의 복사가 실행되도록 목적 프로그램을 수정한다.
본 이진 프로그램 변환장치에 의해, 이와 같이 하여 생성된 실행가능 목적 프로그램은 변환 전의 실행가능 목적 프로그램보다도 빨리 동작한다. 이하에 그 이유를 설명한다.
예컨대, 어떤 상황하에서 실행시켰을 때에 실행되는 3가지 명령블록 a, b, c를 가지는 실행가능 목적 프로그램이 존재하며, 그 실행가능 목적 프로그램이 이진 프로그램 변환장치에 부여된 것으로 한다. 또한, 도 5에 모식적으로 나타낸 바와 같이, 명령블록 a, b는 캐시 메모리의 같은 라인에 대응하는 위치에 존재하고 있는 것으로 한다.
이 경우, 도 6에 모식적으로 나타낸 바와 같이, 이진 프로그램 변환장치는 실행블록 a, b, c를 CaB 영역에 복사하여, CaB 영역내의 실행블록이 실행되는 새로운 실행가능 목적 프로그램을 작성한다. 즉, 이진 프로그램 변환장치는 명령블록 a, b, c가 캐시 메모리의 다른 라인에 기억되는 실행가능 목적 프로그램을 생성한다.
따라서, 본 이진 프로그램 변환장치에 의해 생성된 실행가능 목적 프로그램을 실행한 경우, 명령 액세스의 경합에 따른 히트 미스가 발생하지 않는다. 그 결과로써, 변환된 실행가능 목적 프로그램은 원래의 실행가능 목적 프로그램보다도 빨리 동작하게 된다.
이어서, 동시에 실행되는 2개의 실행가능 목적 프로그램 A, B의 변환이 행하여지는 경우를 예로서, 이진 프로그램 변환장치의 동작 순서를 보다 상세히 설명한다.
이 경우, 도 7에 모식적으로 나타낸 바와 같이, 링크 에디터는 CaB 영역을 확보하기위한 유사 함수를 실행가능 목적 프로그램 A, B에 링크하여, 각각 CaB 영역을 갖는 실행가능 목적 프로그램 A', B'를 작성한다. 이 때, 링크 에디터는 목적 코드 변환기에 의한 완전한 재배치를 가능하게 하기위하여, 재배치 정보(어드레스 정수)를 각 실행가능 목적 프로그램내에 수납한다.
이어서, 프로파일러가 실행가능 목적 프로그램 A', B'를 동시 혹은 개별적으로 트레이스하여, 실행된 명령코드에 관한 정보를 포함하는 실행 프로파일을 작성한다.
실행 프로파일이 작성된 뒤, 도 8에 모식적으로 나타낸 바와 같이, 트레이스 애널라이저가 실행 프로파일내의 정보에 근거하여, 텍스트 테이블 A, B와 데이터 사용 라인 테이블 A, B를 작성한다.
그 후, 텍스트 테이블 A, B내의 정보에 근거하여, 캐시 할당기가 실행 가능 목적 프로그램 A', B'의, 실행된 명령블록의 전체 사이즈를 구한다. 그리고, 캐시 할당기는 전체 사이즈가 캐시 메모리의 사이즈(CaB 영역의 사이즈; 실시형태에서는 1MB)이하인 경우, 데이터 사용 라인 테이블 A, B내의 정보에 근거하여, 실행된 전 명령블록을 유지하기위하여 이용하는 캐시 라인을 선택한다. 이어서, 선택한 캐시 라인으로 이루어지는 영역을 연속라인 영역으로 분류하여, 각각 1개의 연속라인 영역을 나타내는 1개 이상의 레코드를 포함하는 라인 테이블을 작성한다.
한편, 실행된 명령블록의 전체 사이즈가 캐시 메모리의 사이즈보다도 큰 경우, 캐시 할당기는 캐시 라인의 선택을 하지 않고서, 캐시 메모리의 선두 라인번호와 최종 라인번호와 라인수로 이루어지는 1개의 레코드를 갖는 라인 테이블을 작성한다. 또한, 캐시 할당기는 프로파일러에 의해 실행된 명령블록중에서 CaB 영역에 복사할 명령블록을 선택하여, 그 선택 결과를 목적 코드 변환기에 알리기위해서 텍스트 테이프 A, B의 내용을 변경한다.
보다 구체적으로는, 도 9에 나타내는 바와 같이, 캐시 할당기는 우선, 모든 텍스트 테이블내의 정보에 근거하여, 프로파일러에 의해 실행된 모든 명령블록 사이즈의 합계인 SUMtot를 구한다(단계 100). 이어서, 캐시 할당기는 SUMtot CZ가 성립하는가 아닌가를 판정한다(단계 101). 여기서, CZ는 캐시 메모리의 사이즈이다.
SUMtot CZ가 성립하고 있는 경우(단계 101: T), 캐시 할당기는 SUM (X) CZ가 성립하는 최대의 X를 구하여, MAXRUN으로서 기억한다(단계 102). 여기서, SUM(X)는 적어도 X회 실행된 명령블록 사이즈의 합계이다. 또한, 캐시 할당기는 MAXRUN을 아래와 같이 구한다. 우선, 캐시 할당기는 모든 텍스트 테이블에서 명령블록에 관한 레코드를 인출한다. 이어서, 인출한 레코드를 RUN을 키로 내림차순으로 분류하고, 분류한 레코드의 선두 몇개의 레코드내의 SZ값을 합계함으로써 SUM(X)를 산출할 수 있도록 한다. 그리고, 캐시 할당기는 X의 값을 감소시키면서 SUM(X)를 구하여, 부등식 SUM (X) CZ를 최초로 성립시킨 X의 값을 MAXRUN으로서 기억한다.
MAXRUN을 구한 뒤, 캐시 할당기는 명령블록에 관한 레코드내의 MAXRUN 이하의 값을 갖는 RUN의 값을 0으로 변경한다(단계 103). 이어서, 캐시 할당기는 캐시 메모리의, 선두 라인번호와 최종 라인번호와 라인수로 이루어지는 1개의 레코드를 포함하는 라인 테이블을 작성한다(단계 104). 즉, 캐시 할당기는 FROM, TO, LINE의 값이 각각 0, 16383, 16384인 1레코드를 갖는 라인 테이블을 작성한다. 라인 테이블의 작성 후, 캐시 할당기는 도시한 처리를 종료한다.
한편, SUMtot CZ가 성립하지 않는 경우(단계 101: F), 캐시 할당기는 캐시 구성 정보(라인 사이즈)와 SUMtot를 기초로 프로파일러에 의해 실행된 모든 명령블록을 유지시키는데 필요한 라인수 L을 구한다(단계 105). 이어서, 모든 데이터 사용 라인 테이블내의 레코드를, USE를 키로 올림차순 분류함으로써, USE의 값이 작은 L개의 레코드를 선택한다(단계 106).
L개의 레코드를 선택한 후, 캐시 할당기는 선택한 레코드를 라인번호(LINE)를 키로 올림차순 분류하여, 각각 연속하는 라인번호를 갖는 레코드로 이루어지는 몇개의 그룹으로 분류한다. 그리고, 각 그룹에 포함되는 레코드에 의해 나타내는 연속라인 영역의, 선두 라인번호와 최종 라인번호와 라인수를 구한다(단계 107).
그 후, 캐시 할당기는 연속라인 영역의 선두 라인번호와 최종 라인번호와 라인수로 이루어지는 레코드가, 라인수를 키로 내림차순 분류시켜 기억시킨 라인 테이블(도 4참조)을 작성한 다음(단계 108), 그 처리를 종료한다.
라인 테이블이 작성된 뒤, 목적 코드 변환기는 실행가능 목적 프로그램 A', B'를 변환하기 위한 처리를 개시한다.
도 8에 모식적으로 나타내는 바와 같이, 목적 코드 변환기는 최초의 프로그램인 실행가능 목적 프로그램 A'를 변환할 때에는, 텍스트 테이블 A'와 라인 테이블을 이용한다. 한편, 2번째의 프로그램인 실행가능 목적 프로그램 B'를 변환할 때에는, 텍스트 테이블 B'과 라인 테이블과, 실행가능 목적 프로그램 A'의 변환시에 작성된 라인 로그 A를 이용한다.
이하, 도 10 내지 도 16을 참조하여, 목적 코드 변환기에 의해 실행되는 변환 처리의 상세한 것을 설명한다.
변환처리를 개시할 때에, 도 10에 나타낸 바와 같이, 목적 코드 변환기는 우선, 처리해야 할 실행가능 목적 프로그램이 최초의 변환대상 프로그램인가 아닌가를 판정한다(단계 110). 목적 프로그램이 최초의 프로그램인 경우(단계 110: T), 목적 코드 변환기는 블록 복사처리(단계 112), CTI 재배치처리(단계 113), 어드레스 정수 재배치처리(단계 114)를 순차 실행한다.
도 11에, 블록 복사처리시의 목적 코드 변환기의 동작 순서를 나타낸다. 블록 복사처리를 개시할 때, 목적 코드 변환기는 우선, 텍스트 테이블내의 명령블록에 관한 1개의 레코드를 선택하여, RUN(Si) ≥ 1가 성립하고 있는가 아닌가를 판정한다(단계 120). 여기서, Si는 선택된 레코드가 관계하는 명령블록을 나타내며, RUN(Si)는 선택된 레코드의 RUN 값(명령블록의 실행 회수)을 나타낸다.
RUN(Si) ≥ 1이 성립하고 있지 않는 경우(단계 120: F), 목적 코드 변환기는 모든 명령블록의 처리가 완료하였는가 아닌가를 판단한다(단계 127). 그리고, 모든 명령블록의 처리가 완료하고 있지 않는 경우(단계 126), 목적 코드 변환기는 단계 120으로 되돌아 가, 다음 명령블록에 대한 처리를 개시한다.
RUN(Si) ≥ 1이 성립하고 있는 경우(단계 120: T), 목적 코드 변환기는 MTXT 영역의 명령블록 Si를 CaB 영역에 복사하기 위한 복사 처리를 실행한다(단계 121).
도 12에, 복사 처리시의 목적 코드 변환기의 동작 순서를 나타낸다. 복사 처리를 개시할 때, 목적 코드 변환기는 라인 테이블내의 정보와 캐시 구성정보에 근거하여, 명령블록 Si의 복사 개시 어드레스인 복사위치 어드레스를 결정한다(단계 130). 그리고, 목적 코드 변환기는 명령블록 Si가 복사위치 어드레스를 포함하여, 라인 테이블내의 1레코드에 의해 표시되는 연속라인 영역에 대응하는 CaB 영역내의 연속영역에 배치 가능한가 아닌가를 판정한다(단계 131). 명령블록 Si가 연속영역내에 배치 가능한 경우, 목적 코드 변환기는 명령블록 Si를 그 연속영역에 복사한 다음(단계 132), 복사 처리를 종료한다.
명령블록 Si가 연속라인 영역내에 배치할 수 없는 경우, 목적 코드 변환기는 명령블록 Si를 몇개의 블록으로 분할하고, 분할한 블록을 몇개의 연속영역에 복사한다(단계 133). 이 단계에서, 마지막으로 분할된 블록을 제외한 각 블록을 복사를 할 때, 목적 코드 변환기는 그 분할 블록이 복사되는 연속영역의 최종 위치에, 다음 분할블록의 복사를 유지하기위해서 사용되는 다음 연속영역의 선두에의 무조건 분기명령을 기록한다.
복사 처리의 완료 후, 도 11에 나타낸 바와 같이, 목적 코드 변환기는 MTXT 영역내의 블록 Si의 선두에 CaB 영역내의 블록 Si에의 무조건 분기명령을 기록한다(단계 122).
이어서, 목적 코드 변환기는 CaB 영역에 복사되어야 되는 다음 블록 Sj를 결정하고, 블록 Sj의 개시 어드레스 MADDR (Sj)를 구한다(단계 S123). 그리고, 목적 코드 변환기는 블록 Si내에 분기명령 Ci가 있는가 없는가를 판정한다(단계 124).
블록 Si내에 분기명령 Ci가 없는 경우(단계 124: F), 목적 코드 변환기는 MADDR (Sj) != MADDR (Si) + SZ (Si)가 성립하고 있는가 아닌가를 판정한다(단계 128). 여기서, SZ(Si)는 명령블록 Si의 사이즈이다. MADDR(Sj) != MADDR(Si)+ SZ(Si)가 성립하고 있는 경우(단계 128: T), 목적 코드 변환기는 어드레스(MADDR(Si)+ SZ(Si))에의 무조건 분기명령을 CaB 영역에 복사한 블록 Si의 다음 위치에 기록하고(단계 129), 단계 127로 진행한다. 한편, MADDR(Sj) != MADDR(Si)+ SZ(Si)가 성립하고 있지 않는 경우, 즉, MADDR(Sj)= MADDR(Si)+ SZ(Si)가 성립하고 있는 경우(단계 128: F), 목적 코드 변환기는 무조건 분기명령을 추가하지 않고, 단계 127로 진행한다.
분기명령 Ci가 명령블록 Si내에 존재하는 경우(단계 S 124: T), 목적 코드 변환기는 MADDR (Sj) = TADDR(Ci)가 성립하는가 아닌가를 판정한다(단계 125). 여기서, TADDR(Ci)는 분기명령 Ci의 목적 어드레스(분기위치 어드레스)이다. MADDR (Sj)= TADDR(Ci)가 성립하고 있는 경우(단계 125; T), 목적 코드 변환기는 분기조건 반전 처리(단계 126)를 행한다.
이하, 도 13을 이용하여, 분기조건 반전처리시의 목적 코드 변환기의 동작 순서를 설명한다. 또한, 분기조건 반전처리를 하고 있는 이유에 대해서는, 다음에 설명하기로 한다.
분기조건 반전처리를 개시할 때, 목적 코드 변환기는 우선, 분기명령 Ci가 무효화된 분기명령인가 아닌가를 판정한다(단계 140). 무효화된 분기명령(지연무효화 분기명령)은 CPU에, 후속 명령(지연 명령)을, 분기가 행하여지는 경우에만 실행시키고, 분기가 행하여지지 않는 경우에는 실행시키지 않을 것을 지시하는 분기 명령이다.
분기 명령 Ci가 무효화된 분기명령이 아닌 경우(단계 140: F), 목적 코드 변환기는 Ci의 분기 조건을 반전한다(단계 143). 한편, 분기 명령 Ci가 무효화된 분기명령인 경우(단계 140: T), 목적 코드 변환기는 Ci의 분기 조건을 반전함과 동시에, 무효를 해제한다(단계 141). 그리고, 목적 코드 변환기는 반전한 분기명령과 지연명령 사이에, nop 명령을 삽입한다(단계 142).
즉, 무효화된 분기명령은, 어떤 조건이 충족되었을 때에만 지연 명령이 실행되는 명령이지만, 무효화된 분기명령의 분기 조건을 단지 반전한 경우, 반전된 명령은 그 조건이 충족되었을 때에만 CPU에 지연 명령을 실행시켜 버리게 된다. 이 때문에, 목적 코드 변환기는, 무효를 해제하여, nop를 삽입함으로써, 그 조건이 성립하였을 때에만 CPU에 지연 명령을 실행시키는 명령 코드의 조합을 생성하고 있다.
단계 142 혹은 단계 143을 실행한 후, 목적 코드 변환기는 분기 조건을 반전한 명령이, bn인가 아닌가를 판정한다(단계 144 ). 여기서, bn(branch never)은 항상 분기를 하지 않는 분기명령으로써, bn을 삭제하더라도 아무런 문제도 생기지 않는다. 이 때문에, 분기 조건을 반전한 명령이 bn인 경우 (단계 144: T), 목적 코드 변환기는 그 명령을 삭제한다(단계 145). 이어서, 목적 코드 변환기는 분기명령에 후속하는 명령이 nop인가 아닌가를 판정한다(단계 146). 후속 명령이 nop인 경우(단계 146; T), 목적 코드 변환기는 그 명령을 삭제한 다음(단계 147), 분기조건 반전처리를 종료한다.
변경한 분기명령이 bn이 아닌 경우(단계 144; F), 분기명령의 후속 명령이 nop가 아닌 경우(단계 146: F), 목적 코드 변환기는 아무런 명령의 삭제를 하지 않고, 분기조건 반전처리를 종료한다.
분기조건 반전처리를 종료한 후, 목적 코드 변환기는 도 11에 나타내는 바와 같이, 단계 l27로 진행하여, 전 명령블록에 대해서의 처리가 완료하였는가 아닌가를 판단한다. 그리고, 모든 엔트리에 관한 처리가 완료하였을 때에(단계 127: T), 목적 코드 변환기는 블록 복사처리를 종료하고, CTI 재배치처리를 개시한다.
도 14에 CTI 재배치 처리시의 목적 코드 변환기의 동작 순서를 나타낸다.
CTI 재배치 처리시, 목적 코드 변환기는 우선, CTI에 관한 1레코드를 텍스트 테이블에서 선택하여, 어드레스 TADDR(Ci)의 코드를 CaB 영역에 복사하고 있는 가 아닌가를 판정한다(단계 150). 여기서, TADDR(Ci)는 선택한 레코드가 관계하는 명령 Ci의 목적 어드레스이다.
어드레스 TADDR(Ci)의 코드를 CaB 영역에 복사하고 있는 경우(단계 150; T), 목적 코드 변환기는 TADDR(Ci)을 재배치하고(단계 151), MTXT 영역내의 명령 Ci에 대한 분기 예측처리(상세한 것은 후술)를 실행한다(단계 152). 그리고, 목적 코드 변환기는 명령 Ci를 포함하는 명령블록 Si를 CaB 영역에 복사하였는가 아닌가를 판정한다(단계 153). 명령블록 Si를, CaB 영역에 복사하고 있는 경우(단계 153; T), 목적 코드 변환기는 CaB 영역내에 존재하는 명령 Ci의 목적 어드레스를 재배치하고(단계 154), 그 CaB 영역내의 명령 Ci에 대한 분기 예측처리를 실행한다(단계 155).
그리고, 목적 코드 변환기는 전 CTI에 대한 처리가 완료하지 않고 있는 경우(단계 156; F)에는, 단계 150으로 되돌아가, 다음 CTI에 대한 처리를 개시한다. 한편, 전 CTI에 대한 처리가 완료하고 있는 경우(단계 156; T), 목적 코드 변환기는 변환된 프로그램을 실행할 때에 명령블록이 기억되는 캐시 라인을 나타내는 정보를 유지한 라인 로그를 작성하고(단계 157), CTI 재배치처리를 종료한다.
CTI 재배치처리를 종료한 뒤, 목적 코드 변환기는 상술한 바와 같이(도 10참조), 어드레스 정수 재배치처리를 실행한다.
어드레스 정수 재배치처리를 설명하기 전에, 도 15를 참조하여, 분기 예측처리(단계 152, 155)를 설명한다.
분기 예측처리시, 목적 코드 변환기는 대상 컴퓨터내의 CPU가 예측 분기명령을 지원하고 있는 CPU인가 아닌가를 판정한다(단계 160). 또한, 예측 분기명령이란 분기가 행하여지는 확률이 0.5이상인가 아닌가를 나타내는 예측 비트를 갖는 분기명령이다. 분기가 행하여지는 확률이 0.5를 초과하고 있는 것을 나타내는 예측 비트를 갖는 예측 분기명령, BPcc, pt가 부여되었을 때, 예측 분기명령을 지원하고 있는 CPU는 분기가 행하여진 경우에 실행되는 명령을 프리 페치한다. 분기가 행하여지는 확률이 0.5를 초과하고 있지 않는 것을 나타내는 예측 비트를 갖는 예측 분기명령, BPcc, pn이 주어졌을 때, CPU는 명령을 프리 페치하지 않고, 분기명령을 실행한다.
CPU가 예측 분기명령을 지원하고 있는 경우(단계 160; T), 목적 코드 변환기는 BT(Ci)/RUN(Ci) 0.5(분기명령의 성립 회수/실행 회수 0.5)가 성립하는 가 아닌가를 판정한다(단계 161). BT(Ci)/RUN(Ci) 0.5가 성립하는 경우(단계 161; T), 목적 코드 변환기는 Ci를 BPcc, pt로 재기록한다(단계 162). 한편, BT(Ci)/RUN(Ci) 0.5가 성립하지 않는 경우(단계 161; F), 목적 코드 변환기는 Ci를 BPcc, pn으로 재기록하고(단계 163), 예측 분기처리를 종료한다.
이하, 도 16을 사용하여, 어드레스 정수 재배치처리시의 목적 코드 변환기의 동작 순서를 설명한다. 또한, 이 처리는, 레지스터의 값에 의존하는 분기명령에 의해 제어가 MTXT 영역내의 명령으로 옮겨지는 것을 방지하기위하여 행하여지고 있다.
어드레스 정수의 재배치처리시, 목적 코드 변환기는 링크 에디터에 의해 실행가능 목적 프로그램에 수납된 어드레스 정수중에서 1개의 어드레스 정수를 선택하고, 그 선택한 어드레스가 MTXT 영역내로서, CaB 영역에 복사된 명령블록이 존재하고 있는 위치를 가리키고 있는가 아닌가를 판정한다(단계 170). 어드레스 정수가 그와 같은 위치를 가리키고 있는 경우(단계 170; T), 목적 코드 변환기는 그 어드레스 정수를 대응하는 CaB 영역내의 어드레스에 재기록하고(단계 171), 단계 172로 진행한다. 한편, 어드레스 정수가, 그와 같은 위치를 가리키고 있지 않는 경우 (단계 170; T), 목적 코드 변환기는 어드레스 정수의 재배치를 행하지 않고, 단계 172로 진행한다.
단계 172에 있어서, 목적 코드 변환기는 모든 어드레스 정수에 대한 처리가 완료하였는가 아닌가를 판단한다. 모든 어드레스 정수에 대한 처리가 완료하지 않은 경우(단계 172; F), 목적 코드 변환기는 단계 170로 되돌아가, 다음 어드레스 정수에 대한 처리를 개시한다. 모든 어드레스 정수에 대한 처리의 완료를 인식하였을 때(단계 172; T)에, 목적 코드 변환기는 어드레스 정수 재배치처리를 종료한다.
어드레스 정수 재배치처리가 종료하였을 때에, 실행가능 목적 프로그램 A'에 대한 변환 처리는 완료한다. 즉, 실행가능 목적 프로그램 A보다도 빨리 실행되는 실행가능 목적 프로그램 A가 생성된다.
그리고, 도 10에 모식적으로 나타내고 있는 바와 같이, 변환해야할 다음 실행가능 목적 프로그램 B에 대한 변환 처리가 개시된다.
이 경우, 목적 프로그램 B'는 최초의 프로그램이 아니기때문에, 목적 코드 변환기는 단계 111로 진행하고, 목적 프로그램 A'에 대한 CTI 재배치처리로 작성된 라인로그 A내의 정보에 근거하여, 목적 프로그램 A내의 명령블록의 유지에 사용되는 캐시 라인에 관한 레코드를 라인 테이블로부터 제거한다. 라인 테이블의 내용을 갱신한 뒤에, 목적 코드 변환기는 목적 프로그램 B'에 대한 블록 복사 처리(단계 112), CTI 재배치처리(단계 113), 어드레스 정수의 재배치처리(단계 114)를 순차 실행한다.
따라서, 도 17에 모식적으로 나타낸 바와 같이, 목적 프로그램 B내의 실행된 명령블록은 실행되었을 때에, 복사된 명령블록의 기억에 사용되지 않은 캐시 라인에 기억되는 것과 같은 목적 프로그램 A형으로 CaB 영역에 복사된다.
이하, 상술한 이진 프로그램 변환장치의 동작 순서를 프로그램 리스트를 사용하여 더욱 구체적으로 설명한다. 또한, 이하의 설명에서는, 편의상, 이진 프로그램 변환장치(목적 코드 변환기)는 다른 처리를 행하기 전에, 모든 실행된 명령블록을 CaB 영역에 복사하는 것으로 가정한다. 또한, 각 프로그램내의 표기는 어떤 컴퓨터 구조용 어셈블러 언어가 기초로 되어 있다.
우선, 도 19에 나타낸 실행가능 목적 프로그램이 변환되는 경우를 예로서, 이진 프로그램 변환장치의 기본적인 동작 순서를 설명한다. 또한, 리스트내의 명령 seticc는 조건부 분기명령이 참조하는 조건 코드를 설정하는 명령을 뜻하고 있다. 명령 be(branch equal)는 equal 조건이 성립한 경우에 분기하는 명령이다. be에 이어지는 c-.는 분기처의 오프셋 값이, 블록 c의 개시 어드레스에서 현재의 어드레스(.)를 감산함으로써 얻어지는 값임을 나타내고 있다. 또한, delay는 분기명령과 동시에 실행되는 지연명령이다. 이 지연명령은 분기가 행하여지는 경우에도 실행된다. 즉, 분기명령과 delay가 실행된 뒤에, 분기명령의 목적 명령이 실행된다.
이미 설명한 바와 같이, 본 이진 프로그램 변환장치에 의한 프로그램의 변환시에는 프로파일러에 의해 실행된 명령블록만이 CaB 영역에 복사된다.
이 때문에, 도 19에 나타낸 프로그램내의 블록 a, b가 프로파일러에 의해 실행된 경우, 프로그램은 도 20에 나타낸 프로그램으로 수정된다. 즉, 실행된 명령블록 a, b의 복사인 명령블록 a', b'가 CaB 영역에 존재하는 프로그램이 생성된다.
그리고, 명령블록 a', b'가 실행되도록 하기위하여, 재배치가 행하여진다. 그 결과, 도 20에 나타낸 프로그램은 도 21에 나타낸 프로그램으로 변환된다. 즉, CaB 영역의 명령블록 a'에 대응하는 MTXT 영역내의 명령블록 a의 선두에는, CaB 영역내의 블록 a'에의 무조건 분기명령 ba, a a'-.가 설정된다(* 1). 마찬가지로, MTXT 영역내의 명령블록 b의 선두에는, CaB 영역내의 블록 b'에의 무조건 분기명령 ba, a b'-.가 설정된다(* 2). 또한, 명령 ba, a a'-., ba, a b'-.내의 a는 그 명령이 CPU에 후속하는 명령을 실행시키지 않는 무효화된 분기명령임을 나타내고 있다.
또한, MTXT 영역내의 명령블록 c에 제어가 이동되도록 하기위하여, CaB 영역내의 명령블록 a'내의 분기명령의 목적 오프셋 값이 재기록된다(* 3). CaB 영역내의 명령블록 b'에 관해서는, 명령블록 b에 이어지는 명령블록 c가 CaB 영역에 복사되어 있지 않기때문에, 명령블록 b'의 말미에 무조건 분기명령 ba, a c-.이 삽입된다(* 4).
이어서, 프로파일러에 의해 도 19에 나타낸 프로그램내의 블록 a와 c가 실행된 경우를 예로서, 분기조건 반전처리시의 동작 순서를 설명한다.
이 경우, 도 19에 나타낸 프로그램은 도 22에 나타낸 프로그램으로 변환된다. 즉, 실행된 명령블록 a, c의 선두에는, 각각 CaB 영역내의 명령블록 a', c'에의 무조건 분기명령(* 5, * 7)이 설정된다. 또한, 블록 a내의 분기명령의 분기처가 CaB 영역에 복사가 생성된 명령블록 c로 되어 있기때문에, 분기위치가 CaB 영역내의 명령블록 c'로 되도록 그 분기명령의 목적 오프셋 값이 재기록된다(* 6).
더욱이, 블록 a'내의 분기명령 be의 목적이 CaB 영역내의, 블록 a'에 이어지는 위치에 복사가 형성된 블록 c이기때문에, 분기조건 반전처리시에 그 명령이 분기명령 bne(branch not equal)으로 치환되어, MTXT 영역중의 명령블록 b로 분기하도록 그 목적 오프셋 값이 재기록된다(* 8).
이어서, 도 23에 나타낸 프로그램이 변환시켜야 할 것으로써 이진 프로그램 변환장치에 부여되어, 블록 a와 c가 프로파일러에 의해 실행된 경우를 예로서, 아날 분기명령에 대한 분기조건 반전처리시의 동작 순서를 설명한다.
이 경우, 이진 프로그램 변환장치에 의해 도 24에 나타낸 프로그램이 생성된다. 즉, MTXT 영역에 대해서는, 아날 분기명령을 포함하지 않을 때와 마찬가지로, 무조건 분기명령의 기록과 목적 오프셋 값의 재배치가 행하여진다(도 22참조).
그리고, 명령블록 a'내의 be, a c-.(도시하지 않음)는 그 분기 목적(명령블록 c)이 명령블록 a'의 다음에 복사되어 있기때문에, 분기조건이 반전되어 아날이 오프로 된다. 즉, 무효화된 분기명령 be, a는 무효가 아닌 bne(branch not equal)으로 재기록된다. 또한, MTXT 영역내의 블록 b에의 분기가 행하여지도록, bne의 목적 오프셋 값이 재기록된다(* 9). 더욱이, 재기록한 명령과 delay 사이에 nop가 삽입된다(* 10).
이렇게 하여 변환된 프로그램이, 블록 a'내의 분기명령“bneb-에 있어서 분기가 행하여지는 조건하에서 실행된 경우, 후속하는 nop는 실행되지만, 블록 a'내의 delay는 실행되지 않는다. 한편, 프로그램이 블록 a'내의 분기명령bne b-에 있어서 분기가 행하여지지 않은 조건하에서 실행된 경우에는, delay가 실행되게 된다. 즉, 이진 프로그램 변환장치에 의해서 생성된 프로그램은 최초의 프로그램과 마찬가지로 CPU를 제어하는 것으로 되어 있다.
이하, 도 25에 나타낸 프로그램이 변환을 위하여 부여되어, 프로파일러에 의해서 명령블록 a와 c가 실행된 경우를 예로서, 예측 분기처리시의 동작 순서가 설명된다. 또한, 이하의 설명에서는 실행된 명령블록내의 분기명령(* 11, * 12)에 관한 BT/RUN 값은 0.5을 초과하고 있는 것으로 한다.
이러한 경우, 도 25에 나타낸 프로그램은 도 26에 나타낸 프로그램으로 변환된다. 즉, 우선, 프로그램에 대하여, 실행된 명령블록의 복사, 재배치, 분기명령의 분기조건의 반전이 행하여진다. 그 후, 처리된 프로그램의 MTXT 영역내의, 분기가 행하여질 확률이 높은 분기명령 be, bg는 각각기 대응하는 예측 분기명령 be, pt, bg, pt로 치환된다(* 13, * 14). 블록 c'내의 복사된 분기명령 bg도 대응하는 예측 분기명령 bg, pt로 치환된다(* 16). 한편, 블록 a'내의 복사된 분기명령에 관해서는 분기조건을 반전하는 처리가 행하여지고 있기때문에, 분기가 행하여질 확률이 낮을 때에 이용되는 예측 분기명령 bne, pn으로 치환된다(* 15).
이상, 상세히 설명한 바와 같이, 이진 프로그램 변환장치는 변환해야 할 목적 프로그램이 주어졌을 때, 각 목적 프로그램에 그 영역내의 워드가 캐시 메모리가 다른 위치에 기억되게 되는 CaB 영역을 부가하여, 실행되는 명령블록을 체크한다. 그리고, 실행되는 명령블록의 전체 사이즈가 캐시 메모리 사이즈보다도 작은 경우에는, 실행되는 전 명령블록을 CaB 영역내에 복사하고, CaB 영역내의 명령블록의 복사가 사용되도록 몇개의 명령코드를 수정한다. 실행되는 명령블록의 전체 사이즈가 캐시 메모리사이즈보다도 큰 경우에는, 실행되는 명령블록의 일부를, 그것들이 데이터의 기억에 빈번히 사용되지 않은 캐시 라인에 판독되도록 CaB 영역내에 복사하고, CaB 영역내의 명령블록의 복사가 사용되도록 몇개의 명령코드를 수정한다.
따라서, 본 이진 프로그램 변환장치에 의하면, 원래의 목적 프로그램의, 실행되는 명령블록의 전체 사이즈가 캐시 메모리사이즈보다도 큰 경우에는, 명령 액세스의 경합에 의한 미스율이 원래의 목적 프로그램보다도 낮은 새로운 목적 프로그램을 얻을 수 있게 된다. 또한, 원래의 목적 프로그램의, 실행되는 명령블록의 총 사이즈가 캐시 메모리 사이즈보다도 작은 경우에는, 명령 액세스의 경합에 의한 미스가 발생하지 않고, 더구나, 명령 액세스와 데이터 액세스의 경합에 의한 미스의 발생 빈도도 낮은 새로운 목적 프로그램를 얻을 수 있게 된다.
더욱이, 변환은 명령블록을 CaB 영역에 챠지하는 것으로 행하여지기때문에, 이진 프로그램 변환장치에 의해 생성된 목적 프로그램은 원래의 프로그램보다도 불필요한 명령블록의 기억을 위하여 소비되는 캐시 메모리의 용량이 적게 되어 있다. 바꾸어 말하면, 이진 프로그램 변환장치는 캐시 메모리의 라인을 효율적으로 이용하는 목적 프로그램을 생성한다.
예컨대, 도 27의 (a)에 나타낸 바와 같이 캐시 메모리가 사용되는 목적 프로그램은 이진 프로그램 변환장치에 의해서, 도 27의 (b)에 나타낸 바와 같이 캐시 메모리가 사용되는 목적 프로그램으로 변환된다. 또한, 도 27의 (a) 및 (b)에서, 칼럼 line의 값은 캐시 메모리의 라인 번호를 나타내며, 칼럼 wi(i= 0∼15)는 대응하는 캐시 라인의, i번째의 워드(4바이트)에의 액세스 회수를 나타내고 있다. 칼럼 액세스내의 값은 대응하는 캐시 라인의, 0번에서 15번째의 워드에 대한 액세스 회수의 총합을 나타내고 있다. 칼럼 wc의 값은 대응하는 캐시 라인내의 액세스(사용)된 워드수를 나타내고 있다. 칼럼 n내의 값은 대응하는 캐시 라인에 기억된 프로그램 라인수를 나타내고 있다. 즉, n의 값이 1을 초과하는 캐시 라인은 여러차례 별도의 프로그램 라인에 의해 치환된 라인으로 되어있다.
도 27의 (a)에서 명백하듯이, 변환 전의 목적 프로그램을 실행한 경우, 캐시 라인이 많은 불필요한 워드를 포함하는 프로그램 라인의 기억에 사용되는 경우가 있다(wc의 값을 참조할 것).
이것에 대하여, 이진 프로그램 변환장치는 실행되는 명령블록을 CaB 영역에 챠지하여, 새로운 목적 프로그램을 생성하기때문에, 생성된 목적 프로그램을 실행한 경우, 도 27의 (b)에 나타내는 바와 같이, 각 캐시 라인은 불필요한 명령블록을 거의 포함하지 않은 1개의 프로그램 라인의 기억에 사용된다. 실제, 도 27의 (b)에 표시되어 있는 캐시 라인의 워드 사용율의 평균치는 원래의 목적 프로그램의 평균치가 59.4%(9.5 워드/라인)인데, 94.4%(15.1 워드/라인)으로 되어 있다. 이와 같이, 이진 프로그램 변환장치에 의하면, 워드 사용율이 높은 목적 프로그램을 얻을 수 있다.
또한, 새로운 목적 프로그램은, 도 27의 (a)에 나타나 있는 원래의 목적 프로그램의 line이 3698이고 wc가 15인 열(제 2열)에 관한 프로그램 라인에 포함되어 있는 명령코드가 라인 번호가 9742인 캐시 라인의 제10 내지 제15번째의 워드와, 라인번호가 9743인 캐시 라인의 제0 내지 제9번째의 워드에 기억되고, 3, 5, 6, 8, 10, 12, 15열에 관계하는 프로그램 라인에 관계하여 액세스된 명령코드가 라인번호가 9743에서 9748까지의 캐시 라인에 기억되며, 나머지 명령코드가 라인번호가 9742, 9748, 9749인 캐시 라인의 나머지 워드(명령코드에 할당되어 있지 않는 워드)에 기억되도록 생성되어 있다.
또한, 이진 프로그램 변환장치는 목적 프로그램을 분기의 성립에 의한 제어의 이행 빈도가 적어지도록 개량하고, 더구나, 몇개의 명령코드를 보다 적합한 명령코드로 치환하기때문에, 이와 같은 개량에 의해서도, 목적 프로그램의 동작 속도가 향상되게 된다.
즉, 일반적으로, 분기가 행하여져, 제어가 떨어져 있는 어드레스로 이행하는 경우인 쪽이, 다음 어드레스로 제어가 이행하는 경우보다도 시간이 걸리기때문에, 분기명령에 관한 개량은 목적 프로그램의 속도를 향상시킨다. 또한, 다른 CPU에서는 고속으로 실행할 수 있는 명령코드(혹은 명령코드의 조합)가 목적으로 하는 CPU에서는 고속으로 실행할 수 없는 것이 종종 있다. 또한, 그와 같은 케이스에서는, 목적으로 하는 CPU가 통상, 그 명령코드로 치환 가능한 명령코드를 가지고 있는 것도 사실이다. 이 때문에, 명령코드의 치환도 목적 프로그램의 속도를 향상시킨다.
이와 같이, 본 이진 프로그램장치에 의하면, 여러가지의 최적화가 최초의 이진 프로그램에 실시되기 때문에, 목적으로 하는 컴퓨터에 있어서 지극히 고속으로 동작하는 새로운 이진 프로그램을 용이하게 얻을 수 있게 된다.
또한, 이상 설명한 이진 프로그램 변환기술은 실시형태의 컴퓨터 이외의 여러가지 컴퓨터에 적용할 수 있다.
예컨대, 실시형태의 컴퓨터는 16384개의, 64바이트의 라인을 갖는 캐시 메모리를 구비하고 있지만, 본 기술은 임의의 수, 사이즈의 라인을 갖는 캐시 메모리를 구비한 컴퓨터에 당연히 적용할 수 있다. 또한, CPU와 메인 메모리 사이에 복수의 캐시 메모리가 실제로 장착된 컴퓨터도 존재하고 있다. 본 기술은, 그와 같은 컴퓨터에도 적용할 수 있다.
더욱이, 실시형태의 캐시 메모리는 데이터와 명령을 기억하는 통합형의 캐시 메모리이지만, 데이터를 기억하기 위한 데이터 캐시와 명령을 기억하기위한 명령 캐시로 이루어지는, 소위, 분리형 캐시 메모리를 구비하는 컴퓨터에도 적용 가능하다. 그와 같은 컴퓨터에 본 기술을 적용하는 경우, 명령 액세스와 데이터 액세스의 경합에 의한 미스가 생기지 않기때문에, 데이터 사용 라인 테이블 관련의 처리가 행하여지지 않도록 할 수 있다.
실시형태의 컴퓨터는, 다이렉트 맵 캐시를 구비하는 것이었지만, 본 기술은 셋트 결합 캐시 혹은 풀 결합 캐시를 구비한 컴퓨터에도 적용 가능하다. 그와 같은 캐시로서는, 요구된 워드의 어드레스로부터 그 워드를 포함하는 라인이 기억되는 캐시 라인을 결정할 수는 없다. 그렇지만, 요구된 워드를 포함하는 라인이 기억되는 세트를 결정할 수는 있으며, 또한, 그 라인은 그 세트의, 라인의 기억에 사용되고 있지 않은 캐시 라인에 기억된다. 따라서, 이들 캐시에 관해서도, 요구된 워드의 어드레스에 근거하여 라인이 기억되는 캐시 라인을 특정할 수 있게 된다. 이 때문에, 본 기술은 세트, 혹은 풀 결합 캐시를 구비한 컴퓨터에도 적용할 수 있다.
당연히, 본 기술은, 가상 캐시가 아니라, 물리 어드레스에 의해서 indexing되는 물리적 캐시가 구비된 컴퓨터에도 적용할 수 있다.
요컨대, 본 이진 프로그램 변환기술은, 그 어드레스에서 요구되는 어워드의 캐시 메모리에서의 수납 위치를 추정할 수 있는 모든 컴퓨터에 적용할 수 있다.
또한, 본 기술의 일부는, 캐시 메모리를 구비하고 있지 않는 컴퓨터에 적용할 수 있다. 예컨대, 분기 예측처리에 있어서 교시되어 있는 치환 기술은 캐시 메모리를 갖추지 않는 컴퓨터에 대하여도 유효하다. 왜냐하면, 이 기술을 이용하면, 목적으로 하는 컴퓨터에 있어서는 부적당한 명령코드를 포함하는 최초의 이진 프로그램을 그 컴퓨터에 적합한 명령코드를 포함하는 새로운 목적 프로그램으로 변환할 수 있기 때문이다.

Claims (14)

  1. 복수의 제1 명령블록으로 이루어지는 제1 이진 프로그램을 변환함으로써, 캐시 메모리를 구비한 어떤 컴퓨터에서 실행되는 제2 이진 프로그램을 생성하기 위하여 사용되는 이진 프로그램 변환장치에 있어서,
    상기 제1 이진 프로그램을 실행하는 실행 수단과,
    상기 실행 수단에 의해 실행된 제1 명령블록을 나타내는 실행 블록정보를 생성하는 생성 수단과,
    상기 생성 수단에 의해 생성된 실행 블록정보에 근거하여, 상기 복수의 제1 명령블록에 대응하는 제2 명령블록을 갖는 제2 이진 프로그램으로서, 상기 컴퓨터에서 실행되었을 때에, 상기 컴퓨터에 상기 실행 수단에 의해 실행된 제1 명령블록에 대응하는 제2 명령블록을 상기 캐시 메모리의 다른 위치에 기억시키는 제2 이진 프로그램을 작성하는 작성 수단을 구비하는 것을 특징으로 하는 이진 프로그램 변환장치.
  2. 제1항에 있어서, 상기 작성 수단은 상기 실행 수단에 의해 실행된 제1 명령블록에 대응하는 제2 명령블록이 연속하여 배치된 부분을 갖는 제2 이진 프로그램을 작성하는 것을 특징으로 하는 이진 프로그램 변환장치.
  3. 제1항에 있어서, 상기 작성 수단에 의해 작성된 제2 이진 프로그램이 상기 컴퓨터에서 실행되었을 때에 사용되는 상기 캐시 메모리의 라인을 나타내는 라인 데이터를 생성하는 생성 수단과,
    복수의 제3 명령블록으로 이루어지는 제3 이진 프로그램을 실행하도록 상기 실행 수단을 제어하고, 상기 실행 수단에 의해 실행된 제3 명령블록을 나타내는 제2 실행 블록정보를 생성하도록 상기 생성 수단을 제어하며, 상기 제2 실행 블록정보와 상기 라인 데이터에 근거하여, 상기 복수의 제3 명령블록에 대응하는 제4 명령블록을 갖는 제4 이진 프로그램으로서, 상기 컴퓨터에서 실행되었을 때에, 상기 컴퓨터에, 상기 실행 수단에 의해 실행된 제3 명령블록에 대응하는 제4 명령블록을, 상기 캐시 메모리의 상기 라인 데이터로서 표시되는 라인을 제외한 라인내의 다른 위치에 기억시키는 제4 이진 프로그램을 작성하도록, 상기 작성 수단을 제어하는 제어 수단을 추가로 구비하는 것을 특징으로 하는 이진 프로그램 변환장치.
  4. 제1항에 있어서, 상기 실행 수단에 의해 상기 제1 이진 프로그램의 실행상태를 모니터함으로써, 데이터 액세스에 의한 상기 캐시 메모리 각 라인의 이용 빈도를 인식하는 인식 수단과,
    상기 인식 수단의 인식 결과에 근거하여, 상기 캐시 메모리의 전체 라인중에서 상기 실행 수단에 의해 실행된 제1 명령블록에 대응하는 제2 명령블록의 기억에 사용하는 라인을 선택하는 선택 수단을 추가로 구비하며,
    상기 작성 수단은 상기 컴퓨터에서 실행되었을 때에, 상기 컴퓨터에 상기 실행 수단에 의해 실행된 제1 명령블록에 대응하는 제2 명령블록을 상기 캐시 메모리의 상기 선택 수단에 의해 선택된 라인내의 다른 위치에 기억시키는 제2 이진 프로그램을 작성하는 것을 특징으로 하는 이진 프로그램 변환장치.
  5. 제2항에 있어서, 상기 작성 수단에 의해 작성된 제2 이진 프로그램중에서, 말미에 분기명령이 존재하는 제2 명령블록으로서, 그 분기명령의 분기위치가 다음 명령블록인 제2 명령블록을 탐색하는 탐색 수단과,
    상기 탐색 수단에 의해 탐색된 제2 명령블록과 다음 제2 명령블록 사이의 이행이 분기에 관계없이 행하여지도록, 상기 분기명령의 분기조건 및 분기위치를 변경하는 변경 수단을 추가로 구비하는 것을 특징으로 하는 이진 프로그램 변환장치.
  6. 제1 이진 프로그램을 어떤 컴퓨터에서 실행되는 제2 이진 프로그램으로 변환하는 이진 프로그램 변환장치에 있어서,
    상기 제1 이진 프로그램중에서 각각 적어도 1개의 미리 정해진 명령코드로 이루어지는 제1 명령열을 탐색하는 탐색 수단과,
    상기 탐색 수단에 의해 탐색된 제1 명령열을 이 제1 명령열에 할당된 제2 명령열로 치환함으로써, 제2 이진 프로그램을 작성하는 작성 수단을 구비하는 것을 특징으로 하는 이진 프로그램 변환장치.
  7. 복수의 제1 명령블록으로 이루어지는 제1 이진 프로그램을 변환함으로써, 캐시 메모리를 구비한 어떤 컴퓨터에서 실행되는 제2 이진 프로그램을 생성하기위하여 사용되는 이진 프로그램 변환방법에 있어서,
    상기 제1 이진 프로그램을 실행하는 실행 단계와,
    상기 실행 단계에서 실행된 제1 명령블록을 나타내는 실행 블록정보를 생성하는 생성 단계와,
    이 생성 단계에서 생성된 실행 블록정보에 근거하여, 상기 복수의 제1 명령블록에 대응하는 제2 명령블록을 갖는 제2 이진 프로그램으로서, 상기 컴퓨터에서 실행되었을 때에, 상기 컴퓨터에, 상기 실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록을 상기 캐시 메모리의 다른 위치에 기억시키는 제2 이진 프로그램을 작성하는 작성 단계를 포함하는 것을 특징으로 하는 이진 프로그램 변환방법.
  8. 제7항에 있어서, 상기 작성 단계는 상기 실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록이 연속하여 배치된 부분을 갖는 제2 이진 프로그램을 작성하는 것을 특징으로 하는 이진 프로그램 변환방법.
  9. 제7항에 있어서, 상기 작성 단계에서 작성된 제2 이진 프로그램이 상기 컴퓨터에서 실행되었을 때에 사용되는 상기 캐시 메모리의 라인을 나타내는 라인 데이터를 생성하는 생성 단계와,
    복수의 제3 명령블록으로 이루어지는 제3 이진 프로그램을 실행하도록 상기 실행 단계를 제어하고, 상기 실행 단계에서 실행된 제3 명령블록을 나타내는 제2 실행 블록정보를 생성하도록 상기 생성 단계를 제어하며, 상기 제2 실행 블록정보와 상기 라인 데이터에 근거하여, 상기 복수의 제3 명령블록에 대응하는 제4 명령블록을 갖는 제4 이진 프로그램으로서, 상기 컴퓨터에서 실행되었을 때에, 상기 컴퓨터에 상기 실행 단계에서 실행된 제3 명령블록에 대응하는 제4 명령블록을 상기 캐시 메모리의 상기 라인 데이터로써 표시되는 라인을 제외한 라인내의 다른 위치에 기억시키는 제4 이진 프로그램을 작성하도록 상기 작성 단계를 제어하는 제어단계를 추가로 포함하는 것을 특징으로 하는 이진 프로그램 변환방법.
  10. 제7항에 있어서, 상기 실행 단계에 의해 상기 제1 이진 프로그램의 실행상태를 모니터함으로써, 상기 캐시 메모리의 각 라인의 데이터 액세스에 의한 이용 빈도를 인식하는 인식 단계와,
    상기 인식 단계의 인식 결과에 근거하여, 상기 캐시 메모리의 전체 라인중에서 상기 실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록의 기억에 사용하는 라인을 선택하는 선택 단계를 추가로 포함하며,
    상기 작성 단계는 상기 컴퓨터에서 실행되었을 때에, 상기 컴퓨터에, 상기 실행 단계에서 실행된 제1 명령블록에 대응하는 제2 명령블록을 상기 캐시 메모리의 상기 선택 단계에서 선택된 라인내의 다른 위치에 기억시키는 제2 이진 프로그램을 작성하는 것을 특징으로 하는 이진 프로그램 변환방법.
  11. 제8항에 있어서, 상기 작성 단계에서 작성된 제2 이진 프로그램중에서, 말미에 분기명령이 존재하는 제2 명령블록으로서, 그 분기명령의 분기위치가 다음 명령블록인 제2 명령블록을 탐색하는 탐색 단계와,
    상기 탐색 단계에서 탐색된 제2 명령블록과 다음 제2 명령블록 사이의 이행이 분기에 관계없이 행하여지도록, 상기 분기명령의 분기조건 및 분기위치를 변경하는 변경 단계를 추가로 포함하는 것을 특징으로 하는 이진 프로그램 변환방법.
  12. 제1 이진 프로그램을, 어떤 컴퓨터에서 실행되는 제2 이진 프로그램으로 변환시키는 이진 프로그램 변환방법에 있어서,
    상기 제1 이진 프로그램중에서 각각 적어도 1개의 미리 정해진 명령코드로 이루어지는 제1 명령열을 탐색하는 탐색 단계와,
    이 탐색 단계에서 탐색된 제1 명령열을 제1 명령열에 할당된 제2 명령열로 치환함으로써, 제2 이진 프로그램을 작성하는 작성 단계를 포함하는 것을 특징으로 하는 이진 프로그램 변환방법.
  13. 복수의 제1 명령블록으로 이루어지는 제1 이진 프로그램을 실행하는 실행 수단과,
    상기 실행 수단에 의해 실행된 제1 명령블록을 나타내는 실행 블록정보를 생성하는 생성 수단과,
    이 생성 수단에 의해 생성된 실행 블록정보에 근거하여, 상기 복수의 제1 명령블록에 대응하는 제2 명령블록을 갖는 제2 이진 프로그램으로서, 상기 컴퓨터에서 실행되었을 때에, 상기 컴퓨터에 상기 실행 수단에 의해 실행된 제1 명령블록에 대응하는 제2 명령블록을 상기 캐시 메모리의 다른 위치에 기억시키는 제2 이진 프로그램을 작성하는 작성 수단을 갖는 캐시 메모리가 있는 컴퓨터로서 기능시키기 위한 프로그램이 기억된 것을 특징으로 하는 프로그램 기억매체.
  14. 상기 제1 이진 프로그램중에서 각각 적어도 1개의 미리 정해진 명령코드로 이루어지는 제1 명령열을 탐색하는 탐색 수단과,
    이 탐색 수단에 의해 탐색된 제1 명령열을 제1 명령열에 할당된 제2 명령열로 치환함으로써, 제2 이진 프로그램을 작성하는 작성 수단을 갖는 컴퓨터로서 기능시키기 위한 프로그램이 기억된 것을 특징으로 하는 프로그램 기억매체.
KR1019970054724A 1996-10-28 1997-10-24 이진프로그램변환장치및이진프로그램변환방법 KR100297172B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP28567096 1996-10-28
JP96-285670 1996-10-28

Publications (2)

Publication Number Publication Date
KR19980033137A true KR19980033137A (ko) 1998-07-25
KR100297172B1 KR100297172B1 (ko) 2001-08-07

Family

ID=17694540

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970054724A KR100297172B1 (ko) 1996-10-28 1997-10-24 이진프로그램변환장치및이진프로그램변환방법

Country Status (5)

Country Link
US (1) US6591414B2 (ko)
EP (1) EP0838755B1 (ko)
KR (1) KR100297172B1 (ko)
CN (1) CN1152287C (ko)
DE (1) DE69735342T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100345401B1 (ko) * 1999-10-19 2002-07-26 한국전자통신연구원 바이너리 프로그램 변환 장치 및 그 방법

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2344907A (en) * 1998-12-19 2000-06-21 Int Computers Ltd Instruction translation and execution mechanism
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6675377B1 (en) * 1999-09-13 2004-01-06 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus
US6415379B1 (en) * 1999-10-13 2002-07-02 Transmeta Corporation Method and apparatus for maintaining context while executing translated instructions
JP2001273138A (ja) * 2000-03-24 2001-10-05 Fujitsu Ltd プログラム変換装置および方法
JP2001344120A (ja) * 2000-05-30 2001-12-14 Hitachi Ltd プログラム制御システム及びプログラム制御方法
GB2364852A (en) * 2000-07-14 2002-02-06 Nokia Mobile Phones Ltd Alert signal generation
US6834383B2 (en) * 2001-11-26 2004-12-21 Microsoft Corporation Method for binary-level branch reversal on computer architectures supporting predicated execution
US7908486B2 (en) * 2003-03-10 2011-03-15 Igt Dynamic configuration of a gaming system
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US20070216696A1 (en) * 2006-03-16 2007-09-20 Toshiba (Australia) Pty. Limited System and method for document rendering employing bit-band instructions
US8719807B2 (en) 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US8286152B2 (en) * 2007-08-22 2012-10-09 International Business Machines Corporation Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance
JP5082716B2 (ja) * 2007-09-20 2012-11-28 富士通セミコンダクター株式会社 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
US8700860B2 (en) * 2009-10-16 2014-04-15 Canon Kabushiki Kaisha Information processing apparatus, method and computer program
JP5778983B2 (ja) * 2011-05-17 2015-09-16 キヤノン株式会社 データ処理装置、データ処理装置の制御方法、およびプログラム
US8661222B2 (en) * 2011-09-13 2014-02-25 International Business Machines Corporation Data object profiling during program execution
JP2013079860A (ja) 2011-10-04 2013-05-02 Advantest Corp ソケット及び電子部品試験装置
US20130138888A1 (en) * 2011-11-30 2013-05-30 Jama I. Barreh Storing a target address of a control transfer instruction in an instruction field
US10193927B2 (en) * 2012-02-27 2019-01-29 University Of Virginia Patent Foundation Method of instruction location randomization (ILR) and related system
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US20130227529A1 (en) * 2013-03-15 2013-08-29 Concurix Corporation Runtime Memory Settings Derived from Trace Data
CN104063234B (zh) * 2013-03-19 2017-06-27 华为技术有限公司 一种兼容方法及装置
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
US9772927B2 (en) 2013-11-13 2017-09-26 Microsoft Technology Licensing, Llc User interface for selecting tracing origins for aggregating classes of trace data
US10209962B2 (en) * 2017-02-06 2019-02-19 International Business Machines Corporation Reconstructing a high level compilable program from an instruction trace

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212794A (en) * 1990-06-01 1993-05-18 Hewlett-Packard Company Method for optimizing computer code to provide more efficient execution on computers having cache memories
US5317738A (en) * 1992-02-18 1994-05-31 Ncr Corporation Process affinity scheduling method and apparatus
JP3206100B2 (ja) 1992-05-19 2001-09-04 東レ株式会社 自動車ラジエタータンクトップおよびベース
US5752038A (en) * 1994-03-16 1998-05-12 Microsoft Corporation Method and system for determining an optimal placement order for code portions within a module
US6129458A (en) * 1994-03-23 2000-10-10 At&T Global Information Solutions Company Cache optimization method
US5664191A (en) * 1994-06-30 1997-09-02 Microsoft Corporation Method and system for improving the locality of memory references during execution of a computer program
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US5815720A (en) * 1996-03-15 1998-09-29 Institute For The Development Of Emerging Architectures, L.L.C. Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system
US5768593A (en) * 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US5765204A (en) * 1996-06-05 1998-06-09 International Business Machines Corporation Method and apparatus for adaptive localization of frequently accessed, randomly addressed data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100345401B1 (ko) * 1999-10-19 2002-07-26 한국전자통신연구원 바이너리 프로그램 변환 장치 및 그 방법

Also Published As

Publication number Publication date
DE69735342D1 (de) 2006-04-27
CN1181528A (zh) 1998-05-13
US6591414B2 (en) 2003-07-08
CN1152287C (zh) 2004-06-02
DE69735342T2 (de) 2006-08-03
US20010003822A1 (en) 2001-06-14
EP0838755A3 (en) 2000-05-24
EP0838755B1 (en) 2006-03-01
KR100297172B1 (ko) 2001-08-07
EP0838755A2 (en) 1998-04-29

Similar Documents

Publication Publication Date Title
KR100297172B1 (ko) 이진프로그램변환장치및이진프로그램변환방법
JP2505086B2 (ja) アドレス生成機構及びデ―タの事前取り出し方法
US4679141A (en) Pageable branch history table
US5721865A (en) Information processing apparatus with prefetch control for prefetching data structure from memory through cache memory
JP3739491B2 (ja) プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御
KR100278328B1 (ko) 캐시 미스 버퍼
US20060212654A1 (en) Method and apparatus for intelligent instruction caching using application characteristics
JPH05108480A (ja) デジタルデータ処理システムにおけるフアイルシステムのためのキヤツシユのアレンジメント
US5423048A (en) Branch target tagging
US6247027B1 (en) Facilitating garbage collection during object versioning for space and time dimensional computing
KR100335672B1 (ko) 메모리페이지크로싱예측주석을사용하는실제주소지정데이타기억구조로부터의빠른데이타검색
US6668307B1 (en) System and method for a software controlled cache
CN109461113B (zh) 一种面向数据结构的图形处理器数据预取方法及装置
JPH04225431A (ja) 命令キャッシュ効率を増大するコンピュータ命令をコンパイルする方法
US7735074B2 (en) Code outlining without trampolines
EP1035477B1 (en) Improved cache memory and system
JPH1069389A (ja) ブランチの再配置によるタグなしブランチ予測キャッシュを活用する装置
Kallahalla et al. PC-OPT: optimal offline prefetching and caching for parallel I/O systems
US7437504B2 (en) Reading a storage medium
JP3973129B2 (ja) キャッシュメモリ装置及びそれを用いた中央演算処理装置
EP1454233A2 (en) System and method for insertion of prefetch instructions by a compiler
JP2954178B1 (ja) 可変式キャッシュ方式
JP3425069B2 (ja) バイナリ・プログラム変換装置および方法
US20080256328A1 (en) Customizable memory indexing functions
JPH0651982A (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
FPAY Annual fee payment

Payment date: 20090508

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee