KR20040071446A - 쓰레드 바이너리 컴파일러에 의하여 프로그램에서 여러개의 쓰레드를 다이내믹하게 추출하는 컴퓨터 시스템 및그 동시 다중 쓰레딩 방법 - Google Patents
쓰레드 바이너리 컴파일러에 의하여 프로그램에서 여러개의 쓰레드를 다이내믹하게 추출하는 컴퓨터 시스템 및그 동시 다중 쓰레딩 방법 Download PDFInfo
- Publication number
- KR20040071446A KR20040071446A KR1020030007414A KR20030007414A KR20040071446A KR 20040071446 A KR20040071446 A KR 20040071446A KR 1020030007414 A KR1020030007414 A KR 1020030007414A KR 20030007414 A KR20030007414 A KR 20030007414A KR 20040071446 A KR20040071446 A KR 20040071446A
- Authority
- KR
- South Korea
- Prior art keywords
- program
- main memory
- recompiled
- cache
- loaded
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 239000002699 waste material Substances 0.000 claims abstract description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 239000000284 extract Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
쓰레드 바이너리 컴파일러에 의하여 프로그램에서 여러 개의 쓰레드를 다이내믹하게 추출하는 컴퓨터 시스템 및 그 동시 다중 쓰레딩 방법이 개시된다. 상기 컴퓨터 시스템은, 캐쉬에 소정 쓰레드 바이너리 컴파일러를 로딩하고, 메인 메모리에 로딩된 프로그램을 캐쉬에 로딩할 때마다, 소정 쓰레드 바이너리 컴파일러에 의한 프로그램의 리컴파일링을 통하여 프로그램이 다수개의 쓰레드들로 분산되는 리컴파일드 프로그램으로 로딩되도록 다이내믹하게 제어한다. 따라서, 유저가 직접 용이하고 자유롭게 바이너리를 리컴파일링하는 것에 의하여 컴퓨터 시스템의 성능을 향상시킬 수 있는 효과가 있다.
Description
본 발명은 컴퓨터 시스템의 CPU(중앙연산처리장치)에 관한 것으로, 특히 컴퓨터 시스템의 동시 다중 쓰레딩(Simultaneous Multithreading)(이하 "SMT"라 약칭함)에 관한 것이다.
CPU(중앙연산처리장치) 등에서의 수퍼 스칼라(Superscalar) 파이프 라인 구조는, 한 클락 사이클 동안에 동시에 여러 개의 명령어(instruction)를 실행함으로써 CPU(중앙연산처리장치)의 성능을 높이는 방법이다. 그러나, 수퍼 스칼라(Superscalar) 파이프 라인 구조에서는 한 클락 사이클 동안에 동시에 여러 개의 명령어(instruction)가 실행될 수 있음에도 불구하고, 데이터/리소스/콘트롤 디펜던시(data dependency), 캐쉬 미스(cache miss) 등의 문제로 인하여 명령어(instruction)의 실행이 불가능한 구간, 즉, 버티칼 웨이스트(vertical waste)와 호리존탈 웨이스트(horizontal waste)가 발생한다.
이에 반하여, 동시 다중 쓰레딩(SMT) 방법은 한 클락 사이클 동안에 동시에 여러 쓰레드들(threads)이 동시에 존재하도록 하고, 쓰레드들(threads) 각각에 존재하는 명령어들(instructions)이 동시에 실행되도록 하며, 특히 위와 같은 버티컬 또는 호리존탈 웨이스트(waste) 구간에서도 실행되도록 하여, 웨이스트(waste) 구간을 최소화함으로써 CPU(중앙연산처리장치)의 성능을 향상시키는 방법이다. 쓰레드(thread)는 한 프로세스 내의 여러 가지 서로 다른 콘트롤 포인트(control point)나 서로 다른 실행 경로(execution path)로 정의될 수 있고, 또는 서로 다른 프로그램으로도 정의될 수 있다. 따라서, 동시 다중 쓰레딩(SMT)은 여러쓰레드들(threads) 각각의 명령어들(instructions)이 동시에 수행되도록 하여 명령어(instruction) 실행의 쓰루풋(throughput)을 높이는 방법이다. 동시 다중 쓰레딩(SMT) 방법에 관한 몇 가지 알고리즘에 대하여, 미국 특허, "US6470443B1"에 잘 나타나 있다.
따라서, 쓰레드(thread)를 어떻게 발생시켜, 동시 다중 쓰레딩(SMT) 프로세서에서 쓰레드(thread)를 어떻게 처리할 것인 가는 컴퓨터 시스템의 성능에 중요한 요소이다. 쓰레드(thread)를 발생시키는 방법은 입력되는 프로그램을 몇 개의 쓰레드들(threads)로 분산시켜 공급할 것인가의 문제로서, 하드웨어 또는 소프트웨어적으로 구현될 수 있다.
하드웨어적으로 쓰레드들(threads)을 분산시키는 방법은, 하드웨어에서 프로그램 시퀀스(sequence)를 검출하여 입력되는 프로그램을 여러 개의 쓰레드들(threads)로 다이내믹하게 분산시키는 방법으로서, DMT(Dynamic Multithreading) 방법이라고 한다. 그러나, 이와 같이 하드웨어적으로 쓰레드들(threads)을 분산시키는 방법은 상당히 많이 필요한 하드웨어 장치로 인하여, 회로 및 로직의 복잡도가 증가하여 실제 구현이 상당히 어렵다는 문제점이 있다.
소프트웨어적으로 쓰레드들(threads)을 분산시키는 방법은, 컴파일러(compiler)에서 입력되는 프로그램을 여러 개의 쓰레드들(threads)로 스테틱(static)하게 분산시키는 방법이다. 이와 같은 방법은, 유저(user)가 소정 응용 프로그램에 의하여 소스(source) 코드를 컴파일링(compiling)하거나, 기존의 바이너리(binary)를 직접 리컴파일링(recompiling)하는 방법으로 가능하다. 그러나, 이와 같이 스테틱(static)하게 소프트웨어적으로 쓰레드들(threads)을 분산시키는 방법에서는, 유저(user)가 바이너리(binary)를 자유롭게 사용하는데 한계가 있고, 또한 유저(user)가 바이너리(binary)를 분석하여 직접 리컴파일링(recompiling) 하기에는 부적합하다는 문제점이 있다.
따라서, 본 발명이 이루고자하는 기술적 과제는, 쓰레드 바이너리 컴파일러(thread binary compiler)(이하 "TBC"로 약칭함)에 의하여 프로그램, 즉, 타겟 바이너리(target binary)에서 여러 개의 쓰레드들(thread)을 다이내믹하게 추출하여 네이티브 바이너리(native binary)를 자동으로 만들 수 있는 컴퓨터 시스템을 제공하는 데 있다.
본 발명이 이루고자하는 다른 기술적 과제는, 쓰레드 바이너리 컴파일러(TBC)에 의하여 프로그램, 즉, 타겟 바이너리(target binary)에서 여러 개의 쓰레드들(thread)을 다이내믹하게 추출하여 네이티브 바이너리(native binary)를 자동으로 만들 수 있는 컴퓨터 시스템의 동시 다중 쓰레딩(SMT) 방법을 제공하는 데 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일실시예에 따른 컴퓨터 시스템의 블록도이다.
도 2는 도 1의 컴퓨터 시스템의 동작 설명을 위한 흐름도이다.
도 3은 동시 다중 쓰레딩(SMT) 프로세서의 기능 설명을 위한 도면이다.
도 4는 쓰레드 바이너리 컴파일러(TBC)의 인스트럭션 셋 아키텍쳐(ISA) 컨버젼(conversion) 기능을 설명하기 위한 도면이다.
도 5는 쓰레드 바이너리 컴파일러(TBC)의 프로그램 처리 기능을 설명하기 위한 도면이다.
도 6은 쓰레드 바이너리 컴파일러(TBC)의 다수 프로그램 처리 기능을 설명하기 위한 도면이다.
상기의 기술적 과제를 달성하기 위한 본 발명에 따른 컴퓨터 시스템은, 하드 디스크(hard disk)/플래쉬(flash) 메모리, 메인 메모리(main memory), 캐쉬(cache), 캐쉬(cache) 콘트롤러, 및 동시 다중 쓰레딩(SMT) 프로세서를 구비한다.
상기 캐쉬(cache) 콘트롤러는 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리로부터 상기 메인 메모리(main memory)에 로딩된 프로그램을 상기 캐쉬(cache)에 로딩할 때마다, 소정 쓰레드 바이너리 컴파일러(TBC)에 의한 상기 프로그램의 리컴파일링(recompiling)을 통하여 상기 프로그램이 다수개의 쓰레드들(threads)로 분산되는 리컴파일드(recompiled) 프로그램으로 로딩되도록 다이내믹하게 제어한다.
상기 동시 다중 쓰레딩(SMT) 프로세서는 상기 쓰레드들(threads) 각각의 명령어들(instructions)이 호리존탈(horizontal)/버티칼(vertical) 웨이스트가 최소화되어 동시에 실행되도록 처리한다.
상기 캐쉬(cache)는, 다수개의 프로그램으로부터 리컴파일링(recompiling)된 다수개의 리컴파일드(recompiled) 프로그램을 저장하는 것을 특징으로 한다.
상기 리컴파일드(recompiled) 프로그램은, 상기 메인 메모리(main memory)에 로딩된 프로그램과 다른 구조의 인스트럭션 셋 아키텍쳐(instruction set architecture)(이하 "ISA"로 약칭함)이며, 인스트럭션 레벨(instruction level)까지 리컴파일링(recompiling)된 것을 특징으로 한다.
상기 소정 쓰레드 바이너리 컴파일러(TBC)는, 상기 메인 메모리(main memory)에 로딩되어 상주하거나 쓰레드 바이너리 리컴파일링 동작이 일어날 때마다 상기 캐쉬(cache)에 로딩되어 운영되는 것을 특징으로 한다.
상기 실행이 종료된 상기 리컴파일드(recompiled) 프로그램은, 삭제되거나상기 메인 메모리(main memory)에 저장되는 것을 특징으로 한다.
상기 메인 메모리(main memory)에 저장된 상기 리컴파일드(recompiled) 프로그램은, 상기 메인 메모리(main memory)의 용량 초과시 삭제되거나, 리컴파일링 필요 없이 재사용 될 수 있도록 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리에 저장되는 것을 특징으로 한다.
상기의 다른 기술적 과제를 달성하기 위한 본 발명에 따른 컴퓨터 시스템의 동시 다중 쓰레딩(SMT) 방법은, 하드 디스크(hard disk)/플래쉬(flash) 메모리, 메인 메모리(main memory), 캐쉬(cache), 캐쉬(cache) 콘트롤러, 및 동시 다중 쓰레딩(SMT) 프로세서를 구비하는 컴퓨터 시스템의 동시 다중 쓰레딩(SMT) 방법에 있어서, 다음과 같은 단계를 구비한다.
즉, 본 발명에 따른 컴퓨터 시스템의 동시 다중 쓰레딩(SMT) 방법에서는, 먼저, 상기 컴퓨터 시스템이 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리로부터 상기 메인 메모리(main memory)에 프로그램을 로딩한다. 상기 캐쉬(cache) 콘트롤러는 상기 캐쉬(cache)에 소정 쓰레드 바이너리 컴파일러(TBC)를 로딩하고, 상기 메인 메모리(main memory)에 로딩된 프로그램을 상기 캐쉬(cache)에 로딩할 때마다, 상기 소정 쓰레드 바이너리 컴파일러(TBC)에 의한 상기 프로그램의 리컴파일링(recompiling)을 통하여 상기 프로그램이 다수개의 쓰레드들(threads)로 분산되는 리컴파일드(recompiled) 프로그램으로 로딩되도록 다이내믹하게 제어한다. 이에 따라, 상기 동시 다중 쓰레딩(SMT) 프로세서는 상기 쓰레드들(threads) 각각의 명령어들(instructions)이 호리존탈(horizontal)/버티칼(vertical) 웨이스트가 최소화되어 동시에 실행되도록 처리한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 컴퓨터 시스템의 블록도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 컴퓨터 시스템은, 하드 디스크(hard disk)/플래쉬(flash) 메모리(110), 메인 메모리(main memory)(120), 캐쉬(cache)(130), 캐쉬(cache) 콘트롤러(140), 및 동시 다중 쓰레딩(SMT) 프로세서(150)를 구비한다. 동시 다중 쓰레딩(SMT) 프로세서(150)는 일반적인 CPU(중앙연산처리장치)에 해당한다.
상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)는 일반적인 컴퓨터 상의 대용량 메모리로서, 리컴파일드(recompiled) 프로그램을 저장하는 리컴파일드(recompiled) 프로그램 DB(113)와 기본 프로그램이나 응용 프로그램 등을 저장하는 프로그램 DB(115)로 구성될 수 있다.
상기 메인 메모리(main memory)(120)는, 상기 동시 다중 쓰레딩(SMT) 프로세서(150)와 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110) 사이에 탑재되는 저장 장치로서, 상기 동시 다중 쓰레딩(SMT) 프로세서(150)가 상기 하드디스크(hard disk)/플래쉬(flash) 메모리(110)로부터 데이터를 읽고 쓰는 시간을 줄여주어 컴퓨터의 동작 스피드를 높인다.
상기 캐쉬(cache)(130)는, 일반적으로 상기 동시 다중 쓰레딩(SMT) 프로세서(150)와 상기 메인 메모리(main memory)(120) 사이에 탑재되는 임시 저장 장치로서, 상기 동시 다중 쓰레딩(SMT) 프로세서(150)가 상기 메인 메모리(main memory)(120)에 접근하여 데이터를 읽거나 기록할 때, 그 내용의 사본을 상기 메인 메모리(main memory)(120)의 주소와 함께 저장시켜, 상기 동시 다중 쓰레딩(SMT) 프로세서(150)가 상기 메인 메모리(main memory)(120)로부터 데이터를 읽고 쓰는 시간을 줄여주어 컴퓨터의 동작 스피드를 높인다.
상기 캐쉬(cache) 콘트롤러(140)는 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)로부터 상기 메인 메모리(main memory)(120)에 로딩된 프로그램을 상기 캐쉬(cache)(130)에 로딩할 때마다, 소정 쓰레드 바이너리 컴파일러(TBC)에 의한 상기 프로그램의 리컴파일링(recompiling)을 통하여 상기 프로그램이 다수개의 쓰레드들(threads)로 분산되는 리컴파일드(recompiled) 프로그램으로 로딩되도록 다이내믹하게 제어한다.
상기 동시 다중 쓰레딩(SMT) 프로세서(150)는 상기 쓰레드들(threads) 각각의 명령어들(instructions)이 호리존탈(horizontal)/버티칼(vertical) 웨이스트가 최소화되어 동시에 실행되도록 처리한다.
상기 캐쉬(cache)(130)는, 다수개의 프로그램으로부터 리컴파일링(recompiling)된 다수개의 리컴파일드(recompiled) 프로그램을 저장하는것을 특징으로 한다.
상기 리컴파일드(recompiled) 프로그램은, 상기 메인 메모리(main memory)(120)에 로딩된 프로그램과 다른 구조의 인스트럭션 셋 아키텍쳐(ISA)이며, 인스트럭션 레벨(instruction level)까지 리컴파일링(recompiling)된 것을 특징으로 한다.
상기 소정 쓰레드 바이너리 컴파일러(TBC)는, 상기 메인 메모리(main memory)(120)에 로딩되어 상주하는 소프트웨어이며, 쓰레드 바이너리 리컴파일링 동작이 일어날 때마다 상기 캐쉬(cache)(130)에 로딩되어 운영되는 것을 특징으로 한다.
상기 실행이 종료된 상기 리컴파일드(recompiled) 프로그램은, 삭제되거나 상기 메인 메모리(main memory)(120)에 저장되는 것을 특징으로 한다.
상기 메인 메모리(main memory)(120)에 저장된 상기 리컴파일드(recompiled) 프로그램은, 상기 메인 메모리(main memory)(120)의 용량 초과시 삭제되거나, 리컴파일링 필요 없이 재사용 될 수 있도록 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)에 저장되는 것을 특징으로 한다.
상기한 바와 같은, 본 발명의 일실시예에 따른 컴퓨터 시스템의 동작을 좀더 상세하게 설명한다.
도 2는 도 1의 컴퓨터 시스템의 동작 설명을 위한 흐름도이다.
도 2를 참조하면, 하드 디스크(hard disk)/플래쉬(flash) 메모리(110), 메인 메모리(main memory)(120), 캐쉬(cache)(130), 캐쉬(cache) 콘트롤러(140), 및 동시 다중 쓰레딩(SMT) 프로세서(150)를 구비하는 도 1의 컴퓨터 시스템의 동시 다중 쓰레딩(SMT) 동작은 다음과 같다.
먼저, 상기 컴퓨터 시스템은 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)로부터 상기 메인 메모리(main memory)(120)에 프로그램을 로딩한다(S210). 이와 같은 프로그램의 로딩 동작은, 유저(user)가 컴퓨터를 부팅(booting)하거나 런타임(run time) 동안에 실행 명령을 할 때, 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)에 저장되는 기본 프로그램이나 응용 프로그램이 상기 메인 메모리(main memory)(120)로 이동되어 저장되는 것을 말한다. 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)에 저장되는 기본 프로그램이나 응용 프로그램의 소스 코드(source code)는 여러 가지 OS(operating system)에서 동작되는 서로 다른 인스트럭션 셋 아키텍쳐(ISA) 구조를 가질 수 있다.
한편, 상기 캐쉬(cache) 콘트롤러(140)는 상기 캐쉬(cache)(130)에 소정 쓰레드 바이너리 컴파일러(TBC)를 로딩한다(S220). 이에 따라, 상기 캐쉬(cache) 콘트롤러(140)는 상기 메인 메모리(main memory)(120)에 로딩된 프로그램을 상기 캐쉬(cache)(130)에 로딩할 때마다, 상기 소정 쓰레드 바이너리 컴파일러(TBC)에 의한 상기 프로그램의 리컴파일링(recompiling)을 통하여 상기 프로그램이 다수개의 쓰레드들(threads)로 분산되는 리컴파일드(recompiled) 프로그램으로 로딩되도록 다이내믹하게 제어한다(S230).
이때, 상기 소정 쓰레드 바이너리 컴파일러(TBC)는, 상기 메인 메모리(mainmemory)(120)에 로딩되어 상주하거나 쓰레드 바이너리 리컴파일링 동작이 일어날 때마다 상기 캐쉬(cache)(130)에 로딩되어 운영된다.
다음에, 상기 동시 다중 쓰레딩(SMT) 프로세서(150)는 상기 쓰레드들(threads) 각각의 명령어들(instructions)이 호리존탈(horizontal)/버티칼(vertical) 웨이스트가 최소화되어 동시에 실행되도록 처리한다(S240).
도 3은 동시 다중 쓰레딩(SMT) 프로세서(150)의 기능 설명을 위한 도면이다.
도 3을 참조하면, 동시 다중 쓰레딩(SMT) 프로세서(150)는 최적화된 상기 쓰레드들(threads)을 상기 캐쉬(cache)(130)에서 받아, 상기 쓰레드들(threads) 각각의 명령어들(instructions)이 호리존탈(horizontal)/버티칼(vertical) 웨이스트가 최소화되어 동시에 실행되도록 하기 위하여, 먼저, 상기 쓰레드들(threads) 각각에 속하는 프로그램 카운터(program counter)에서 어드레스를 페치(fetch)한다. 페치(fetch)된 어드레스에 대응하는 명령어들(instructions)은 소정의 명령어(instruction) 캐쉬(cache)(130)에서 리드(read)되고, 디코딩, 레지스터 재명명, 명령어(instruction) 큐(queue) 단계들을 거쳐 실행된다. 동시 다중 쓰레딩(SMT) 프로세서(150)의 일반적인 동작에 대하여는, 미국 특허, "US6470443B1"에 잘 나타나 있다.
도 4는 쓰레드 바이너리 컴파일러(TBC)의 인스트럭션 셋 아키텍쳐(ISA) 컨버젼(conversion) 기능을 설명하기 위한 도면이다.
도 4를 참조하면, 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)로부터 상기 메인 메모리(main memory)(120)에 로딩된 기본 프로그램이나 응용 프로그램, 즉, 타겟(target) 바이너리(binary)(소스 코드가 일반적인 컴파일러에 의하여 번역된 머신 코드)는 여러 가지 OS(operating system)에서 동작되는 서로 다른 인스트럭션 셋 아키텍쳐(ISA1) 구조를 가질 수 있다. 이에 따라, 타겟(target) 바이너리(binary)는, 상기 캐쉬(cache) 콘트롤러(140)에 의하여 본 발명의 쓰레드 바이너리 컴파일러(TBC)를 탑재한 컴퓨터의 인스트럭션 셋 아키텍쳐(ISA2) 구조로 리컴파일링(recompiling)되고, 컨버젼(conversion)된 리컴파일드(recompiled) 프로그램, 즉, 네이티브 바이너리(native binary)는 상기 캐쉬(cache)(130)에 로딩된다(S230).
도 5는 쓰레드 바이너리 컴파일러(TBC)의 프로그램 처리 기능을 설명하기 위한 도면이고, 도 6은 쓰레드 바이너리 컴파일러(TBC)의 다수 프로그램 처리 기능을 설명하기 위한 도면이다.
도 5 및 도 6을 참조하면, 상기 캐쉬(cache) 콘트롤러(140)는, 쓰레드 바이너리 컴파일러(TBC)를 통하여, 상기 메인 메모리(main memory)(120)에 로딩된 하나의 프로세스(프로그램)이나 일련의 프로그램들을 리컴파일링(recompiling)하여, 상기 캐쉬(cache)(130)에 하나의 리컴파일드(recompiled) 프로그램이나 다수개의 리컴파일드(recompiled) 프로그램들을 상기 캐쉬(cache)(130)에 로딩시킨다(S230). 하나의 리컴파일드(recompiled) 프로그램은 다수개의 쓰레드들(threads)로 구성되고, 하나의 쓰레드들(thread)은 다수개의 명령어들(instructions)로 구성된다.
여기서, 상기 쓰레드 바이너리 컴파일러(TBC)에 의한리컴파일링(recompiling) 작업은, 상기 메인 메모리(main memory)(120)에서 입력되는 프로그램의 시퀀스(sequence)를 스스로 검출하여, 프로그램을 여러 개의 쓰레드들(threads)로 다이내믹하게 분산시키는 것으로서, 이에 의하여 최적화된 동작 스피드를 실현할 수 있도록 하기 위하여, 상기 메인 메모리(main memory)(120)에서 입력되는 프로그램이 인스트럭션 레벨(instruction level)까지 고려되어 리컴파일드(recompiled) 프로그램으로 컨버젼(conversion)된다(S230).
한편, 상기 실행이 종료된 상기 리컴파일드(recompiled) 프로그램은, 삭제되거나 상기 메인 메모리(main memory)(120)에 저장된다(S250). 상기 메인 메모리(main memory)(120)에 저장된 상기 리컴파일드(recompiled) 프로그램은, 상기 메인 메모리(main memory)(120)의 용량 초과시 삭제되거나, 리컴파일링 필요 없이 재사용 될 수 있도록 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)의 리컴파일드(recompiled) DB(113)에 저장된다(S260).
위에서 기술한 바와 같이, 본 발명의 일실시예에 따른 컴퓨터 시스템은, 먼저, 상기 하드 디스크(hard disk)/플래쉬(flash) 메모리(110)로부터 상기 메인 메모리(main memory)(120)에 프로그램을 로딩한다(S210). 이에 따라, 상기 캐쉬(cache) 콘트롤러(140)는 상기 캐쉬(cache)(130)에 소정 쓰레드 바이너리 컴파일러(TBC)를 로딩하고(S220), 상기 메인 메모리(main memory)(120)에 로딩된 프로그램을 상기 캐쉬(cache)(130)에 로딩할 때마다, 상기 소정 쓰레드 바이너리 컴파일러(TBC)에 의한 상기 프로그램의 리컴파일링(recompiling)을 통하여 상기 프로그램이 다수개의 쓰레드들(threads)로 분산되는 리컴파일드(recompiled) 프로그램으로 로딩되도록 다이내믹하게 제어한다(S230). 상기 동시 다중 쓰레딩(SMT) 프로세서(150)는 동시에 존재하는 상기 쓰레드들(threads) 각각의 명령어들(instructions)이 호리존탈(horizontal)/버티칼(vertical) 웨이스트가 최소화되어 동시에 실행되도록 처리한다(S240).
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 컴퓨터 시스템에서는, 쓰레드 바이너리 컴파일러(TBC)에 의하여 런타임(run time) 동안 프로그램에서 여러 개의 쓰레드들(threads)을 다이내믹하게 추출하여, 동시 다중 쓰레딩(SMT) 프로세서에 인가한다. 따라서, 유저(user)는 직접 인지하지 못하지만, 용이하고 자유롭게 기존의 바이너리(binary)를 리컴파일링(recompiling)하는 것에 의하여 컴퓨터 시스템의 성능을 향상시킬 수 있는 효과가 있다.
Claims (20)
- 하드 디스크/플래쉬 메모리;메인 메모리;캐쉬;상기 하드 디스크/플래쉬 메모리로부터 상기 메인 메모리에 로딩된 프로그램을 상기 캐쉬에 로딩할 때마다, 소정 쓰레드 바이너리 컴파일러에 의한 상기 프로그램의 리컴파일링을 통하여 상기 프로그램이 다수개의 쓰레드들로 분산되는 리컴파일드 프로그램으로 로딩되도록 다이내믹하게 제어하는 캐쉬 콘트롤러; 및상기 쓰레드들 각각의 명령어들이 호리존탈/버티칼 웨이스트가 최소화되어 동시에 실행되도록 처리하는 동시 다중 쓰레딩 프로세서를 구비하는 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항에 있어서, 상기 캐쉬는,다수개의 프로그램으로부터 리컴파일링된 다수개의 리컴파일드 프로그램을 저장하는 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항에 있어서, 상기 리컴파일드 프로그램은,상기 메인 메모리에 로딩된 프로그램과 다른 구조의 인스트럭션 셋 아키텍쳐인 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항에 있어서, 상기 리컴파일드 프로그램은,인스트럭션 레벨까지 리컴파일링된 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항에 있어서, 상기 소정 쓰레드 바이너리 컴파일러는,상기 메인 메모리에 로딩되어 상주하는 소프트웨어인 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항에 있어서, 상기 소정 쓰레드 바이너리 컴파일러는,쓰레드 바이너리 리컴파일링 동작이 일어날 때마다 상기 캐쉬에 로딩되어 운영되는 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항에 있어서, 상기 실행이 종료된 상기 리컴파일드 프로그램은,삭제되는 것을 특징으로 하는 컴퓨터 시스템.
- 제 1항에 있어서, 상기 실행이 종료된 상기 리컴파일드 프로그램은,상기 메인 메모리에 저장되는 것을 특징으로 하는 컴퓨터 시스템.
- 제 8항에 있어서, 상기 메인 메모리에 저장된 상기 리컴파일드 프로그램은,상기 메인 메모리의 용량 초과시 삭제되는 것을 특징으로 하는 컴퓨터 시스템.
- 제 8항에 있어서, 상기 메인 메모리에 저장된 상기 리컴파일드 프로그램은,상기 메인 메모리의 용량 초과시 상기 하드 디스크/플래쉬 메모리에 저장되는 것을 특징으로 하는 컴퓨터 시스템.
- 하드 디스크/플래쉬 메모리, 메인 메모리, 캐쉬, 캐쉬 콘트롤러, 및 동시 다중 쓰레딩 프로세서를 구비하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법에 있어서,상기 컴퓨터 시스템에 의하여, 상기 하드 디스크/플래쉬 메모리로부터 상기 메인 메모리에 프로그램을 로딩하는 단계;상기 캐쉬 콘트롤러에 의하여, 상기 캐쉬에 소정 쓰레드 바이너리 컴파일러를 로딩하는 단계;상기 캐쉬 콘트롤러에 의하여, 상기 메인 메모리에 로딩된 프로그램을 상기 캐쉬에 로딩할 때마다, 상기 소정 쓰레드 바이너리 컴파일러에 의한 상기 프로그램의 리컴파일링을 통하여 상기 프로그램이 다수개의 쓰레드들로 분산되는 리컴파일드 프로그램으로 로딩되도록 다이내믹하게 제어하는 단계; 및상기 동시 다중 쓰레딩 프로세서에 의하여, 상기 쓰레드들 각각의 명령어들이 호리존탈/버티칼 웨이스트가 최소화되어 동시에 실행되도록 처리하는 단계를 구비하는 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 11항에 있어서, 상기 캐쉬는,다수개의 프로그램으로부터 리컴파일링된 다수개의 리컴파일드 프로그램을저장하는 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 11항에 있어서, 상기 리컴파일드 프로그램은,상기 메인 메모리에 로딩된 프로그램과 다른 구조의 인스트럭션 셋 아키텍쳐인 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 11항에 있어서, 상기 리컴파일드 프로그램은,인스트럭션 레벨까지 리컴파일링된 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 11항에 있어서, 상기 소정 쓰레드 바이너리 컴파일러는,상기 메인 메모리에 로딩되어 상주하는 소프트웨어인 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 11항에 있어서, 상기 소정 쓰레드 바이너리 컴파일러는,쓰레드 바이너리 리컴파일링 동작이 일어날 때마다 상기 캐쉬에 로딩되어 운영되는 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 11항에 있어서, 상기 실행이 종료된 상기 리컴파일드 프로그램은,삭제되는 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 11항에 있어서, 상기 실행이 종료된 상기 리컴파일드 프로그램은,상기 메인 메모리에 저장되는 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 18항에 있어서, 상기 메인 메모리에 저장된 상기 리컴파일드 프로그램은,상기 메인 메모리의 용량 초과시 삭제되는 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
- 제 18항에 있어서, 상기 메인 메모리에 저장된 상기 리컴파일드 프로그램은,상기 메인 메모리의 용량 초과시 상기 하드 디스크/플래쉬 메모리에 저장되는 것을 특징으로 하는 컴퓨터 시스템의 동시 다중 쓰레딩 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2003-0007414A KR100498486B1 (ko) | 2003-02-06 | 2003-02-06 | 쓰레드 바이너리 컴파일러에 의하여 프로그램에서 여러개의 쓰레드를 다이내믹하게 추출하는 컴퓨터 시스템 및그 동시 다중 쓰레딩 방법 |
US10/648,437 US7080204B2 (en) | 2003-02-06 | 2003-08-27 | Cache controller computer system and method for program recompilation |
JP2003417695A JP2004240953A (ja) | 2003-02-06 | 2003-12-16 | コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2003-0007414A KR100498486B1 (ko) | 2003-02-06 | 2003-02-06 | 쓰레드 바이너리 컴파일러에 의하여 프로그램에서 여러개의 쓰레드를 다이내믹하게 추출하는 컴퓨터 시스템 및그 동시 다중 쓰레딩 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040071446A true KR20040071446A (ko) | 2004-08-12 |
KR100498486B1 KR100498486B1 (ko) | 2005-07-01 |
Family
ID=32822649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2003-0007414A KR100498486B1 (ko) | 2003-02-06 | 2003-02-06 | 쓰레드 바이너리 컴파일러에 의하여 프로그램에서 여러개의 쓰레드를 다이내믹하게 추출하는 컴퓨터 시스템 및그 동시 다중 쓰레딩 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7080204B2 (ko) |
JP (1) | JP2004240953A (ko) |
KR (1) | KR100498486B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526637B2 (en) | 2005-12-06 | 2009-04-28 | Electronics And Telecommunications Research Institute | Adaptive execution method for multithreaded processor-based parallel system |
US7861032B2 (en) | 2006-11-03 | 2010-12-28 | Samsung Electronics Co., Ltd. | Data storage system including respective buffers for non-volatile memory and disc recording medium, and data access method thereof |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8261249B2 (en) * | 2008-01-08 | 2012-09-04 | International Business Machines Corporation | Distributed schemes for deploying an application in a large parallel system |
US8136103B2 (en) * | 2008-03-28 | 2012-03-13 | International Business Machines Corporation | Combining static and dynamic compilation to remove delinquent loads |
US20090313600A1 (en) * | 2008-06-13 | 2009-12-17 | Microsoft Corporation | Concurrent code generation |
SE534566C2 (sv) * | 2010-04-07 | 2011-10-04 | Exformation Comm Ab | Förfarande för att kryptera information, som överföres mellan två kommunikationsenheter. |
US9063735B2 (en) | 2010-10-19 | 2015-06-23 | Samsung Electronics Co., Ltd. | Reconfigurable processor and method for processing loop having memory dependency |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5179702A (en) | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
JPH05324580A (ja) | 1992-05-26 | 1993-12-07 | Toshiba Corp | データ処理装置 |
US6073159A (en) | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6061710A (en) * | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US6289369B1 (en) | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
CA2332085A1 (en) | 2001-01-23 | 2002-07-23 | Ibm Canada Limited-Ibm Canada Limitee | Adapting polymorphic inline caches for multithreaded computing |
-
2003
- 2003-02-06 KR KR10-2003-0007414A patent/KR100498486B1/ko active IP Right Grant
- 2003-08-27 US US10/648,437 patent/US7080204B2/en not_active Expired - Lifetime
- 2003-12-16 JP JP2003417695A patent/JP2004240953A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526637B2 (en) | 2005-12-06 | 2009-04-28 | Electronics And Telecommunications Research Institute | Adaptive execution method for multithreaded processor-based parallel system |
US7861032B2 (en) | 2006-11-03 | 2010-12-28 | Samsung Electronics Co., Ltd. | Data storage system including respective buffers for non-volatile memory and disc recording medium, and data access method thereof |
US7975099B2 (en) | 2006-11-03 | 2011-07-05 | Samsung Electronics Co., Ltd. | Data storage system including respective buffers for non-volatile memory and disc recording medium, and data access method thereof |
Also Published As
Publication number | Publication date |
---|---|
KR100498486B1 (ko) | 2005-07-01 |
JP2004240953A (ja) | 2004-08-26 |
US7080204B2 (en) | 2006-07-18 |
US20040158825A1 (en) | 2004-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11500778B2 (en) | Prefetch kernels on data-parallel processors | |
US7437542B2 (en) | Identifying and processing essential and non-essential code separately | |
US10061588B2 (en) | Tracking operand liveness information in a computer system and performing function based on the liveness information | |
JP3820261B2 (ja) | データ処理システムの外部および内部命令セット | |
US10127041B2 (en) | Compiler system for a processor with an expandable instruction set architecture for dynamically configuring execution resources | |
US20040073906A1 (en) | Processor with speculative multithreading and hardware to support multithreading software {including global registers and busy bit memory elements} | |
US20070006167A1 (en) | Optimizing binary-level instrumentation via instruction scheduling | |
US7698697B2 (en) | Transforming code to expose glacial constants to a compiler | |
JP2015084251A (ja) | ソフトウェア・アプリケーションの性能向上 | |
US9158562B2 (en) | Method and apparatus for supporting virtualization of loadable module | |
KR100498486B1 (ko) | 쓰레드 바이너리 컴파일러에 의하여 프로그램에서 여러개의 쓰레드를 다이내믹하게 추출하는 컴퓨터 시스템 및그 동시 다중 쓰레딩 방법 | |
US6820254B2 (en) | Method and system for optimizing code using an optimizing coprocessor | |
Case | Implementing the Java virtual machine | |
TW202109288A (zh) | 解譯執行位元組碼指令流的方法及裝置 | |
Glossner et al. | Delft-Java link translation buffer | |
KR102379886B1 (ko) | 벡터 명령 처리 | |
Georgakoudis et al. | Fast dynamic binary rewriting to support thread migration in shared-isa asymmetric multicores | |
Brandner et al. | Embedded JIT compilation with CACAO on YARI | |
US11144329B2 (en) | Processor microcode with embedded jump table | |
JP2002014868A (ja) | メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法 | |
Achutharaman et al. | Exploiting Java-ILP on a simultaneous multi-trace instruction issue (SMTI) processor | |
Loew et al. | A co-processor approach for accelerating data-structure intensive algorithms | |
Hammami | Fuzzy scheduling in compilers optimizations | |
Pentecost et al. | Accelerating dynamically typed languages with a virtual function cache | |
Sabeghi et al. | Runtime multitasking support on reconfigurable accelerators |
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: 20130531 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20140530 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20150601 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20160531 Year of fee payment: 12 |
|
FPAY | Annual fee payment |
Payment date: 20190530 Year of fee payment: 15 |