KR102021447B1 - 컴퓨팅 장치 및 그것의 동작 방법 - Google Patents

컴퓨팅 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102021447B1
KR102021447B1 KR1020180040311A KR20180040311A KR102021447B1 KR 102021447 B1 KR102021447 B1 KR 102021447B1 KR 1020180040311 A KR1020180040311 A KR 1020180040311A KR 20180040311 A KR20180040311 A KR 20180040311A KR 102021447 B1 KR102021447 B1 KR 102021447B1
Authority
KR
South Korea
Prior art keywords
type
variable
computing device
register file
rule table
Prior art date
Application number
KR1020180040311A
Other languages
English (en)
Inventor
이재욱
김찬노
김재혁
김성민
Original Assignee
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울대학교산학협력단 filed Critical 서울대학교산학협력단
Priority to KR1020180040311A priority Critical patent/KR102021447B1/ko
Priority to US16/270,054 priority patent/US10977012B2/en
Application granted granted Critical
Publication of KR102021447B1 publication Critical patent/KR102021447B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • G06F8/437Type checking
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Computational Linguistics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명의 하나의 실시 예에 따른 컴퓨팅 장치는 제1 변수에 대한 제1 변수 타입 및 제1 변수 값과 제2 변수에 대한 제2 변수 타입 및 제2 변수 값을 저장하는 통합 레지스터 파일, 제1 및 제2 변수 타입들에 따라 제1 및 제2 변수들에 대한 제1 연산을 수행하고, 제1 연산 결과를 출력하는 연산기 및 복수의 엔트리(entry)들을 포함하고, 제1 연산의 종류, 제1 및 제2 변수 타입들에 대응하는 엔트리가 존재하는 경우, 제1 연산 결과의 타입을 출력하는 타입 룰 테이블을 포함한다.

Description

