KR100809294B1 - 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그방법 - Google Patents
가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그방법 Download PDFInfo
- Publication number
- KR100809294B1 KR100809294B1 KR1020060022873A KR20060022873A KR100809294B1 KR 100809294 B1 KR100809294 B1 KR 100809294B1 KR 1020060022873 A KR1020060022873 A KR 1020060022873A KR 20060022873 A KR20060022873 A KR 20060022873A KR 100809294 B1 KR100809294 B1 KR 100809294B1
- Authority
- KR
- South Korea
- Prior art keywords
- scheduling
- virtual machine
- counter value
- jbt
- thread
- Prior art date
Links
Images
Classifications
-
- E—FIXED CONSTRUCTIONS
- E06—DOORS, WINDOWS, SHUTTERS, OR ROLLER BLINDS IN GENERAL; LADDERS
- E06C—LADDERS
- E06C7/00—Component parts, supporting parts, or accessories
- E06C7/42—Ladder feet; Supports therefor
- E06C7/423—Ladder stabilising struts
-
- E—FIXED CONSTRUCTIONS
- E06—DOORS, WINDOWS, SHUTTERS, OR ROLLER BLINDS IN GENERAL; LADDERS
- E06C—LADDERS
- E06C7/00—Component parts, supporting parts, or accessories
- E06C7/50—Joints or other connecting parts
Landscapes
- Engineering & Computer Science (AREA)
- Mechanical Engineering (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 가상 머신의 스레드 스케줄링을 수행하는 시점을 시스템 클럭의 카운터 값을 기초로 함으로써, 빠르고 공정하게 스레드 스케줄링을 수행할 수 있도록 하는 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그 방법 에 관한 것이다.
본 발명의 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 방법은, 프로그램으로부터 바이트 코드의 주소를 수신하는 단계와, 상기 수신된 바이트 코드의 변환을 수행하기 전에 시스템 클럭의 카운터 값을 체크하는 단계와, 상기 체크 결과 상기 카운터 값이 소정의 수치에 도달한 경우, 프로그램 카운터에 스케줄링 루틴 주소를 입력하는 단계를 포함한다.
가상 머신, 스레드 스케줄링, JBT 관리부, 시스템 클럭
Description
도 1은 종래의 가상 머신에서 스레드 스케쥴링을 하기 위한 예를 나타낸 도면.
도 2는 종래의 가상 머신 하드웨어 가속기에서 스레드 스케쥴링을 지원하는 예를 나타낸 도면.
도 3은 본 발명의 일 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 장치를 나타낸 도면.
도 4는 본 발명의 일 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 장치 중 JBT 의 내부 블록도를 나타낸 도면.
도 5는 본 발명의 다른 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 장치에서 가상 머신 가속기와 ARM 프로세서 간의 통신 동작을 나타낸 도면.
도 6은 본 발명의 또 다른 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 방법을 나타낸 순서도.
<도면의 주요 부분에 관한 부호의 설명>
310 : JBT 311 : JBT 관리부
312 : DB 캐시 313 : B2C 캐시
314 : JBT 레지스터
본 발명은 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 가상 머신의 스레드 스케줄링을 수행하는 시점을 시스템 클럭의 카운터 값을 기초로 함으로써, 빠르고 공정하게 스레드 스케줄링을 수행할 수 있도록 하는 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그 방법에 관한 것이다.
가상 머신(Virtual Machine)은 어떠한 정보 기기에서도 수행될 수 있는 애플리케이션의 이동성을 보장하는 표준 애플리케이션 수행 환경을 제공한다. 가상 머신의 대표적인 예로는 자바(Java) 가상 머신이 있다.
자바(Java)는 작성된 코드를 플랫폼 독립적으로 수행하는 객체 지향 프로그래밍 언어이다. 여기서, 플랫폼은 프로그램이 실행되는 하드웨어 또는 운영 체계와 같은 소프트웨어 환경을 말한다. 자바로 작성된 코드는 자바 컴파일러(Java Compiler)에 의해 자바 바이트 코드(Java Byte Code)로 컴파일 되고, 자바 바이트 코드는 다양한 하드웨어 기반 플랫폼에 포팅된 자바 가상 머신(Java Virtual Machine)에 의해 실행된다.
도 1은 종래의 가상 머신에서 스레드 스케쥴링을 하기 위한 예를 나타낸 도면이다. 여기서는, 네이티브 운영 체제에서 제공하는 스레드(thread) 기능을 사용 하지 않고 가상 머신 내부에서 스레딩을 구현하는 그린 스레드(Green Thread)를 적용한 경우를 설명한다.
도시된 바와 같이, 가상 머신은 커다란 루프(loop)로 구성되어 있으며, 하나의 중간단계 언어를 처리하기 위해서 C언어의 스위치-케이스(switch-case) 등으로 구성된 인터프리터(13)을 가지고 있다.
또한, 스케쥴링(scheduling)을 할 것 인지를 체크하는 루틴(11)과 스케쥴링을 실제 진행하는 루틴(12)으로 구성되어 있다.
예를 들어, 가상 머신의 스레드 스케쥴링은 매 바이트 코드를 인터프리팅 하기 전에, 스케쥴링을 할 것 인지를 검사하는 루틴(11)이 수행된다.
그 다음, 스케쥴링을 수행하기로 결정하면 스케쥴링 작업을 수행한 후, 다시 인터프리터(13)를 통해 변환을 수행한다. 만일, 스케쥴링을 수행하지 않기로 결정하면, 스레드의 스케줄링 과정 없이 인터프리터(13)를 통해 변환을 수행한다.
그러나, 소프트웨어 가상 머신 내의 스레드 스케쥴링에 대한 검사의 경우 비록 스케쥴링 검사 작업은 3개 정도의 네이티브 명령어로 구현되는 작은 루틴이지만 모든 바이트 코드의 수행 시 마다 항상 검사되기 때문에 가상 머신 인터프리터(13)의 성능을 저하시키게 된다.
또한, 바이트코드 단위의 검사는 해당 바이트 코드의 핸들러의 길이와 복잡도에 따라서 수행 클럭이 큰 차이가 있게 된다.
예를 들어, 네이티브 함수의 호출이나 나눗셈과 같은 복잡한 바이트 코드와 NOP 혹은 IADD와 같은 수치연산의 핸들러의 소요 클럭은 10에서 100배까지 차이가 나게 되며, 이에 공정한 스레드 간의 스케쥴링을 수행할 수 없다는 문제점이 있다.
도 2는 종래의 가상 머신 하드웨어 가속기에서 스레드 스케쥴링을 지원하는 예를 나타낸 도면이다.
도시된 바와 같이, 가상 머신 가속기는 스레드 라이프타임 유닛(THREAD LIFETIME UNIT)(20)을 가지고 있고, 가속기의 상태 머신(STATE MACHINE)(24)에 연결되어 있다.
또한, 스레드 라이프 타임 유닛(20)은 내부에 1씩 감소시키는 감소 카운터(23)를 포함하며, 카운터 초기화를 위한 카운터 초기화 레지스터(register)(21)와 멀티플렉서(multiplexer)(22)을 포함한다.
예를 들어, 스레드의 초기화 시 카운터 값이 멀티플렉서(22)에 의해 선택되어 감소 카운터(23)에 전달되며, 이 후 하나의 바이트 코드가 수행될 때 마다 상태 머신(24)으로부터 신호가 전달되어 감소 카운터(23)에 의해 카운터 값이 감소되게 된다.
그 다음, 감소된 값은 멀티플렉서(22)에 의해서 선택되어 재입력이 되며, 그 값이 0보다 작거나 같을 경우 상태 머신(24)으로 신호가 전달되어 결국 CPU(25)에서 가상 머신 내의 스케쥴링 루틴이 수행되게 된다.
그러나, 하드웨어 가속기 내의 스케쥴링 검사 방법은 상기의 도 1의 비효율적인 부분에 대한 개선은 이루었으나, 여전히 바이트 코드 단위로 수행된다는 문제점은 해결하지 못하고 있다.
일본공개특허 2005-062956(특정 시간간격으로 실시간 동작을 주기적으로 수 행하는 스케줄링 방법)은 프로세서는 메인 메모리에 연결되어 있고, 프로세서는 메인 메모리에 저장된 프로그램의 홀딩파트를 위한 인스트럭션 캐쉬를 가지며, 메인 메모리의 데이터의 홀딩파트 또는 프레임 스택을 위한 데이터 캐쉬로 구성된 스케줄링 방법을 개시하고 있으나, 이는 스레드 스케줄링의 시점을 공정하게 하기 위한 기술을 전혀 언급하고 있지 않다.
본 발명은 가상 머신의 스레드 스케줄링을 수행하는 시점을 시스템 클럭의 카운터 값을 기초로 함으로써, 스레드 스케줄링을 공정하게 수행할 수 있도록 하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 장치는, 가상 머신의 바이트 코드를 네이티브 코드로 변환하고, 시스템 클럭을 기초로 하여 스레드의 스케줄링을 수행하는 JBT 관리부와, 상기 변환된 네이티브 코드를 저장하는 DB 캐시와, 상기 바이트 코드의 주소와 상기 DB 캐시에 저장된 네이티브 코드를 매핑시키는 B2C캐시와, 소정 프로세서와 상기 JBT 관리부와의 통신을 수행하는 JBT 레지스터를 포함한다.
또한, 본 발명의 다른 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행 하는 방법은, 프로그램으로부터 바이트 코드의 주소를 수신하는 단계와, 상기 수신된 바이트 코드의 변환을 수행하기 전에 시스템 클럭의 카운터 값을 체크하는 단계와, 상기 체크 결과 상기 카운터 값이 소정의 수치에 도달한 경우, 프로그램 카운터에 스케줄링 루틴 주소를 입력하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그 방법을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되 는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 3은 본 발명의 일 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 장치를 나타낸 도면이다.
본 발명은 특정한 가상 머신에 국한되지 않으며, 마이크로소프트(Microsoft)사의 Common Language Runtime(CLR)이나 Smalltalk 등의 가상 머신 등 모든 가상 머신에 적용될 수 있다. 또한, 본 발명에서는 설명의 편의를 위하여 ARM(Advanced RISC Machine)사의 ARM926EJ-S 프로세스를 예로 들어서 설명한다. 그러나, ARM 프로세스에 국한되는 것은 아니다.
또한, 본 발명에서는 ARM926EJ-S 프로세스(300)에 JBT(Java Bytecode Translator)(310)가 포함되어 동작한다.
ARM926EJ-S 프로세서(300)는 완전한 호환성을 가지며, 32비트 RISC CPU, 융통성 있는 크기의 인스트럭션(instrucation), 데이터 캐시, TCM(ITCM 및 DTCM) 인터페이스, MMU(Memory Management Unit)를 포함하여 구성된다.
또한, ARM926EJ-S 프로세서(300)는 분리된 인스트럭션 및 데이터 버스를 지원하며, 분리된 인스트럭션과 다계층 AHB(Advanced High performance Bus) 기반의 시스템에 적합한 AHB 인터페이스와 호환되는 데이터 AMBA 버스와 호환된다.
또한, ARM926EJ-S 프로세서(300)는 인스트럭션 셋을 구현하고, 향상된 16x32 비트 멀티-레이어(Multi-layer)를 포함하며, 단일 사이클의 오퍼레이션(operations)을 수행할 수 있다. 여기서, 인스트럭션 셋은 16비트의 고정된 포인트 DSP 인스트럭션을 포함하며, 많은 신호 처리 알고리즘 및 어플리케이션의 성능을 향상 시킬 뿐만 아니라 자바 바이트 코드 실행을 지원한다.
또한, ARM926EJ-S 프로세서(300)는 대부분의 OS 및 현존하는 미들웨어를 실행 시킬 수 있으며, 단일의 MCU DSP 및 자바 솔루션을 구현할 수 있다. 또한, 자바 바이트 코드 실행의 효율을 향상시키며, 자바 전력을 매우 낮게 소모하고, 자바 JIT(Just-In-Time) 컴파일러 성능을 향상시킨다. 여기서, ARM926EJ-S 프로세서(300)는 차세대 스마트 폰, PDA(Personal Digital Assistants), 3세대 베이스 밴드, 어플리케이션 프로세서, 플렛폼 OS 기반의 기기들, 디지털 스틸 카메라, 및 A/V 디코더 등에 적용되어 사용된다.
JBT(310)는 자바 바이트 코드를 변환하는 모듈로서, ARM926EJ-S 프로세서(300)로부터 전송된 바이트 코드 주소에 대한 네이티브 코드의 주소를 제공한다. 여기서, JBT(310)는 JBT 관리부(311), DB 캐시(312), B2C 캐시(313), 및 JBT 레지스터(314)를 포함하여 구성된다. 이하, 도 4에서 JBT(310)의 동작을 후술한다.
또한, JBT(310)는 시스템 클럭(system clock)의 카운터 값을 기초로 스레드 스케줄링을 수행한다. 여기서, 시스템 클럭은 디지털 신호를 처리하는 시스템에는 전체 시스템의 기준이 되는 클럭 신호로서, 시스템 클럭을 기준으로 하여 데이터 신호의 동기(Synchronous)를 일치시키거나, 필요한 다른 주기의 클럭 신호를 생성한다.
ARM9(320)는 ARM926EJ-S 프로세서(300)의 CPU 코어로써, ARM926EJ-S 프로세서(300)를 구성하는 각 기능성 블록들의 동작을 관리 및 제어한다. 예를 들어 ARM9(320)는 JBT(310)와 통신하여 네이티브 코드의 주소를 얻을 수 있다.
제1 메모리는 외부 버스(AHB)에 연결되어 있는 메모리로써, SD램(Synchronous DRAM), DDR SD램(Double Date Rate Synchronous DRAM), RD램(Rambus DRAM)등을 말한다.
도 4는 본 발명의 일 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 장치 중 JBT의 내부 블록도를 나타낸 도면이다.
도시된 바와 같이, JBT(310)는 JBT 관리부(311), DB 캐시(312), B2C 캐시(313), 및 JBT 레지스터(314)를 포함하여 구성된다.
JBT 관리부(311)는 FSM(Finite State Machine)으로 구성되어 있고, 외부 버스(BUS)를 통해서 전달된 바이트 코드를 네이티브 코드로 변환한다.
또한, JBT 관리부(311)는 시스템 클럭을 기초로 하여 스레드의 스케줄링(scheduling)을 수행한다. 여기서, JBT 관리부(311)는 스레드의 스케줄링을 수행하기 위해 멀티플렉서(311a) 및 감소 카운터(311b)를 포함하여 구성된다.
또한, JBT 관리부(311)는 새로운 카운터 값을 설정할 때, 스레드 스케쥴링을 몇 시스템 클럭 마다 할 것 인지를 설정한다. 여기서, 네이티브 함수의 호출이나 나눗셈 등의 복잡한 연산 중에도 시스템 클럭 마다 카운터 값은 계속 감소하게 되며, 다음 번 바이트 코드의 수행 전에 시스템 클럭의 카운터 값이 0보다 작은 경우 스케쥴링을 수행한다.
멀티플렉서(311a)는 스레드의 스케줄링 요청 시 시스템 클럭의 카운터 값을 입력받아 감소 카운터(311b)로 전송하고, 감소 카운터(311b)를 통해 감소된 카운터 값을 다시 감소 카운터(311b)로 재 전송한다.
또한, 멀티플렉서(311a)는 ARM프로세서(300)로부터 새로운 스레드의 스케줄링 수행을 요청하는 명령이 전송되면, 스케줄링을 수행하던 스레드의 스케줄링을 중단하고, 새로운 스레드의 스케줄링을 위해 시스템 클럭의 카운터 값을 초기화 한 다.
감소 카운터(311b)는 시스템 클럭이 입력될 때 마다 카운터 값을 1만큼 감소한다. 또한, 감소 카운터(311b)는 멀티플렉서(311a)를 통해 입력되는 카운터 값을 기초로 스레드의 스케줄링 여부를 판단한다.
예를 들어, 스레드의 초기화 시 시스템 클럭의 카운터 값이 멀티플렉서(311a)에 의해 선택되어 감소 카운터(311b)에 전달되면, 감소 카운터(311b)는 시스템 클럭의 카운터 값을 체크하고, 체크된 값이 0보다 클 경우 카운터 값을 감소시킨다.
즉, 설정된 카운터 값이 100이라고 가정할 경우, 멀티플렉서(311a)를 통해 시스템 클럭의 카운터 값이 입력되면 감소 카운터(311b)는 입력된 카운터 값이 0보다 작은지를 판단한다.
판단 결과 카운터 값이 0보다 클 경우(예를 들어, 100), 감소 카운터(311b)는 카운터 값을 1만큼 감소시킨다. 이에, 카운터 값은 99가 된다.
그 다음, 감소된 카운터 값(예를 들어, 99)은 멀티플렉서(311a)에 의해서 선택되어 감소 카운터(311b)에 재 입력이 되며, 감소 카운터(311b)는 입력된 카운터 값이 0보다 작은지 판단하고, 판단 결과 카운터 값이 0보다 작거나 같을 경우 소정 스레드의 스케줄링을 수행한다.
DB 캐시(312)는 JBT 관리부(311)를 통해 변환된 네이티브 코드를 저장한다. 여기서, DB 캐시(312)는 SRAM(Static Random Access Memory)과 같은 빠른 속도의 메모리로 구현된다. 또한, DB캐시(312)는 ARM 프로세서(300)에게 ITCM으로 인식된다.
B2C캐시(313)는 수행할 바이트 코드의 주소와 DB 캐시(312)에 저장된 네이티브 코드를 매핑 시키며, 또한 바이트 코드의 주소와 네이티브 코드의 맵핑 정보를 저장한다.
JBT 레지스터(314)는 ARM프로세서(300)와 JBT(310) 간의 통신을 하기 위한 메모리 영역이다. 여기서, JBT 레지스터(314)는 빠른 속도의 SRAM과 같은 메모리로 구현되며, ARM 프로세서(300)에게는 DTCM으로 인식된다.
예를 들어, JBT 레지스터(314)를 통해서 ARM프로세서(300)는 JBT(310)에게 수행할 바이트 코드의 주소를 알려준다. 이에, JBT(310)는 해당 바이트 코드를 변환한 네이티브 코드에 대한 주소를 프로그램 카운터(program counter: PC)에 입력함으로써, ARM프로세서(300)가 네이티브 코드의 주소를 얻을 수 있도록 한다.
도 5는 본 발명의 다른 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 장치에서 가상 머신 가속기와 ARM 프로세서 간의 통신 동작을 나타낸 도면이다.
도시된 바와 같이, ARM 프로세서(300)는 바이트 코드의 주소(즉, VM_ip)를 JBT(310)의 레지스터 (즉, VM_bc, #BPC)에 저장하라는 명령어(51)를 수행한다.
그 다음, JBT(310)는 레지스터(즉, VM_bc, #PC)에 저장된 네이티브 코드의 주소를 ARM 프로세서(300)의 레지스터(즉, pc)로 옮기라는 명령어(52)를 수행한다.
따라서, ARM 프로세서(300)는 JBT(310)로부터 전송된 네이티브 코드의 주소값이 pc(program counter)에 저장되기 때문에 저장된 주소를 이용하여 바로 네이티브 코드를 수행할 수 있다.
도 6은 본 발명의 또 다른 실시예에 따른 가상 머신에서 스레드 스케줄링을 수행하는 방법을 나타낸 순서도 이다.
먼저, ARM 프로세서(300)로부터 바이트 코드의 주소가 수신 되면(S600), JBT(310)는 멀티플렉서(311a)를 통해 시스템 클럭의 카운터 값을 입력받고, 감소 카운터(311b)는 입력된 카운터 값을 체크 한다.
체크 결과 시스템 클럭의 카운터 값이 0보다 큰 경우(즉, 0보다 작거나 같은지 않은 경우)(S610), JBT 관리부(311)는 B2C 캐시(313)를 통해 해당 바이트 코드의 주소와 매칭되는 네이티브 코드가 존재하는 체크 한다(S630).
체크 결과 B2C 캐시(313)에 바이트 코드의 주소와 매칭되는 네이티브 코드가 존재하면, JBT 관리부(311)는 프로그램 카운터(PC)에 네이티브 코드의 주소를 입력한다(S640). 이 후, ARM 프로세서(300) 프로그램 카운터(PC)에 위치된 네이티브 코드의 주소를 수행할 수 있다.
그 다음, JBT 관리부(311)의 카운터(311b)는 입력된 시스템 클럭의 카운터 값을 1만큼 감소 시킨다(S650). 여기서, 카운터(311b)는 시스템 클럭이 입력될 때 마다 카운터 값을 1 만큼씩 감소시킨다.
한편, 체크 결과 B2C 캐시(313)에 바이트 코드의 주소와 매칭되는 네이티브 코드가 존재하지 않을 경우(S630), JBT 관리부(311)는 해당 바이트 코드의 주소에 따른 바이트 코드를 디코딩한다(S660). 그 다음, 디코딩하여 변환된 네이티브 코드를 DB 캐시(312)에 저장한다(S670). 이 후, 단계 S640 및 단계 S650 과정은 동일하게 수행된다.
한편, 시스템 클럭의 카운터 값이 0보다 작은지 여부를 체크한 결과 카운터 값이 0보다 작거나 같은 경우(S610), JBT 관리부(311)는 프로그램 카운터(PC)에 스케줄링 루틴 주소를 입력한다(S680). 즉, 시스템 클럭의 카운터 값이 0보다 작은 경우 스레드의 스케줄링을 수행한다. 이 후, ARM 프로세서(300) 프로그램 카운터(PC)에 위치된 스케줄링 루틴 주소를 수행할 수 있다.
그 다음, JBT 관리부(311)는 시스템 클럭의 카운터 값을 초기화 한다(S690).
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
가상 머신의 스레드 스케줄링을 수행하는 시점을 시스템 클럭의 카운터 값을 기초로 함으로써, 각 바이트 코드 마다 스케줄링을 수행할 것인지 체크하는 루틴이 필요하지 않기 때문에 인터프리터의 성능 저하를 가져오지 않는 장점이 있다.
또한, 기존의 스레드 스케줄링을 수행할 때와 달리 바이트 코드 단위의 카운팅이 아닌 시스템 클럭의 카운트 단위로 스케줄링을 수행함으로써, 스레드의 스케줄링 시점이 보다 정확하여 스레드 간 공정한 스케줄링이 수행되는 장점이 있다.
Claims (5)
- 가상 머신의 바이트 코드를 네이티브 코드로 변환하고, 전체 시스템의 기준이 되는 클럭 신호인 시스템 클럭을 기초로 하여 스레드의 스케줄링을 수행하는 JBT 관리부;상기 변환된 네이티브 코드를 저장하는 DB 캐시; 및상기 바이트 코드의 주소와 상기 DB 캐시에 저장된 네이티브 코드를 매핑시키는 B2C캐시; 및소정 프로세서와 상기 JBT 관리부와의 통신을 수행하는 JBT 레지스터를 포함하는 가상 머신에서 스레드 스케줄링을 수행하는 장치.
- 제 1항에 있어서,JBT 관리부는상기 시스템 클럭의 카운터 값을 입력 받는 멀티플렉서; 및상기 시스템 클럭이 입력될 때 마다 카운터 값을 변경시키고, 상기 카운터 값을 기초로 스레드의 스케줄링 수행 여부를 판단하는 감소 카운터를 포함하는 가상 머신에서 스레드 스케줄링을 수행하는 장치.
- 소정 프로세서로부터 바이트 코드의 주소를 수신하는 단계;상기 수신된 바이트 코드의 변환을 수행하기 전에 전체 시스템의 기준이 되는 클럭 신호인 시스템 클럭의 카운터 값을 체크하는 단계; 및상기 체크 결과 상기 카운터 값이 소정의 수치에 도달한 경우, 프로그램 카운터에 스케줄링 루틴 주소를 입력하는 단계를 포함하는 가상 머신에서 스레드 스케줄링을 수행하는 방법.
- 제 3항에 있어서,상기 스레드의 스케줄링이 수행되면 카운터 값을 초기화하는 가상 머신에서 스레드 스케줄링을 수행하는 방법.
- 제 3항에 있어서,상기 체크 결과 상기 카운터 값이 소정의 수치에 도달하지 않은 경우, 상기 바이트 코드의 주소에 매칭되는 네이티브 코드가 존재하는지 검색하는 단계;상기 검색 결과 네이티브 코드가 존재하지 않을 경우, 해당 바이트 코드를 변환하여 네이티브 코드를 생성 및 저장하는 단계; 및상기 네이티브 코드의 주소를 프로그램 카운터에 입력하는 단계를 포함하는 가상 머신에서 스레드 스케줄링을 수행하는 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060022873A KR100809294B1 (ko) | 2006-03-10 | 2006-03-10 | 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060022873A KR100809294B1 (ko) | 2006-03-10 | 2006-03-10 | 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070092559A KR20070092559A (ko) | 2007-09-13 |
KR100809294B1 true KR100809294B1 (ko) | 2008-03-07 |
Family
ID=38689892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060022873A KR100809294B1 (ko) | 2006-03-10 | 2006-03-10 | 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100809294B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101658035B1 (ko) | 2010-03-12 | 2016-10-04 | 삼성전자주식회사 | 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법 |
CN102830965B (zh) * | 2012-07-26 | 2015-12-09 | 复旦大学 | 一种Java虚拟机中位置无关代码的缓存与复用方法 |
CN109240802B (zh) * | 2018-09-21 | 2022-02-18 | 北京百度网讯科技有限公司 | 请求处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030075070A (ko) * | 2002-03-15 | 2003-09-22 | 유엔젤주식회사 | 공통선 신호 어플리케이션을 위한 가상 장치 및 그를이용한 메시지 처리 방법 |
KR20040036993A (ko) * | 2002-10-25 | 2004-05-04 | 주식회사 디지털앤디지털 | 시스템 타이머를 이용한 스케쥴링 장치 및 방법 |
JP2004234546A (ja) | 2003-01-31 | 2004-08-19 | Sanyo Electric Co Ltd | プログラム実行方法および装置 |
US20060026566A1 (en) | 2004-07-27 | 2006-02-02 | Texas Instruments Incorporated | Method and system for thread abstraction |
-
2006
- 2006-03-10 KR KR1020060022873A patent/KR100809294B1/ko not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030075070A (ko) * | 2002-03-15 | 2003-09-22 | 유엔젤주식회사 | 공통선 신호 어플리케이션을 위한 가상 장치 및 그를이용한 메시지 처리 방법 |
KR20040036993A (ko) * | 2002-10-25 | 2004-05-04 | 주식회사 디지털앤디지털 | 시스템 타이머를 이용한 스케쥴링 장치 및 방법 |
JP2004234546A (ja) | 2003-01-31 | 2004-08-19 | Sanyo Electric Co Ltd | プログラム実行方法および装置 |
US20060026566A1 (en) | 2004-07-27 | 2006-02-02 | Texas Instruments Incorporated | Method and system for thread abstraction |
Also Published As
Publication number | Publication date |
---|---|
KR20070092559A (ko) | 2007-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7487341B2 (en) | Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource | |
CN107408036B (zh) | 用户级分叉与结合处理器、方法、系统和指令 | |
JP6430970B2 (ja) | 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行 | |
Peck et al. | Hthreads: A computational model for reconfigurable devices | |
KR101455009B1 (ko) | 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간 통신 | |
US8972699B2 (en) | Multicore interface with dynamic task management capability and task loading and offloading method thereof | |
KR101773229B1 (ko) | 이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법 | |
KR101714133B1 (ko) | 벡터 로드 및 저장에 스트라이드 및 마스킹 기능을 제공하는 명령어 및 로직 | |
CN102955737B (zh) | 异构处理器体系的程序调试方法和系统 | |
KR101748506B1 (ko) | 실시간 명령어 추적 프로세서들, 방법들 및 시스템들 | |
KR20160075669A (ko) | 하이브리드 프로세서 코어를 포함하는 시스템-온-칩(soc) | |
JP4602047B2 (ja) | 情報処理装置 | |
US20170286301A1 (en) | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga | |
US20210089305A1 (en) | Instruction executing method and apparatus | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
KR100809294B1 (ko) | 가상 머신에서 스레드 스케줄링을 수행하는 장치 및 그방법 | |
Noack et al. | Heterogeneous active messages for offloading on the NEC SX-Aurora TSUBASA | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
CN114661434A (zh) | 用于难以预测的分支的替代路径解码 | |
JP2024527169A (ja) | マルチストランドアウトオブオーダプロセッサにおいてリタイア可能な複数の命令を特定する命令及びロジック | |
US11775336B2 (en) | Apparatus and method for performance state matching between source and target processors based on interprocessor interrupts | |
CN114661349A (zh) | 用于代码预取的指令和逻辑 | |
Prakash et al. | Custom instructions with local memory elements without expensive DMA transfers | |
CN118034784B (zh) | Risc-v向量处理器和用于risc-v向量处理器的方法 | |
Liang et al. | Asynchronous java accelerator for embedded java virtual machine |
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 | ||
G170 | Publication of correction | ||
LAPS | Lapse due to unpaid annual fee |