컴퓨팅 장치 및 그것의 동작 방법{COMPUTING DEVICE AND OPERATING METHOD THEREOF}
본 발명은 하드웨어 장치에 관한 것으로써, 좀 더 상세하게는 데이터 타입 검사를 가속하기 위한 컴퓨팅 장치 및 그것의 동작 방법에 관한 것이다.
자바스크립트(JavaScript), 루아(Lua), 파이썬(Python) 등의 동적 스크립팅 언어(dynamnic scripting language)가 다양한 분야에서 사용되고 있다. 이러한 스크립팅 언어는 사용의 편의성으로 인해 데스크탑, 서버뿐만 아니라, 라즈베리 파이(Paspberry Pi), 아두이노(Arduino)와 같은 단일 보드 임베디드 컴퓨터에서도 사용되고 있다.
동적 스크립팅 언어는 실행 시점에 변수의 타입을 결정하는 동적 타입 시스템을 지원함으로써 프로그래밍 편의를 제공할 수 있다. 변수의 타입이 실행 시점에 주어진 입력에 따라 변하기 때문에, 동적 타입 시스템은 스크립트의 대부분의 연산을 실행하기 전에 변수의 타입을 추출하고 비교하는 타입 검사(type checking)를 반드시 실행해야 한다. 이에 따라, 동적 타입 시스템은 명령어 수, 메모리 사용량, 에너지 소비량 등의 측면에서 비효율을 야기할 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 변수의 타입 검사를 수행하는데 있어서 발생하는 오버헤드(overhead)를 감소시킬 수 있는 컴퓨팅 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 하나의 실시 예에 따른 컴퓨팅 장치는 제1 변수에 대한 제1 변수 타입 및 제1 변수 값과 제2 변수에 대한 제2 변수 타입 및 제2 변수 값을 저장하는 통합 레지스터 파일, 상기 제1 및 제2 변수 타입들에 따라 상기 제1 및 제2 변수들에 대한 제1 연산을 수행하고, 제1 연산 결과를 출력하는 연산기 및 복수의 엔트리(entry)들을 포함하고, 상기 제1 연산의 종류, 상기 제1 및 제2 변수 타입들에 대응하는 엔트리가 존재하는 경우, 상기 제1 연산 결과의 타입을 출력하는 타입 룰 테이블을 포함한다.
하나의 실시 예에 있어서, 상기 통합 레지스터 파일은 상기 제1 변수 타입이 정수형 또는 부동 소수점형인지 여부를 나타내는 제1 타입 플래그 및 상기 제2 변수 타입이 정수형 또는 부동 소수점형인지 여부를 나타내는 제2 타입 플래그를 더 저장할 수 있다.
하나의 실시 예에 있어서, 상기 연산기는 상기 제1 타입 플래그 및 상기 제2 타입 플래그가 정수형을 나타내는 경우, 상기 제1 연산을 수행하는 제1 연산 모듈 및 상기 제1 타입 플래그 및 상기 제2 타입 플래그가 부동 소수점형을 나타내는 경우, 상기 제1 연산을 수행하는 제2 연산 모듈을 포함할 수 있다.
하나의 실시 예에 있어서, 상기 타입 룰 테이블은 상기 제1 연산 결과의 타입이 정수형 또는 부동 소수점형인지 여부를 나타내는 상기 제1 연산 결과의 타입 플래그를 더 출력할 수 있다.
하나의 실시 예에 있어서, 상기 제1 연산 결과 및 상기 제1 연산 결과의 타입은 상기 통합 레지스터 파일에 저장될 수 있다.
본 발명의 하나의 실시 예에 따른 컴퓨팅 장치는 메모리로부터 상기 제1 및 제2 변수 타입들 및 상기 제1 및 제2 변수 값들을 추출하여 상기 통합 레지스터 파일에 저장하는 타입 추출기를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 타입 추출기는 변수의 값이 포함된 제1 데이터 워드를 기준으로 상기 변수의 타입이 포함된 제2 데이터 워드의 위치를 저장하는 오프셋 레지스터, 상기 변수의 타입이 포함된 상기 제2 데이터 워드에서 상기 변수의 타입을 나타내는 비트들의 시작 위치를 저장하는 시프트 레지스터 및 상기 변수의 타입을 나타내는 상기 비트들의 개수만큼 값이 1인 비트들을 저장하는 마스크 레지스터를 포함할 수 있다.
본 발명의 하나의 실시 예에 따른 컴퓨팅 장치는 상기 통합 레지스터 파일로부터 상기 제1 연산 결과 및 상기 제1 연산 결과의 타입을 추출하여 상기 메모리에 저장하는 타입 삽입기를 더 포함할 수 있다.
본 발명의 하나의 실시 예에 따른 컴퓨팅 장치는 상기 타입 룰 테이블을 이용하지 않고 변수의 타입 검사를 수행하는 루틴의 시작 주소를 저장하는 핸들러 레지스터를 더 포함하고, 상기 타입 룰 테이블에 상기 대응하는 엔트리가 존재하지 않는 경우, 상기 루틴의 실행에 따라 상기 제1 및 제2 변수 타입들이 검사될 수 있다.
본 발명의 하나의 실시 예에 있어서, 변수들의 타입들 및 상기 변수들의 값들을 저장하는 통합 레지스터 파일 및 복수의 엔트리(entry)들을 포함하는 타입 룰 테이블을 포함하는 컴퓨팅 장치의 동작 방법은 제1 변수 및 제2 변수에 대한 제1 연산 명령을 수신하는 단계, 상기 통합 레지스터 파일로부터 상기 제1 변수에 대한 제1 변수 타입 및 상기 제2 변수에 대한 제2 변수 타입을 검사하는 단계 및 상기 타입 룰 테이블에 상기 제1 연산의 종류, 상기 제1 및 제2 변수 타입들에 대응하는 엔트리가 존재하는 경우, 상기 타입 룰 테이블로부터 상기 제1 연산의 결과 타입을 획득하는 단계를 포함한다.
하나의 실시 예에 따른 동작 방법은 상기 제1 연산의 결과 타입을 상기 통합 레지스터 파일에 저장하는 단계를 더 포함할 수 있다.
하나의 실시 예에 따른 동작 방법은 상기 통합 레지스터 파일에 저장된 상기 제1 및 제2 변수 타입들에 따라 상기 제1 및 제2 변수들에 대한 상기 제1 연산을 수행하는 단계를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 연산은 상기 제1 및 제2 변수 타입들이 모두 정수형이거나 모두 부동 소수점형인 경우 수행될 수 있다.
하나의 실시 예에 따른 동작 방법은 상기 제1 연산으로부터 생성되는 제1 연산 결과를 상기 통합 레지스터 파일에 저장하는 단계를 더 포함할 수 있다.
하나의 실시 예에 따른 동작 방법은 상기 타입 룰 테이블에 상기 대응하는 엔트리가 존재하지 않는 경우, 변수의 타입 검사를 수행하는 타입 검사 루틴의 시작 주소로 이동하는 단계, 상기 타입 검사 루틴에 응답하여 상기 타입 룰 테이블을 이용하지 않고 상기 제1 및 제2 변수 타입들을 검사하는 단계 및 상기 검사된 타입들에 기초하여 상기 제1 및 제2 변수들 중 하나의 타입을 다른 하나의 타입과 일치하도록 변환하는 단계를 더 포함할 수 있다.
본 발명의 하나의 실시 예에 따른 컴퓨팅 장치는 명령어를 수신하고, 상기 명령어의 동작코드 및 상기 명령어와 관련된 변수를 판별하는 명령어 디코더, 상기 변수에 대응하는 변수 타입을 출력하는 통합 레지스터 파일, 복수의 엔트리(entry)들을 포함하고, 상기 동작코드 및 상기 변수 타입에 대응하는 엔트리가 존재하는 경우, 상기 동작코드 및 상기 변수 타입에 대응하는 결과 데이터의 타입을 출력하는 타입 룰 테이블을 포함한다.
하나의 실시 예에 따른 컴퓨팅 장치는 상기 타입 룰 테이블을 이용하지 않고 변수의 타입 검사를 수행하는 루틴의 시작 주소를 저장하는 핸들러 레지스터를 더 포함하고, 상기 대응하는 엔트리가 존재하지 않는 경우, 상기 타입 룰 테이블은 상기 대응하는 엔트리가 존재하지 않음을 나타내는 미스(miss) 신호를 상기 핸들러 레지스터로 출력하고, 상기 미스 신호에 응답하여 상기 루틴이 실행됨으로써 상기 변수의 타입 검사가 수행될 수 있다.
본 발명의 실시 예에 따르면, 새로운 명령어를 통해 변수의 타입 검사를 간단하게 수행할 수 있는 컴퓨팅 장치 및 그것의 동작 방법을 제공할 수 있다.
본 발명의 실시 예에 따르면, 새로운 명령어를 통해 변수의 타입 검사에 필요한 동적 명령어(dynamic instruction) 수가 감소될 수 있다.
본 발명의 실시 예에 따르면, 변수의 타입 검사와 동시에 연산이 수행되기 때문에, 분기 명령어의 감소에 따라 분기 예측률이 향상될 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 전자 기기를 보여주는 블록도이다.
도 2는 도 1의 컴퓨팅 장치의 예시를 보여주는 블록도이다.
도 3은 도 2의 컴퓨팅 장치를 상세하게 보여주는 블록도이다.
도 4는 도 1의 소스 코드 및 명령어의 예시를 보여주는 도면이다.
도 5는 도 3의 컴퓨팅 장치가 변수의 타입을 추출하는 동작을 나타내는 도면이다.
도 6은 도 5의 타입 추출기의 동작을 상세하게 설명하기 위한 블록도이다.
도 7은 도 3의 컴퓨팅 장치가 타입 검사 루틴의 시작 주소를 저장하는 동작을 나타내는 도면이다.
도 8은 도 3의 컴퓨팅 장치가 두 정수형 변수들의 덧셈을 수행하는 동작을 나타내는 도면이다.
도 9는 도 3의 컴퓨팅 장치가 두 부동 소수점형 변수들의 덧셈을 수행하는 동작을 나타내는 도면이다.
도 10은 도 3의 컴퓨팅 장치가 타입 검사 루틴의 시작 주소로 이동하는 동작을 나타내는 도면이다.
도 11은 도 3의 컴퓨팅 장치가 변수의 타입을 메모리에 저장하는 동작을 나타내는 도면이다.
도 12는 도 1의 컴퓨팅 장치의 하나의 예시적인 동작을 나타내는 순서도이다.
도 13은 도 1의 컴퓨팅 장치의 다른 예시적인 동작을 나타내는 순서도이다.
도 14는 본 발명의 실시 예에 따른 바이트코드 인터프리터의 예시이다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 이하의 설명에서, 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 발명의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 발명의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 통상의 기술자 의해 수행될 수 있다. 더욱이, 명확성 및 간결성을 위하여 잘 알려진 기능들 및 구조들에 대한 설명들은 생략된다. 본 명세서에서 사용된 용어들은 본 발명의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
상세한 설명에서 사용되는 부 또는 유닛(unit), 모듈(module), 계층(layer), 로직(logic) 등의 용어를 참조하여 설명되는 구성 요소들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예시적으로, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(Micro Electro Mechanical System; MEMS), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.
다르게 정의되지 않는 한, 본문에서 사용되는 기술적 또는 과학적인 의미를 포함하는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에 의해 이해될 수 있는 의미를 갖는다. 일반적으로 사전에서 정의된 용어들은 관련된 기술 분야에서의 맥락적 의미와 동등한 의미를 갖도록 해석되며, 본문에서 명확하게 정의되지 않는 한, 이상적 또는 과도하게 형식적인 의미를 갖도록 해석되지 않는다.
도 1은 본 발명의 하나의 실시 예에 따른 전자 기기를 보여주는 블록도이다. 전자 기기(1000)는 컴퓨팅 장치(100), 소스 코드 변환기(200) 및 스크립트(300)를 포함할 수 있다. 예를 들어, 전자 기기(1000)는 임베디드 컴퓨터, 데스크탑 및 서버를 포함할 수 있지만, 본 발명은 이에 한정되지 않으며, 전자 기기(1000)는 CPU 및 가속기 프로세서를 포함하는 다양한 종류의 전자 기기들을 포함할 수 있다.
컴퓨팅 장치(100)는 명령어를 수신하고 수신된 명령어에 기초하여 동작할 수 있다. 명령어는 스크립트(300)의 소스 코드에 기초하여 생성될 수 있다. 컴퓨팅 장치(100)는 소스 코드에 따라 다양한 동작을 수행할 수 있다. 예를 들어, 소스 코드가 두 변수들의 연산을 나타내는 경우, 컴퓨팅 장치(100)는 두 변수들의 연산을 수행할 수 있다.
소스 코드 변환기(200)는 스크립트(300)의 소스 코드를 컴퓨팅 장치(100)가 인식할 수 있는 형태로 변환할 수 있다. 소스 코드 변환기(200)는 소스 코드를 변환하여 컴퓨팅 장치(100)가 인식할 수 있는 명령어를 생성할 수 있다. 예를 들어, 명령어는 기계어일 수 있다. 소스 코드 변환기(200)는 소스 코드를 바이트코드(bytecode)로 변환하고, 변환된 바이트코드로부터 기계어를 생성할 수 있다. 즉, 소스 코드 변환기(200)는 인터프리터(interpreter) 및 컴파일러(compiler) 중 적어도 하나를 포함할 수 있다.
소스 코드 변환기(200)는 스크립트(300)로부터 하나의 소스 코드를 수신하고, 소스 코드와 대응하는 복수의 명령어를 생성할 수 있다. 컴퓨팅 장치(100)는 하나의 소스 코드가 나타내는 명령을 수행하기 위해 소스 코드 변환기(200)로부터 복수의 명령어를 수신할 수 있다. 컴퓨팅 장치(100)는 복수의 명령어를 처리함으로써 하나의 소스 코드를 처리할 수 있다.
스크립트(300)는 소스 코드를 포함할 수 있다. 스크립트(300)에 포함된 소스 코드는 소스 코드 변환기(200)에 의해 명령어로 변환될 수 있다. 스크립트(300)에 포함된 소스 코드가 실행됨에 따라 전자 기기(1000)는 다양한 동작을 수행할 수 있다.
스크립트(300)는 전자 기기(1000) 내부 메모리(미도시)에 저장된 프로그램일 수 있다. 예시적으로, 스크립트(300)는 동적 스크립팅 언어로 작성된 프로그램일 수 있다. 동적 스크립팅 언어로 작성된 프로그램의 경우, 스크립트(300)에 포함된 변수의 타입이 정의되지 않을 수 있고, 실행 시점에 따라 변수의 타입이 달라질 수 있다. 따라서, 컴퓨팅 장치(100)는 명령어를 처리하기 위해 변수의 타입을 검사할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 변수들에 대한 연산 명령어를 처리하기 위해 피연산자에 해당하는 변수들의 타입을 검사할 수 있다.
컴퓨팅 장치(100)는 통합 레지스터 파일(110) 및 타입 룰 테이블(120)을 포함할 수 있다. 컴퓨팅 장치(100)는 통합 레지스터 파일(110)을 통해 변수의 타입을 검사할 수 있다. 통합 레지스터 파일(110)은 변수의 타입 정보를 미리 저장할 수 있다. 예시적으로, 컴퓨팅 장치(100)는 특정 변수에 대한 명령어를 수신하는 경우, 통합 레지스터 파일(110)을 통해 특정 변수의 타입을 검사할 수 있다. 통합 레지스터 파일(110)에 저장된 변수의 타입 정보를 통해 변수의 타입이 간단하게 확인될 수 있으므로, 컴퓨팅 장치(100)는 명령어를 빠르게 처리할 수 있다.
컴퓨팅 장치(100)는 명령어를 처리하여 생성된 결과 데이터를 통합 레지스터 파일(110)에 저장할 수 있다. 결과 데이터는 동작코드에 따라 변수를 처리하여 생성된 데이터일 수 있다. 컴퓨팅 장치(100)는 생성된 결과 데이터의 값뿐만 아니라 타입 정보를 통합 레지스터 파일(110)에 저장할 수 있다. 컴퓨팅 장치(100)는 결과 데이터의 타입을 타입 룰 테이블(120)을 통해 획득할 수 있다.
타입 룰 테이블(120)은 다양한 상황에 대응하는 결과 데이터의 타입 정보를 저장할 수 있다. 예시적으로, 타입 룰 테이블(120)은 명령어의 동작코드(opcode)와 변수의 타입에 따라 대응하는 결과 데이터의 타입 정보를 저장할 수 있다. 결과 데이터의 타입은 명령의 종류(즉, 명령어의 동작코드) 및 변수의 타입에 따라 달라질 수 있다. 따라서, 컴퓨팅 장치(100)는 타입 룰 테이블(120)을 통해 동작코드 및 변수의 타입에 따른 결과 데이터의 타입 정보를 획득할 수 있다.
컴퓨팅 장치(100)는 획득된 결과 데이터의 타입 정보를 통합 레지스터 파일(110)에 저장할 수 있다. 이후, 결과 데이터에 관한 명령어가 수신되는 경우, 컴퓨팅 장치(100)는 통합 레지스터 파일(110)을 통해 결과 데이터의 타입 검사를 수행할 수 있다.
도 2는 도 1의 컴퓨팅 장치의 예시를 보여주는 블록도이다. 도 2를 참조하면, 컴퓨팅 장치(100)는 통합 레지스터 파일(110), 타입 룰 테이블(120), 연산기(130), 메모리(140), 타입 추출기(150), 타입 삽입기(160) 및 핸들러 레지스터(170)를 포함할 수 있다.
통합 레지스터 파일(110)은 변수의 타입 정보 및 값을 저장할 수 있다. 타입 정보는 타입뿐만 아니라 변수의 타입이 특정 타입인지 여부를 나타내는 플래그(flag) 비트를 포함할 수 있다. 예를 들어, 플래그 비트는 변수가 정수형인지 또는 부동 소수점형인지 여부를 나타낼 수 있다. 통합 레지스터 파일(110)에 저장된 타입 정보로부터 변수의 타입 검사가 수행될 수 있다.
통합 레지스터 파일(110)은 요청에 따라 변수의 타입 및 값을 출력할 수 있다. 통합 레지스터 파일(110)로부터 출력되는 변수의 타입은 타입 룰 테이블(120)로 제공될 수 있고, 변수의 값은 연산기(130)로 제공될 수 있다.
타입 룰 테이블(120)은 복수의 엔트리(entry)들을 포함할 수 있다. 각각의 엔트리는 결과 데이터의 타입 정보를 포함할 수 있다. 결과 데이터의 타입 정보는 동작코드 및 변수의 타입에 따라 달라질 수 있다. 타입 룰 테이블(120)은 결과 데이터의 타입뿐만 아니라, 결과 데이터의 타입이 특정 타입인지 여부를 나타내는 결과 데이터의 플래그 비트를 포함할 수 있다.
타입 룰 테이블(120)은 동작코드 및 변수의 타입을 수신하고, 이에 대응하는 엔트리가 존재하는지 여부를 판별할 수 있다. 대응하는 엔트리가 존재하는 경우, 타입 룰 테이블(120)은 대응하는 결과 데이터의 타입 정보를 출력할 수 있다. 예를 들어, 타입 룰 테이블은 내용 주소화 메모리(content addressable memory)일 수 있다. 출력되는 결과 데이터의 타입 정보는 통합 레지스터 파일(110)에 저장될 수 있다. 타입 룰 테이블(120)의 엔트리들은 컴퓨팅 장치(100)의 초기화 단계 또는 스크립트 실행 중에 설정될 수 있다.
연산기(130)는 변수들의 타입에 기초하여 연산을 수행할 수 있다. 변수들의 타입이 연산기(130)에 의해 처리될 수 있는 타입들의 조합인 경우, 연산기(130)는 연산을 수행할 수 있다. 예를 들어, 연산기(130)는 변수들의 타입이 모두 정수형이거나 모두 부동 소수점형인 경우 연산을 수행할 수 있다. 변수들의 타입은 통합 레지스터 파일(110)을 통해 검사될 수 있다. 연산기(130)는 통합 레지스터 파일(110)로부터 출력되는 변수들의 값을 이용하여 연산을 수행할 수 있다.
연산기(130)는 변수들의 연산을 수행하고 연산 결과(즉, 결과 데이터)를 출력할 수 있다. 연산기(130)로부터 출력되는 연산 결과는 타입 정보를 포함하지 않을 수 있다. 즉, 연산 결과는 값에 대한 정보만 포함할 수 있다. 연산 결과는 통합 레지스터 파일(110)로 저장될 수 있다.
메모리(140)는 변수들에 대한 다양한 정보를 저장할 수 있다. 변수들에 대한 정보는 변수 값 및 변수 타입에 대한 정보를 포함할 수 있다. 메모리(140)로부터 추출된 변수들의 값 및 타입 정보는 통합 레지스터 파일(110)로 제공될 수 있다. 예시적으로, 통합 레지스터 파일(110)은 수신된 명령어와 관련된 변수들의 값 및 타입 정보를 메모리(140)로부터 제공받을 수 있다.
타입 추출기(150)는 메모리(140)에 저장된 변수의 타입 및 값을 추출할 수 있다. 타입 추출기(150)는 변수의 타입 및 값을 추출하여 통합 레지스터 파일(110)에 저장할 수 있다. 타입 추출기(150)는 수신된 명령어와 관련된 변수의 타입 및 값을 추출할 수 있다. 예를 들어, 연산 명령어가 수신된 경우, 타입 추출기(150)는 피연산자에 해당하는 변수들의 타입 및 값을 추출할 수 있다.
타입 삽입기(160)는 통합 레지스터 파일(110)에 저장된 변수의 타입 및 값을 추출하고, 메모리(140)에 저장할 수 있다. 예를 들어, 연산 결과와 연산 결과의 타입이 통합 레지스터 파일(110)에 저장된 경우, 타입 삽입기(160)는 통합 레지스터 파일(110)로부터 연산 결과 및 연산 결과의 타입을 추출하여 메모리(140)에 저장할 수 있다.
핸들러 레지스터(170)는 변수의 타입 검사를 수행하는 타입 검사 루틴(routine)의 시작 주소를 저장할 수 있다. 타입 검사 루틴을 통해 변수의 타입 검사가 수행되는 경우, 컴퓨팅 장치(100)는 타입 룰 테이블(120)을 이용하지 않을 수 있다. 이 경우, 수행되는 변수의 타입 검사는 소프트웨어적으로 수행되는 종래의 타입 검사 방식일 수 있다. 예시적으로, 컴퓨팅 장치(100)는 변수의 타입이 통합 레지스터 파일(110)에 저장되어 있지 않은 경우, 핸들러 레지스터(170)에 저장되어 있는 시작 주소로 이동하여 변수의 타입을 검사할 수 있다. 또는 컴퓨팅 장치(100)는 타입 룰 테이블(120)에 대응하는 엔트리가 존재하지 않는 경우, 핸들러 레지스터(170)에 저장되어 있는 시작 주소로 이동하여 변수의 타입을 검사할 수 있다.
도 2에 도시된 바와 같이, 컴퓨팅 장치(100)는 통합 레지스터 파일(110)을 이용하여 변수의 타입을 간단하게 검사할 수 있다. 특히, 연산 수행에 있어서, 동적으로 변하는 변수들의 타입이 통합 레지스터 파일(110)에 저장되기 때문에, 컴퓨팅 장치(100)는 통합 레지스터 파일(110)로부터 변수들의 타입 검사를 빠르게 수행할 수 있고, 수행된 결과에 기초하여 연산을 수행할 수 있다. 또한, 컴퓨팅 장치(100)는 타입 룰 테이블(120)을 통해 연산 결과의 타입을 간단하게 획득할 수 있다. 획득된 연산 결과의 타입은 통합 레지스터 파일(110)에 저장되기 때문에, 이후에 컴퓨팅 장치(100)는 연산 결과의 타입을 간단하게 검사할 수 있다.
도 3은 도 2의 컴퓨팅 장치를 상세하게 보여주는 블록도이다. 도 3을 참조하면, 컴퓨팅 장치(100)는 통합 레지스터 파일(110), 타입 룰 테이블(120), 제1 연산 모듈(131), 제2 연산 모듈(132), 메모리(140), 타입 추출기(150), 타입 삽입기(160), 핸들러 레지스터(170) 및 명령어 디코더(180)를 포함할 수 있다. 제1 연산 모듈(131) 및 제2 연산 모듈(132)은 도 2의 연산기(130)에 포함될 수 있다. 도 3의 컴퓨팅 장치(100)는 도 2의 컴퓨팅 장치(100)와 비교하여 명령어 디코더(180)를 더 포함할 수 있다.
명령어 디코더(180)는 명령어를 수신하고, 수신된 명령어를 디코딩할 수 있다. 디코딩 결과에 따라 컴퓨팅 장치(100)는 수신된 명령어에 응답하여 대응하는 동작을 수행할 수 있다. 명령어 디코더(180)는 명령어를 디코딩하고, 명령어의 동작코드 및 변수(V)를 추출할 수 있다. 추출된 변수(V)는 통합 레지스터 파일(110)로 제공되고, 추출된 동작코드는 타입 룰 테이블(120)로 제공될 수 있다.
통합 레지스터 파일(110)은 복수의 레지스터들(예를 들어, R1 및 R2 레지스터들)을 포함할 수 있다. 각각의 레지스터는 플래그 필드(F), 타입 필드(T) 및 값 필드(A)를 포함할 수 있다. 변수가 정수형인지 또는 부동 소수점형인지 여부를 나타내는 플래그 비트는 플래그 필드(F)에 저장될 수 있다. 변수의 타입은 타입 필드(T)에 저장되고, 변수의 값은 값 필드(A)에 저장될 수 있다. 통합 레지스터 파일(110)은 변수(V)에 대응하는 레지스터에 저장된 변수의 타입(V.t) 및 변수의 값(V.v)을 출력할 수 있다. 통합 레지스터 파일(110)은 변수의 값(V.v)을 제1 연산 모듈(131) 또는 제2 연산 모듈(132)로 제공할 수 있고, 변수의 타입(V.t)을 타입 룰 테이블(120)로 제공할 수 있다.
타입 룰 테이블(120)은 복수의 엔트리들을 포함할 수 있다. 각각의 엔트리들은 동작코드 필드(OP), 제1 타입 필드(T1), 제2 타입 필드(T2), 결과 타입 필드(R/T) 및 결과 플래그 필드(R/F)를 포함할 수 있다. 도 3에 도시된 바와 같이, 제1 엔트리(E1)의 동작코드 필드(OP), 제1 타입 필드(T1), 제2 타입 필드(T2), 결과 타입 필드(R/T) 및 결과 플래그 필드(R/F)에는 각각 "+", "INT", "INT", "INT" 및 '0'이 저장될 수 있다. 동작코드 필드(OP)에 저장된 "+"는 덧셈에 대한 동작코드를 나타내고, 제1 타입 필드(T1), 제2 타입 필드(T2) 및 결과 타입 필드(R/T)에 저장된 "INT"는 정수형 타입을 나타낼 수 있다. 결과 플래그 필드(R/F)에 저장된 '0'은 연산 결과의 타입이 정수형임을 나타내는 플래그 비트일 수 있다. 즉, 타입 룰 테이블(120)은 정수형 변수들의 덧셈 결과로부터 생성되는 연산 결과의 타입 정보를 미리 저장할 수 있다.
마찬가지로, 제2 엔트리(E2)의 동작코드 필드(OP), 제1 타입 필드(T1), 제2 타입 필드(T2), 결과 타입 필드(R/T) 및 결과 플래그 필드(R/F)에는 각각 "+", "FLT", "FLT", "FLT" 및 '1'이 저장될 수 있다. 동작코드 필드(OP)에 저장된 "+"는 덧셈에 대한 동작코드를 나타내고, 제1 타입 필드(T1), 제2 타입 필드(T2) 및 결과 타입 필드(R/T)에 저장된 "FLT"는 부동 소수점형 타입을 나타낼 수 있다. 결과 플래그 필드(R/F)에 저장된 '1'은 연산 결과의 타입이 부동 소수점형임을 나타내는 플래그 비트일 수 있다. 즉, 타입 룰 테이블(120)은 부동 소수점형 변수들의 덧셈 결과로부터 생성되는 연산 결과의 타입 정보를 미리 저장할 수 있다.
타입 룰 테이블(120)은 수신된 동작코드 및 변수의 타입(V.t)에 대응하는 엔트리가 존재하는지 여부를 판별할 수 있다. 대응하는 엔트리가 존재하는 경우, 대응하는 결과 타입 필드(R/T) 및 결과 플래그 필드(R/F)에 저장된 타입 정보를 출력할 수 있다. 결과 데이터의 타입(Vr.t) 및 결과 데이터의 플래그 비트(Vr.f)는 통합 레지스터 파일(110)에 저장될 수 있다. 대응하는 엔트리가 존재하지 않는 경우, 타입 룰 테이블(120)은 대응하는 엔트리가 존재하지 않음을 나타내는 신호(miss)를 핸들러 레지스터(170)에 제공할 수 있다. 이 경우, 핸들러 레지스터(170)에 저장된 타입 검사 루틴의 시작 주소가 출력될 수 있다. 컴퓨팅 장치(100)는 타입 검사 루틴의 시작 주소로 이동하여 타입 룰 테이블(120)을 이용하지 않고 변수(V)의 타입 검사를 수행할 수 있다.
제1 연산 모듈(131)은 통합 레지스터 파일(110)로부터 제공된 변수의 값(V.v)에 기초하여 정수형 연산을 수행할 수 있다. 제1 연산 모듈(131)은 연산을 수행하여 연산 결과(Vr.v)를 생성할 수 있다. 생성된 연산 결과(Vr.v)는 통합 레지스터 파일(110)에 저장될 수 있다. 제2 연산 모듈(132)은 통합 레지스터 파일(110)로부터 제공된 변수의 값(V.v)에 기초하여 부동 소수점형 연산을 수행할 수 있다. 제2 연산 모듈(132)은 연산을 수행하여 연산 결과(Vr.v)를 생성할 수 있다. 생성된 연산 결과(Vr.v)는 통합 레지스터 파일(110)에 저장될 수 있다.
타입 추출기(150)는 메모리(140)로부터 변수의 값(V.v) 및 변수의 타입(V.t)을 추출할 수 있다. 타입 추출기(150)는 변수의 타입(V.t)으로부터 변수의 플래그 비트(V.f)를 생성할 수 있다. 예를 들어, 변수의 타입(V.t)이 정수형 또는 부동 소수점형인 경우, 타입 추출기(150)는 변수의 플래그 비트(V.f)를 생성할 수 있다. 생성된 변수의 값(V.v), 변수의 타입(V.t) 및 변수의 플래그 비트(V.f)는 통합 레지스터 파일(110)에 저장될 수 있다.
타입 삽입기(160)는 통합 레지스터 파일(110)의 레지스터(R)로부터 변수의 값(V.v) 및 변수의 타입(V.t)을 추출할 수 있다. 추출된 변수의 값(V.v) 및 변수의 타입(V.t)은 메모리(140)에 저장될 수 있다.
도 4는 도 1의 소스 코드, 바이트코드 및 명령어의 예시를 보여주는 도면이다. 도 1 및 도 4를 참조하면, 소스 코드 "z=x+y;"는 스크립트(300)에 포함된 소스 코드들 중 하나일 수 있다. 소스 코드 변환기(200)는 해당 소스 코드를 두 변수들(즉, "x" 및 "y")의 덧셈을 나타내는 "ADD" 바이트코드로 변환할 수 있다. "ADD" 바이트코드를 실행하기 위해 소스 코드 변환기(200)는 복수의 명령어들을 생성할 수 있다. 도 4에 도시된 바와 같이, 소스 코드 변환기(200)는 "tld", "thdl", "xadd", "tsd"와 같은 복수의 명령어들을 생성할 수 있다. 컴퓨팅 장치(100)는 생성된 복수의 명령어들을 처리함으로써 "z=x+y"를 실행할 수 있다.
"tld"는 변수의 타입 및 값을 메모리(140)로부터 추출하여 통합 레지스터 파일(110)에 저장하는 명령어이다. 컴퓨팅 장치(100)는 "tld"에 응답하여 타입 추출기(150)를 통해 변수의 타입 및 값을 통합 레지스터 파일(110)에 저장할 수 있다. "ADD"를 실행하기 위해 생성된 "tld"에 응답하여 컴퓨팅 장치(100)는 두 변수들의 타입 및 값을 통합 레지스터 파일(110)에 저장할 수 있다.
"thdl"은 타입 검사 루틴의 시작 주소를 핸들러 레지스터(170)에 저장하는 명령어이다. 컴퓨팅 장치(100)는 "thdl"에 응답하여 핸들러 레지스터(170)에 타입 검사 루틴의 시작 주소를 저장할 수 있다. 컴퓨팅 장치(100)는 타입 룰 테이블(120)에 대응하는 엔트리가 존재하지 않는 경우, 핸들러 레지스터(170)에 저장되어 있는 주소로 이동하여 두 변수들의 타입을 검사할 수 있다. 이 경우 수행되는 타입 검사는 소프트웨어적으로 수행되는 종래의 방식일 수 있다.
"xadd"는 덧셈 연산 및 연산 결과의 타입 검사를 수행하는 명령어이다. 컴퓨팅 장치(100)는 "xadd"에 응답하여 통합 레지스터 파일(110)로부터 두 변수들의 타입을 검사할 수 있다. 연산기(130)는 두 변수들의 타입에 기초하여 덧셈 연산을 수행할 수 있다. 예를 들어, 연산기(130)는 두 변수들의 타입이 모두 정수형이거나 모두 부동 소수점형인 경우, 덧셈 연산을 수행할 수 있다. 연산기(130)로부터 생성된 연산 결과는 통합 레지스터 파일(110)에 저장될 수 있다.
또한, 컴퓨팅 장치(100)는 "xadd"에 응답하여 타입 룰 테이블(120)을 검사할 수 있다. 덧셈에 대한 동작코드 및 두 변수들의 타입에 대응하는 엔트리가 존재하는 경우, 타입 룰 테이블(120)은 대응하는 연산 결과의 타입을 출력할 수 있다. 타입 룰 테이블(120)은 대응하는 연산 결과의 타입뿐만 아니라 대응하는 연산 결과의 플래그 비트도 출력할 수 있다. 타입 룰 테이블(120)로부터 출력된 연산 결과의 타입 및 연산 결과의 플래그 비트는 통합 레지스터 파일(110)에 저장될 수 있다. 덧셈에 대한 동작코드 및 두 변수들의 타입에 대응하는 엔트리가 존재하지 않는 경우, 컴퓨팅 장치(100)는 핸들러 레지스터(170)에 저장되어 있는 주소로 이동하여 두 변수들의 타입을 검사할 수 있다.
"tsd"는 통합 레지스터 파일(110)로부터 변수의 타입 및 값을 추출하여 메모리(140)에 저장하는 명령어이다. 컴퓨팅 장치(100)는 "tsd"에 응답하여 타입 삽입기(160)를 통해 변수의 타입 및 값을 메모리(140)에 저장할 수 있다. "xadd"에 의해 연산 결과 및 연산 결과의 타입이 통합 레지스터 파일(110)에 저장된 경우, 타입 삽입기(160)는 통합 레지스터 파일(110)에 저장된 연산 결과 및 연산 결과의 타입을 추출할 수 있다. 타입 삽입기(160)는 추출된 연산 결과 및 연산 결과의 타입을 메모리(140)에 저장할 수 있다.
도 4에 도시된 바와 같이, 하나의 소스 코드를 실행하기 위해 컴퓨팅 장치(100)는 복수의 명령어들을 순차적으로 처리할 수 있다. 도 4의 명령어들은 통합 레지스터 파일(110) 및 타입 룰 테이블(120)에 기초한 새로운 명령어이므로, 일반적으로 "ADD"를 실행하기 위해 생성되는 명령어들과 상이할 수 있다. "ADD"를 실행하기 위해 생성되는 "xadd"는 미리 저장된 변수들의 타입에 따라 정수형 덧셈을 수행할지 또는 부동 소수점형 덧셈을 수행할지 여부를 동적으로 결정할 수 있다. 즉, 하나의 연산 명령어를 통해 정수형 연산 및 부동 소수점형 연산이 수행될 수 있다. 또한, "xadd"에 응답하여 연산 결과의 타입 검사가 수행될 수 있다. 이와 같이, 본 발명은 하나의 명령어에 기초하여 다양한 타입을 갖는 변수들의 연산이 수행될 수 있고 연산 결과의 타입 검사가 수행될 수 있으므로, 생성되는 명령어의 수가 감소될 수 있다.
도 4의 소스 코드 및 명령어들은 하나의 예시일 뿐이며, 본 발명은 이에 한정되지 않는다. 예를 들어, 소스 코드가 두 변수들의 뺄셈을 지시하는 "SUB"인 경우, 소스 코드 변환기(200)로부터 생성되는 명령어들 중 하나는 "xsub"일 수 있다. "xsub"는 뺄셈 연산 및 연산 결과의 타입 검사를 수행하는 명령어일 수 있다. 또한, 소스 코드가 두 변수들의 곱셈을 지시하는 "MUL"인 경우, 소스 코드 변환기(200)로부터 생성되는 명령어들 중 하나는 "xmul"일 수 있다. "xmul"은 곱셈 연산 및 연산 결과의 타입 검사를 수행하는 명령어일 수 있다. 즉, 소스 코드에 따라 생성되는 명령어가 달라질 수 있고, 생성되는 명령어는 컴퓨팅 장치(100)에 기초한 명령어일 수 있다.
이하에서는 도 5 내지 도 11을 참조하여 본 발명의 실시 예에 따른 컴퓨팅 장치(100)의 동작을 상세하게 설명할 것이다. 설명의 편의를 위해, 도 4에 도시된 바와 같이, 컴퓨팅 장치(100)는 바이트코드 "ADD"를 처리하기 위해 복수의 명령어들을 처리하는 것으로 가정한다. 그러나, 본 발명은 이에 한정되지 않으며, 컴퓨팅 장치(100)는 다양한 연산을 수행할 수 있고, 다양한 명령어들을 처리할 수 있다.
도 5는 도 3의 컴퓨팅 장치가 변수의 타입을 추출하는 동작을 나타내는 도면이다. 도 5를 참조하면, 명령어 디코더(180)는 "tld"를 수신하고, "tld"를 디코딩할 수 있다. "tld"는 제1 변수(V1) 및 제2 변수(V2)의 타입을 추출할 것을 지시하는 명령어일 수 있다. 디코딩 결과에 기초하여 타입 추출기(150)는 메모리(140)로부터 제1 변수의 값(V1.v), 제1 변수의 타입(V1.t), 제2 변수의 값(V2.v) 및 제2 변수의 타입(V2.t)을 추출할 수 있다. 타입 추출기(150)는 제1 변수의 타입(V1.t) 및 제2 변수의 타입(V2.t)으로부터 제1 변수의 플래그 비트(V1.f) 및 제2 변수의 플래그 비트(V2.f)를 생성할 수 있다. 타입 추출기(150)는 제1 변수의 값(V1.v), 제1 변수의 타입(V1.t), 제1 변수의 플래그 비트(V1.f), 제2 변수의 값(V2.v), 제2 변수의 타입(V2.t) 및 제2 변수의 플래그 비트(V2.f)를 통합 레지스터 파일(110)에 저장할 수 있다.
제1 변수(V1)의 값 및 타입 정보는 제1 레지스터(R1)에 저장되고, 제2 변수(V2)의 값 및 타입 정보는 제2 레지스터(R2)에 저장될 수 있다. 제1 변수의 값(V1.v)이 '1'이고, 제1 변수의 타입(V1.t)이 정수형인 경우, 제1 레지스터(R1)의 플래그 필드(F), 타입 필드(T) 및 값 필드(A)에는 각각 '0', "INT", '1'이 저장될 수 있다. 제2 변수의 값(V2.v)이 '2'이고, 제2 변수의 타입(V2.t)이 정수형인 경우, 제2 레지스터(R2)의 플래그 필드(F), 타입 필드(T) 및 값 필드(A)에는 각각 '0', "INT", '2'이 저장될 수 있다.
도 6은 도 5의 타입 추출기의 동작을 상세하게 설명하기 위한 블록도이다. 도 6을 참조하면, 메모리(140)는 제1 데이터 워드(w1) 및 제2 데이터 워드(w2)를 포함할 수 있다. 제1 데이터 워드(w1)는 변수의 값을 포함하고, 제2 데이터 워드(w2)는 변수의 타입을 포함할 수 있다.
타입 추출기(150)는 오프셋(offset) 레지스터(151), 시프트(shift) 레지스터(152) 및 마스크(mask) 레지스터(153)를 포함할 수 있다. 오프셋 레지스터(151)는 변수의 값이 포함된 데이터 워드를 기준으로 변수의 타입이 포함된 데이터 워드의 위치를 저장할 수 있다. 도 6에 도시된 바와 같이, 변수의 값이 포함된 제1 데이터 워드(w1)를 기준으로 변수의 타입이 포함된 제2 데이터 워드(w2)가 뒤에 위치하는 경우, 오프셋 레지스터(151)는 뒤를 나타내는 정보를 저장할 수 있다.
시프트 레지스터(152)는 변수의 타입이 포함된 데이터 워드에서 타입을 나타내는 비트들의 시작 위치를 저장할 수 있다. 데이터 워드에 포함된 비트들 중 일부 비트들만이 타입을 나타낼 수 있으므로, 시프트 레지스터(152)는 타입을 나타내는 비트들의 시작 위치를 저장할 수 있다. 도 6에 도시된 바와 같이, 변수의 타입이 포함된 제2 데이터 워드(w2)에서 타입을 나타내는 비트들이 제1 비트 내지 제8 비트인 경우(즉, '11100111')인 경우, 시프트 레지스터(152)는 시작 위치로서 첫 번째 비트의 위치를 저장할 수 있다.
마스크 레지스터(153)는 타입을 나타내는 비트들의 개수만큼 값이 '1'인 비트들을 저장할 수 있다. 도 6에 도시된 바와 같이, 타입을 나타내는 비트들이 8-비트인 경우, 마스크 레지스터(153)는 값이 '1'인 8개의 비트(예를 들어, '11111111')를 저장할 수 있다.
타입 추출기(150)는 오프셋 레지스터(151)에 저장된 정보로부터 제2 데이터 워드(w2)의 위치를 판별할 수 있다. 타입 추출기(150)는 시프트 레지스터(152)에 저장된 정보로부터 타입을 나타내는 비트들의 시작 위치를 판별할 수 있다. 타입 추출기(150)는 마스크 레지스터(153)에 저장된 비트들을 이용하여 타입을 나타내는 비트들의 시작 위치를 기준으로 제2 데이터 워드(w2)에서 타입 비트들을 추출할 수 있다.
스크립트 언어의 종류 및 스크립트를 변환하는 엔진의 종류에 따라 메모리(140)에 저장되는 데이터 워드의 구조가 달라질 수 있으므로, 오프셋 레지스터(151), 시프트 레지스터(152) 및 마스크 레지스터(153)에 저장되는 정보는 달라질 수 있다. 오프셋 레지스터(151), 시프트 레지스터(152) 및 마스크 레지스터(153)의 값은 별도의 명령어에 기초하여 설정될 수 있다.
도 7은 도 3의 컴퓨팅 장치가 타입 검사 루틴의 시작 주소를 저장하는 동작을 나타내는 도면이다. 도 7을 참조하면, 명령어 디코더(180)는 "thdl"를 수신하고, "thdl"를 디코딩할 수 있다. 디코딩 결과에 기초하여 타입 검사 루틴의 시작 주소는 핸들러 레지스터(170)에 저장될 수 있다. 타입 검사 명령어에 응답하여 컴퓨팅 장치(100)는 타입 룰 테이블(120)을 이용하지 않고 종래의 방식으로 타입 검사를 수행할 수 있다.
도 8은 도 3의 컴퓨팅 장치가 두 정수형 변수들의 덧셈을 수행하는 동작을 나타내는 도면이다. 도 8을 참조하면, 명령어 디코더(180)는 "xadd"를 수신하고, "xadd"를 디코딩할 수 있다. 디코딩 결과에 기초하여 명령어 디코더(180)는 명령어의 동작코드를 타입 룰 테이블(120)에 제공하고, 제1 변수(V1) 및 제2 변수(V2)를 통합 레지스터 파일(110)에 제공할 수 있다.
통합 레지스터 파일(110)의 제1 레지스터(R1)는 제1 변수(V1)에 대응하고, 제2 레지스터(R2)는 제2 변수(V2)에 대응할 수 있다. 통합 레지스터 파일(110)은 제1 레지스터(R1)에 저장된 플래그 비트와 제2 레지스터(R2)에 저장된 플래그 비트가 모두 '0'인 것을 확인함으로써 제1 변수(V1) 및 제2 변수(V2)를 정수형으로 판별할 수 있다. 이에 따라, 통합 레지스터 파일(110)은 제1 변수의 값(V1.v)과 제2 변수의 값(V2.v)을 제1 연산 모듈(131)로 제공할 수 있다. 제1 변수의 값(V1.v)은 '1'이고, 제2 변수의 값(V2.v)은 '2'일 수 있다.
제1 연산 모듈(131)은 제1 변수의 값(V1.v)과 제2 변수의 값(V2.v)의 덧셈을 수행할 수 있다. 도 8에는 도시되지 않았지만, 제1 연산 모듈(131)은 연산 종류의 관한 정보(즉, 덧셈)를 명령어 디코더(180)로부터 전달받을 수 있다. 예를 들어, 제1 연산 모듈(131)은 명령어 디코더(180)로부터 명령어의 동작코드를 수신하고, 동작코드에 따라 덧셈을 수행할 수 있다. 제1 연산 모듈(131)은 연산 결과(Vr.v)로서 '3'을 생성할 수 있다. 생성된 연산 결과(Vr.v)는 통합 레지스터 파일(110)의 제3 레지스터(R3)에 저장될 수 있다. 즉, 연산 결과(Vr.v)는 제3 레지스터(R3)의 값 필드(A)에 저장될 수 있다.
통합 레지스터 파일(110)은 제1 레지스터(R1)로부터 추출된 제1 변수의 타입(V1.t)을 타입 룰 테이블(120)로 제공하고, 제2 레지스터(R2)로부터 추출된 제2 변수의 타입(V2.t)을 타입 룰 테이블(120)로 제공할 수 있다. 제1 변수의 타입(V1.t) 및 제2 변수의 타입(V2.t)은 "INT"일 수 있다. 타입 룰 테이블(120)은 명령어 디코더(180)로부터 제공된 동작코드("+")와 통합 레지스터 파일(110)로부터 제공된 변수들의 타입들("INT", "INT")에 기초하여 대응하는 엔트리가 존재하는지 여부를 확인할 수 있다. 제1 엔트리(E1)에 저장된 동작코드 필드(OP), 제1 타입 필드(T1) 및 제2 타입 필드(T2)의 값들이 제공된 동작코드("+")와 변수들의 타입들("INT", "INT")과 일치하므로, 타입 룰 테이블(120)은 대응하는 결과 타입 필드(R/T) 및 결과 플래그 필드(R/F)의 값들을 출력할 수 있다. 즉, 타입 룰 테이블(120)은 연산 결과의 타입(Vr.t)으로서 "INT"를 출력하고, 연산 결과의 플래그 비트(Vr.f)로서 '0'을 출력할 수 있다. 출력된 연산 결과의 타입(Vr.t) 및 연산 결과의 플래그 비트(Vr.f)는 통합 레지스터 파일(110)의 제3 레지스터(R3)에 저장될 수 있다. 연산 결과의 타입(Vr.t)은 타입 필드(T)에 저장되고, 연산 결과의 플래그 비트(Vr.f)는 플래그 필드(F)에 저장될 수 있다.
도 9는 도 3의 컴퓨팅 장치가 두 부동 소수점형 변수들의 덧셈을 수행하는 동작을 나타내는 도면이다. 도 9를 참조하면, 명령어 디코더(180)는 "xadd"를 수신하고, "xadd"를 디코딩할 수 있다. 디코딩 결과에 기초하여 명령어 디코더(180)는 명령어의 동작코드를 타입 룰 테이블(120)에 제공하고, 제1 변수(V1) 및 제2 변수(V2)를 통합 레지스터 파일(110)에 제공할 수 있다.
통합 레지스터 파일(110)의 제1 레지스터(R1)는 제1 변수(V1)에 대응하고, 제2 레지스터(R2)는 제2 변수(V2)에 대응할 수 있다. 통합 레지스터 파일(110)은 제1 레지스터(R1)에 저장된 플래그 비트와 제2 레지스터(R2)에 저장된 플래그 비트가 모두 '1'인 것을 확인함으로써 제1 변수(V1) 및 제2 변수(V2)를 부동 소수점형으로 판별할 수 있다. 통합 레지스터 파일(110)은 제1 변수의 값(V1.v)과 제2 변수의 값(V2.v)을 제2 연산 모듈(132)로 제공할 수 있다. 제1 변수의 값(V1.v)은 '1.1'이고, 제2 변수의 값(V2.v)은 '2.2'일 수 있다.
제2 연산 모듈(132)은 제1 변수의 값(V1.v)과 제2 변수의 값(V2.v)의 덧셈을 수행할 수 있다. 도 9에는 도시되지 않았지만, 제2 연산 모듈(132)은 연산 종류의 관한 정보(즉, 덧셈)를 명령어 디코더(180)로부터 전달받을 수 있다. 예를 들어, 제2 연산 모듈(132)은 명령어 디코더(180)로부터 "xadd"의 동작코드를 수신하고, 동작코드에 따라 덧셈을 수행할 수 있다. 제2 연산 모듈(132)은 연산 결과(Vr.v)로서 '3.3'을 생성할 수 있다. 생성된 연산 결과(Vr.v)는 통합 레지스터 파일(110)의 제3 레지스터(R3)에 저장될 수 있다. 즉, 연산 결과(Vr.v)는 제3 레지스터(R3)의 값 필드(A)에 저장될 수 있다.
통합 레지스터 파일(110)은 제1 레지스터(R1)로부터 추출된 제1 변수의 타입(V1.t)을 타입 룰 테이블(120)로 제공하고, 제2 레지스터(R2)로부터 추출된 제2 변수의 타입(V2.t)을 타입 룰 테이블(120)로 제공할 수 있다. 제1 변수의 타입(V1.t) 및 제2 변수의 타입(V2.t)은 "FLT"일 수 있다. 타입 룰 테이블(120)은 명령어 디코더(180)로부터 제공된 동작코드("+")와 통합 레지스터 파일(110)로부터 제공된 변수들의 타입들("FLT", "FLT")에 기초하여 대응하는 엔트리가 존재하는지 여부를 확인할 수 있다. 제2 엔트리(E2)에 저장된 동작코드 필드(OP), 제1 타입 필드(T1) 및 제2 타입 필드(T2)의 값들이 제공된 동작코드("+")와 변수들의 타입들("FLT", "FLT")과 일치하므로, 타입 룰 테이블(120)은 대응하는 결과 타입 필드(R/T) 및 결과 플래그 필드(R/F)의 값들을 출력할 수 있다. 즉, 타입 룰 테이블(120)은 연산 결과의 타입(Vr.t)으로서 "FLT"를 출력하고, 연산 결과의 플래그 비트(Vr.f)로서 '1'을 출력할 수 있다. 출력된 연산 결과의 타입(Vr.t) 및 연산 결과의 플래그 비트(Vr.f)는 통합 레지스터 파일(110)의 제3 레지스터(R3)에 저장될 수 있다. 연산 결과의 타입(Vr.t)은 타입 필드(T)에 저장되고, 연산 결과의 플래그 비트(Vr.f)는 플래그 필드(F)에 저장될 수 있다.
도 10은 도 3의 컴퓨팅 장치가 타입 검사 루틴의 시작 주소로 이동하는 동작을 나타내는 도면이다. 도 10을 참조하면, 명령어 디코더(180)는 "xadd"를 수신하고, "xadd"를 디코딩할 수 있다. 디코딩 결과에 기초하여 명령어 디코더(180)는 명령어의 동작코드를 타입 룰 테이블(120)에 제공하고, 제1 변수(V1) 및 제2 변수(V2)를 통합 레지스터 파일(110)에 제공할 수 있다.
통합 레지스터 파일(110)의 제1 레지스터(R1)는 제1 변수(V1)에 대응하고, 제2 레지스터(R2)는 제2 변수(V2)에 대응할 수 있다. 통합 레지스터 파일(110)은 제1 레지스터(R1)에 저장된 플래그 비트가 '0'이고, 제2 레지스터(R2)에 저장된 플래그 비트가 '1'인 것을 확인함으로써 제1 변수(V1) 및 제2 변수(V2)의 데이터 타입이 다른 것을 판별할 수 있다. 이에 따라, 통합 레지스터 파일(110)은 제1 변수의 값(V1.v)과 제2 변수의 값(V2.v)을 제1 연산 모듈(131) 또는 제2 연산 모듈(132)로 제공하지 않을 수 있다.
통합 레지스터 파일(110)은 제1 레지스터(R1)로부터 추출된 제1 변수의 타입(V1.t)을 타입 룰 테이블(120)로 제공하고, 제2 레지스터(R2)로부터 추출된 제2 변수의 타입(V2.t)을 타입 룰 테이블(120)로 제공할 수 있다. 제1 변수의 타입(V1.t)은 "INT"이고, 제2 변수의 타입(V2.t)은 "FLT"일 수 있다. 타입 룰 테이블(120)은 명령어 디코더(180)로부터 제공된 동작코드("+")와 통합 레지스터 파일(110)로부터 제공된 변수들의 타입들("INT", "FLT")에 기초하여 대응하는 엔트리가 존재하는지 여부를 판별할 수 있다. 제1 엔트리(E1) 및 제2 엔트리(E2)와 같이, 타입 룰 테이블(120)은 변수들의 타입들("INT", "FLT")이 다른 엔트리를 포함하지 않을 수 있다. 대응하는 결과 타입 필드(R/T) 및 결과 플래그 필드(R/F)의 값들이 존재하지 않으므로, 타입 룰 테이블(120)은 연산 결과의 타입(Vr.t) 및 연산 결과의 플래그 비트(Vr.f)를 출력하지 않을 수 있다. 타입 룰 테이블(120)은 대응하는 엔트리가 존재하지 않음을 나타내는 신호(miss)를 핸들러 레지스터(170)로 제공할 수 있다. 핸들러 레지스터(170)는 신호(miss)에 응답하여 저장된 주소를 출력할 수 있다. 컴퓨팅 장치(100)는 출력된 주소가 가리키는 타입 검사 루틴을 수행할 수 있다. 컴퓨팅 장치(100)는 종래의 타입 검사 방식을 통해 제1 변수의 타입(V1.t) 및 제2 변수의 타입(V2.t)을 검사할 수 있다.
타입 검사에 따라 제1 변수의 타입(V1.t)이 정수형이고 제2 변수의 타입(V2.t)이 부동 소수점형인 것이 확인되면, 컴퓨팅 장치(100)는 제1 변수의 타입(V1.t)을 부동 소수점형으로 변환할 수 있다. 이후, 컴퓨팅 장치(100)는 제2 연산 모듈(132)을 통해 제1 변수(V1)와 제2 변수(V2)의 덧셈을 수행할 수 있다.
도 11은 도 3의 컴퓨팅 장치가 변수의 타입을 메모리에 저장하는 동작을 나타내는 도면이다. 도 11을 참조하면, 명령어 디코더(180)는 "tsd"를 수신하고, "tsd"를 디코딩할 수 있다. 디코딩 결과에 기초하여 타입 삽입기(160)는 통합 레지스터 파일(110)로부터 제3 레지스터(R3)의 값을 제공받을 수 있다. 타입 삽입기(160)는 제3 레지스터(R3)의 값으로부터 연산 결과의 값(Vr.v), 연산 결과의 타입(Vr.t)을 추출할 수 있다. 예시적으로, 도 6의 타입 추출기(150)와 같이, 타입 삽입기(160)는 시프트 레지스터(미도시) 및 마스크 레지스터(미도시)를 포함할 수 있다. 타입 삽입기(160)는 시프트 레지스터 및 마스크 레지스터를 이용하여 제3 레지스터(R3)의 값으로부터 연산 결과의 값(Vr.v) 및 연산 결과의 타입(Vr.t)을 추출할 수 있다. 타입 삽입기(160)는 연산 결과의 값(Vr.v)으로 '3.3'을 추출하고, 연산 결과의 타입(Vr.t)으로 "FLT"를 추출할 수 있다. 타입 삽입기(160)는 연산 결과의 값(Vr.v) 및 연산 결과의 타입(Vr.t)을 메모리(140)에 저장할 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 컴퓨팅 장치(100)는 통합 레지스터 파일(110) 및 타입 룰 테이블(120)을 이용하여 피연산자들의 타입 검사를 간단하게 수행할 수 있을 뿐만 아니라, 연산 결과의 타입 검사를 간단하게 수행할 수 있다. 또한, 하나의 명령어(예를 들어, "xadd")에 기초하여 연산 수행과 연산 결과의 타입 검사가 동시에 수행될 수 있으므로, 생성되는 명령어의 수가 감소될 수 있다. 명령어 수의 감소에 따라 분기 명령어의 수가 감소될 수 있으므로, 분기 예측률이 향상될 수 있다. 또한, 명령어 수의 감소에 따라 명령어를 저장하는 캐시(cache) 메모리의 성능이 향상될 수 있다.
도 12는 도 1의 컴퓨팅 장치의 하나의 예시적인 동작을 나타내는 순서도이다. 도 1 및 도 12를 참조하면, S101 단계에서, 컴퓨팅 장치(100)는 제1 변수 및 제2 변수에 대한 연산 명령을 수신할 수 있다. S102 단계에서, 컴퓨팅 장치(100)는 통합 레지스터 파일(110)에 저장된 제1 및 제2 변수들의 타입들의 조합이 연산기(130)에 의해 처리될 수 있는 조합인지 여부를 판별할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 통합 레지스터 파일(110)의 플래그 필드(F)의 값들에 기초하여 제1 및 제2 변수들의 타입들의 조합을 판별할 수 있다.
제1 및 제2 변수들의 타입들의 조합이 연산기(130)에 의해 처리될 수 있는 조합인 경우, S103 단계에서, 컴퓨팅 장치(100)는 제1 및 제2 변수들에 대한 연산을 수행할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 제1 및 제2 변수들의 타입이 모두 정수형이거나 모두 부동 소수점형인 경우, 제1 및 제2 변수들에 대한 연산을 수행할 수 있다. S104 단계에서, 컴퓨팅 장치(100)는 연산 결과를 통합 레지스터 파일(110)에 저장할 수 있다.
도 13은 도 1의 컴퓨팅 장치의 다른 예시적인 동작을 나타내는 순서도이다. 도 1 및 도 13을 참조하면, S111 단계에서, 컴퓨팅 장치(100)는 제1 변수 및 제2 변수에 대한 연산 명령을 수신할 수 있다. S112 단계에서, 컴퓨팅 장치(100)는 통합 레지스터 파일(110)로부터 제1 및 제2 변수들의 타입들을 검사할 수 있다. S113 단계에서, 컴퓨팅 장치(100)는 타입 룰 테이블(120)에 제1 및 제2 변수들에 대한 연산의 종류 및 제1 및 제2 변수들의 타입들에 대응하는 엔트리가 존재하는지 여부를 판별할 수 있다. 예를 들어, 제1 및 제2 변수들의 대한 연산의 종류는 명령어의 동작코드일 수 있다.
대응하는 엔트리가 존재하는 경우, S114 단계에서, 컴퓨팅 장치(100)는 대응하는 연산 결과의 타입을 획득할 수 있다. S115 단계에서, 컴퓨팅 장치(100)는 획득된 연산 결과의 타입을 통합 레지스터 파일(110)에 저장할 수 있다. 예시적으로, S114 단계에서, 컴퓨팅 장치(100)는 대응하는 연산 결과의 타입뿐만 아니라, 대응하는 연산 결과의 플래그 비트를 더 획득할 수 있다. 이 경우, S115 단계에서, 컴퓨팅 장치(100)는 획득된 연산 결과의 타입 및 연산 결과의 플래그 비트를 통합 레지스터 파일(110)에 저장할 수 있다.
대응하는 엔트리가 존재하지 않는 경우, S116 단계에서, 컴퓨팅 장치(100)는 핸들러 레지스터(170)에 미리 저장된 주소로 이동할 수 있다. 컴퓨팅 장치(100)는 미리 저장된 주소로 이동하여 타입 검사 루틴에 따라 동작을 수행할 수 있다. 타입 검사 루틴에 따른 타입 검사는 타입 룰 테이블(120)을 이용하지 않는 종래의 방식일 수 있다. S117 단계에서, 컴퓨팅 장치(100)는 타입 검사 루틴에 따라 제1 및 제2 변수들의 타입들을 검사할 수 있다. S118 단계에서, 컴퓨팅 장치(100)는 검사된 타입들에 기초하여 제1 및 제2 변수들의 연산을 수행할 수 있다. 예시적으로, 컴퓨팅 장치(100)는 제1 및 제2 변수들 중 하나의 타입을 다른 변수의 타입으로 변환한 후, 제1 및 제2 변수들의 연산을 수행할 수 있다.
도 14는 본 발명의 실시 예에 따른 바이트코드 인터프리터의 예시이다. 도 14를 참조하면, 도 14의 코드는 도 4의 "ADD"를 처리하기 위한 도 4의 명령어들이 적용된 예시를 나타낸다. 코드의 제5 및 제6 라인에서, "tld" 명령어에 따라 각 변수의 타입 및 값은 통합 레지스터 파일(110)의 레지스터들(tmp1, tmp2)에 저장될 수 있다. 제7 라인에서, "thdl" 명령어에 따라 타입 검사 루틴의 시작 주소가 핸들러 레지스터(170)에 저장될 수 있다.
제8 라인에서, "xadd" 명령어에 따라 레지스터들(tmp1, tmp2)에 저장된 변수들의 타입 검사가 수행될 수 있다. 또한, 동작코드 및 변수들의 타입들에 기초하여 타입 룰 테이블(120)에 대응하는 엔트리가 존재하는지 여부가 판별될 수 있다. 대응하는 엔트리가 존재하는 경우, 덧셈 수행에 따른 연산 결과와 타입 룰 테이블(120)로부터 출력된 연산 결과의 타입이 레지스터(tmp1)에 저장될 수 있다. 이후, 제9 라인에서, "tsd" 명령어에 따라 레지스터(tmp1)에 저장된 연산 결과와 연산 결과의 타입이 메모리(140)에 저장될 수 있다.
대응하는 엔트리가 존재하지 않는 경우, 컴퓨팅 장치(100)는 핸들러 레지스터(170)에 저장된 주소(즉, 제15 라인의 ADD_slow)로 이동하여 종래의 방식에 따라 타입 검사 및 연산을 수행할 수 있다. 이후, 컴퓨팅 장치(100)는 타입 및 연산 결과를 메모리(140)에 저장할 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 컴퓨팅 장치(100)는 통합 레지스터 파일(110) 및 타입 룰 테이블(120)을 포함할 수 있다. 컴퓨팅 장치(100)는 통합 레지스터 파일(110) 및 타입 룰 테이블(120)을 기반으로 처리될 수 있는 새로운 명령어에 기초하여 동작할 수 있다. 도 3 내지 도 14를 통해 몇몇 명령어들이 설명되었지만, 본 발명은 이에 한정되지 않으며, 본 발명의 실시 예에 따른 명령어는 통합 레지스터 파일(110) 및 타입 룰 테이블(120)을 기반으로 처리될 수 있는 다양한 명령어를 포함할 수 있다. 예를 들어, 본 발명의 실시 예에 따른 명령어는 아래의 표 1의 명령어를 포함할 수 있다.
명령어 동작
tld 메모리로부터 변수 값 및 변수 타입을 추출하여 통합 레지스터 파일에 저장
tsd 통합 레지스터 파일로부터 변수 값 및 변수 타입을 추출하여 메모리에 저장
xadd 덧셈 연산 및 덧셈 결과의 타입 검사를 수행
xsub 뺄셈 연산 및 뺄셈 결과의 타입 검사를 수행
xmul 곱셈 결과 및 곱셈 결과의 타입 검사를 수행
setoffset 오프셋 레지스터 값을 설정
setmask 마스크 레지스터 값을 설정
setshift 시프트 레지스터 값을 설정
set_trt 타입 룰 테이블의 엔트리를 설정
flush_trt 타입 룰 테이블의 엔트리를 삭제
thdl 핸들러 레지스터에 타입 검사 루틴의 시작 주소를 저장
tchk 타입 룰 테이블을 이용하여 타입 검사만 수행
표 1에 기재된 명령어 중 "tchk" 명령어는 타입 룰 테이블(120)을 이용하여 변수의 타입 검사를 수행하는 명령어일 수 있다. "tchk" 명령어에 따라, 타입 룰 테이블(120)은 동작코드 및 통합 레지스터 파일(110)로부터 제공된 변수의 타입에 대응하는 엔트리가 존재하는지 여부를 판별할 수 있다. 대응하는 엔트리가 존재하는 경우, 타입 룰 테이블(120)은 결과 데이터의 타입 정보를 출력할 수 있다. 이 경우, 컴퓨팅 장치(100)는 해당 변수의 타입 검사가 수행된 것(즉, 히트(hit))으로 판단하여 다음 명령어를 실행할 수 있다. 대응하는 엔트리가 존재하지 않는 경우, 타입 룰 테이블(120)은 대응하는 엔트리가 존재하지 않음을 나타내는 신호(miss)를 출력할 수 있다. 이에 따라, 컴퓨팅 장치(10)는 타입 검사 루틴의 시작 주소로 이동하여 타입 룰 테이블(120)을 이용하지 않고 변수의 타입 검사를 수행할 수 있다.
표 1과 같이 컴퓨팅 장치(100)에 기초하여 다양한 명령어가 처리될 수 있으며, 본 발명은 표 1에 기재된 명령어에 한정되는 것은 아니다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 컴퓨팅 장치
110: 통합 레지스터 파일
120: 타입 룰 테이블
130: 연산기
140: 메모리
150: 타입 추출기
160: 타입 삽입기
170: 핸들러 레지스터
180: 명령어 디코더
200: 소스 코드 변환기
300: 스크립트

Claims (17)

  1. 제1 변수에 대한 제1 변수 타입 및 제1 변수 값과 제2 변수에 대한 제2 변수 타입 및 제2 변수 값을 저장하는 통합 레지스터 파일;
    상기 제1 및 제2 변수들에 대한 연산 명령에 응답하여 상기 통합 레지스터 파일로부터의 상기 제1 변수 값 및 상기 제2 변수 값을 기반으로 제1 연산 결과의 값을 출력하는 연산기; 및
    연산 결과의 타입 정보를 가지는 복수의 엔트리(entry)들을 포함하고, 상기 복수의 엔트리들 중 상기 연산 명령의 종류, 상기 통합 레지스터 파일로부터의 상기 제1 및 제2 변수 타입들에 대응하는 엔트리가 존재하는 경우, 상기 연산 명령에 응답하여 상기 제1 연산 결과의 타입을 출력하는 타입 룰 테이블을 포함하고,
    상기 연산기로부터 출력되는 상기 제1 연산 결과의 값 및 상기 타입 룰 테이블로부터 출력되는 상기 제1 연산 결과의 타입은 상기 통합 레지스터 파일에 저장되는 컴퓨팅 장치.
  2. 제 1 항에 있어서,
    상기 통합 레지스터 파일은 상기 제1 변수 타입이 정수형 또는 부동 소수점형인지 여부를 나타내는 제1 타입 플래그 및 상기 제2 변수 타입이 정수형 또는 부동 소수점형인지 여부를 나타내는 제2 타입 플래그를 더 저장하는 컴퓨팅 장치.
  3. 제 2 항에 있어서,
    상기 연산기는,
    상기 제1 타입 플래그 및 상기 제2 타입 플래그가 정수형을 나타내는 경우, 상기 제1 연산을 수행하는 제1 연산 모듈; 및
    상기 제1 타입 플래그 및 상기 제2 타입 플래그가 부동 소수점형을 나타내는 경우, 상기 제1 연산을 수행하는 제2 연산 모듈을 포함하는 컴퓨팅 장치.
  4. 제 1 항에 있어서,
    상기 타입 룰 테이블은 상기 제1 연산 결과의 타입이 정수형 또는 부동 소수점형인지 여부를 나타내는 상기 제1 연산 결과의 타입 플래그를 더 출력하는 컴퓨팅 장치.
  5. 삭제
  6. 제 1 항에 있어서,
    메모리로부터 상기 제1 및 제2 변수 타입들 및 상기 제1 및 제2 변수 값들을 추출하여 상기 통합 레지스터 파일에 저장하는 타입 추출기를 더 포함하는 컴퓨팅 장치.
  7. 제 6 항에 있어서,
    상기 타입 추출기는,
    변수의 값이 포함된 제1 데이터 워드를 기준으로 상기 변수의 타입이 포함된 제2 데이터 워드의 위치를 저장하는 오프셋 레지스터;
    상기 변수의 타입이 포함된 상기 제2 데이터 워드에서 상기 변수의 타입을 나타내는 비트들의 시작 위치를 저장하는 시프트 레지스터; 및
    상기 변수의 타입을 나타내는 상기 비트들의 개수만큼 값이 1인 비트들을 저장하는 마스크 레지스터를 포함하는 컴퓨팅 장치.
  8. 제 6 항에 있어서,
    상기 통합 레지스터 파일로부터 상기 제1 연산 결과의 값 및 상기 제1 연산 결과의 타입을 추출하여 상기 메모리에 저장하는 타입 삽입기를 더 포함하는 컴퓨팅 장치.
  9. 제 1 항에 있어서,
    상기 타입 룰 테이블을 이용하지 않고 변수의 타입 검사를 수행하는 루틴의 시작 주소를 저장하는 핸들러 레지스터를 더 포함하고,
    상기 복수의 엔트리들 중 상기 대응하는 엔트리가 존재하지 않는 경우, 상기 연산 명령에 응답하여 상기 루틴의 실행에 따라 상기 제1 및 제2 변수 타입들이 검사되는 컴퓨팅 장치.
  10. 변수들의 타입들 및 상기 변수들의 값들을 저장하는 통합 레지스터 파일 및 연산 결과의 타입 정보를 가지는 복수의 엔트리(entry)들을 포함하는 타입 룰 테이블을 포함하는 컴퓨팅 장치의 동작 방법에 있어서,
    상기 컴퓨팅 장치가 제1 변수 및 제2 변수에 대한 제1 연산 명령을 수신하는 단계;
    상기 제1 연산 명령에 응답하여 상기 컴퓨팅 장치가 상기 통합 레지스터 파일로부터 상기 제1 변수에 대한 제1 변수 타입 및 상기 제2 변수에 대한 제2 변수 타입을 획득하는 단계; 및
    상기 타입 룰 테이블의 상기 복수의 엔트리들 중 상기 제1 연산 명령의 종류, 상기 획득된 제1 및 제2 변수 타입들에 대응하는 엔트리가 존재하는 경우, 상기 컴퓨팅 장치가 상기 타입 룰 테이블로부터 상기 제1 연산 명령에 대한 제1 연산 결과의 타입을 획득하는 단계를 포함하는 동작 방법.
  11. 제 10 항에 있어서,
    상기 컴퓨팅 장치가 상기 타입 룰 테이블로부터 상기 획득된 제1 연산 결과의 타입을 상기 통합 레지스터 파일에 저장하는 단계를 더 포함하는 동작 방법.
  12. 제 10 항에 있어서,
    상기 컴퓨팅 장치가 상기 통합 레지스터 파일로부터 상기 획득된 제1 및 제2 변수 타입들을 기반으로 상기 제1 및 제2 변수들에 대한 상기 제1 연산 결과의 값을 산출하는 단계를 더 포함하는 동작 방법.
  13. 제 12 항에 있어서,
    상기 제1 연산 결과의 값은 상기 제1 및 제2 변수 타입들이 모두 정수형이거나 모두 부동 소수점형인 경우 산출되는 동작 방법.
  14. 제 12 항에 있어서,
    상기 컴퓨팅 장치가 상기 산출된 제1 연산 결과의 값을 상기 통합 레지스터 파일에 저장하는 단계를 더 포함하는 동작 방법.
  15. 제 10 항에 있어서,
    상기 복수의 엔트리들 중 상기 대응하는 엔트리가 존재하지 않는 경우, 상기 컴퓨팅 장치가 변수의 타입 검사를 수행하는 타입 검사 루틴의 시작 주소로 이동하는 단계;
    상기 컴퓨팅 장치가 상기 타입 검사 루틴에 응답하여 상기 타입 룰 테이블을 이용하지 않고 상기 제1 및 제2 변수 타입들을 검사하는 단계; 및
    상기 컴퓨팅 장치가 상기 검사된 타입들에 기초하여 상기 제1 및 제2 변수들 중 하나의 타입을 다른 하나의 타입과 일치하도록 변환하는 단계를 더 포함하는 동작 방법.
  16. 제1 명령어를 수신하고, 상기 제1 명령어의 제1 동작코드 및 상기 제1 명령어와 관련된 제1 변수를 판별하는 명령어 디코더;
    상기 제1 명령어에 응답하여 상기 판별된 제1 변수에 대응하는 제1 변수 타입을 출력하는 통합 레지스터 파일; 및
    명령어에 응답하여 생성되는 결과 데이터의 타입 정보를 가지는 복수의 엔트리(entry)들을 포함하고, 상기 복수의 엔트리들 중 상기 판별된 제1 동작코드 및 상기 출력된 제1 변수 타입에 대응하는 엔트리가 존재하는 경우, 상기 제1 명령어에 응답하여 상기 판별된 제1 동작코드 및 상기 출력된 제1 변수 타입에 대응하는 제1 결과 데이터의 타입을 출력하는 타입 룰 테이블을 포함하고,
    상기 타입 룰 테이블로부터 출력되는 상기 제1 결과 데이터의 타입은 상기 제1 결과 데이터에 대응하여 상기 통합 레지스터 파일에 저장되는 컴퓨팅 장치.
  17. 제 16 항에 있어서,
    상기 타입 룰 테이블을 이용하지 않고 변수의 타입 검사를 수행하는 루틴의 시작 주소를 저장하는 핸들러 레지스터를 더 포함하고,
    상기 복수의 엔트리들 중 상기 대응하는 엔트리가 존재하지 않는 경우, 상기 타입 룰 테이블은 상기 대응하는 엔트리가 존재하지 않음을 나타내는 미스(miss) 신호를 상기 핸들러 레지스터로 출력하고,
    상기 미스 신호에 응답하여 상기 루틴이 실행됨으로써 상기 제1 변수의 타입 검사가 수행되는 컴퓨팅 장치.
KR1020180040311A 2018-04-06 2018-04-06 컴퓨팅 장치 및 그것의 동작 방법 KR102021447B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180040311A KR102021447B1 (ko) 2018-04-06 2018-04-06 컴퓨팅 장치 및 그것의 동작 방법
US16/270,054 US10977012B2 (en) 2018-04-06 2019-02-07 Computing device for accelerating a data type check and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180040311A KR102021447B1 (ko) 2018-04-06 2018-04-06 컴퓨팅 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR102021447B1 true KR102021447B1 (ko) 2019-09-16

Family

ID=68067095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180040311A KR102021447B1 (ko) 2018-04-06 2018-04-06 컴퓨팅 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US10977012B2 (ko)
KR (1) KR102021447B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7315872B2 (ja) * 2020-01-20 2023-07-27 富士通株式会社 プロセッサ、シミュレータプログラム、アセンブラプログラム、及び情報処理プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040074766A (ko) * 2003-02-18 2004-08-26 삼성전자주식회사 객체 지향 프로그램이 기록된 저장 매체
KR20070021879A (ko) * 2005-08-19 2007-02-23 한국전자통신연구원 테스트 드라이버 생성 장치 및 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293629A (en) * 1990-11-30 1994-03-08 Abraxas Software, Inc. Method of analyzing computer source code
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5590352A (en) 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US6108772A (en) * 1996-06-28 2000-08-22 Intel Corporation Method and apparatus for supporting multiple floating point processing models
US7073168B2 (en) * 2001-12-06 2006-07-04 Microsoft Corporation Customizing binary content files
WO2005032693A2 (en) 2003-08-29 2005-04-14 Velocys Inc. Process for separating nitrogen from methane using microchannel process technology
US7380105B2 (en) * 2006-06-16 2008-05-27 The Regents Of The University Of California Prediction based instruction steering to wide or narrow integer cluster and narrow address generation
US9336125B2 (en) 2011-08-24 2016-05-10 University Of Washington Through Its Center For Commercialization Systems and methods for hardware-assisted type checking
US9189215B1 (en) * 2014-08-26 2015-11-17 National Instruments Corporation Convergence analysis of program variables
US9430358B1 (en) * 2015-06-23 2016-08-30 Ca, Inc. Debugging using program state definitions
US10106171B2 (en) * 2015-07-28 2018-10-23 Crown Equipment Corporation Vehicle control module with signal switchboard and output tables

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040074766A (ko) * 2003-02-18 2004-08-26 삼성전자주식회사 객체 지향 프로그램이 기록된 저장 매체
KR20070021879A (ko) * 2005-08-19 2007-02-23 한국전자통신연구원 테스트 드라이버 생성 장치 및 방법

Also Published As

Publication number Publication date
US10977012B2 (en) 2021-04-13
US20190310833A1 (en) 2019-10-10

Similar Documents

Publication Publication Date Title
KR101761498B1 (ko) 추론을 지원하는 게스트 반환 주소 스택 에뮬레이션을 위한 방법 및 장치
CN107077337B (zh) 用于执行根据两个指令集架构编译的应用编码的***和方法
KR101642556B1 (ko) 이진 번역을 수행하기 위한 방법 및 시스템
KR101703743B1 (ko) 가속된 레인 간 벡터 감축 명령어들
US9336004B2 (en) Checkpointing registers for transactional memory
RU2638766C2 (ru) Процессоры, способы, системы и инструкции для транскодирования точек кода переменной длины знаков unicode
US9471292B2 (en) Binary translation reuse in a system with address space layout randomization
US9483275B2 (en) Method and system using exceptions for code specialization in a computer architecture that supports transactions
US9336125B2 (en) Systems and methods for hardware-assisted type checking
KR20150112778A (ko) 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈
CN108885551B (zh) 存储器复制指令、处理器、方法和***
US11640300B2 (en) Byte comparison method for string processing and instruction processing apparatus
US10564965B2 (en) Compare string processing via inline decode-based micro-operations expansion
US20150169550A1 (en) Translation Suggestion
US10620956B2 (en) Search string processing via inline decode-based micro-operations expansion
US20150227371A1 (en) Processors with Support for Compact Branch Instructions & Methods
KR102021447B1 (ko) 컴퓨팅 장치 및 그것의 동작 방법
US10732977B2 (en) Bytecode processing device and operation method thereof
JP6374975B2 (ja) 連続ソースエレメントを複数のマスクされていない結果エレメントにストアすると共に、複数のマスクされた結果エレメントに伝搬するプロセッサ、方法、システム、及び命令
US7810073B2 (en) Method of translating n to n instructions employing an enhanced extended translation facility
US9448975B2 (en) Character data processing method, information processing method, and information processing apparatus
US20170115973A1 (en) Operating method of semiconductor device and semiconductor system
KR101559651B1 (ko) 동적 분석 방법 및 장치
US10540183B2 (en) Accelerated execution of execute instruction target
CN110192180B (zh) 处理到间接指定位置的条件分支的方法和计算机***

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant