KR20160070631A - 프로세서 및 프로세서의 명령어 처리 방법 - Google Patents

프로세서 및 프로세서의 명령어 처리 방법 Download PDF

Info

Publication number
KR20160070631A
KR20160070631A KR1020140177830A KR20140177830A KR20160070631A KR 20160070631 A KR20160070631 A KR 20160070631A KR 1020140177830 A KR1020140177830 A KR 1020140177830A KR 20140177830 A KR20140177830 A KR 20140177830A KR 20160070631 A KR20160070631 A KR 20160070631A
Authority
KR
South Korea
Prior art keywords
variable
value
memory
address
variables
Prior art date
Application number
KR1020140177830A
Other languages
English (en)
Other versions
KR102270789B1 (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 삼성전자주식회사
Priority to KR1020140177830A priority Critical patent/KR102270789B1/ko
Priority to US14/964,069 priority patent/US9971579B2/en
Publication of KR20160070631A publication Critical patent/KR20160070631A/ko
Application granted granted Critical
Publication of KR102270789B1 publication Critical patent/KR102270789B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

명령어 처리 방법은, 프로그램을 구성하는 변수의 사용 빈도에 따라 상기 변수의 우선 순위를 결정하는 단계; 상기 우선 순위에 따라, 메모리에 상기 변수의 값이 저장되는 주소를 결정하는 단계; 및 상기 주소의 비트열의 길이에 따라 상기 변수에 대한 명령어를 결정하는 단계를 포함할 수 있다.

Description

프로세서 및 프로세서의 명령어 처리 방법{PROCESSOR AND METHOD FOR PROCESSING COMMAND OF PROCESSOR}
프로세서 및 프로세서의 명령어 처리 방법에 연관된다.
프로그램에서 변수를 사용하게 되면, 변수에 대한 영역이 메모리에 할당된다. 변수에 대한 값을 쓰거나 읽기 위해서는 변수의 주소를 레지스터에 저장하고, 레지스터로부터 참조된 주소에 값을 쓰거나 읽는 명령어가 필요하다.
자주 사용되는 변수에 대하여 명령어의 개수가 많을수록 프로그램의 처리 속도는 지연된다. 따라서, 자주 사용되는 변수에 대한 명령어를 처리하는 장치 및 방법이 요구된다.
자주 사용되는 변수에 대하여 사용되는 명령어의 개수를 줄임으로써, 프로그램의 성능을 향상시킬 수 있다.
일측에 따르면, 프로그램을 구성하는 변수의 사용 빈도에 따라 상기 변수의 우선 순위를 결정하는 단계; 상기 우선 순위에 따라, 메모리에 상기 변수의 값이 저장되는 주소를 결정하는 단계; 및 상기 주소의 비트열의 길이에 따라 상기 변수에 대한 명령어를 결정하는 단계를 포함하는, 명령어 처리 방법이 제공된다.
일실시예에 따르면, 상기 변수의 사용 빈도에 따라 상기 변수의 우선 순위를 결정하는 단계는, 상기 프로그램을 구성하는 제1 변수의 사용 빈도가 제2 변수의 사용 빈도보다 높은 경우, 상기 제1 변수를 상기 제2 변수보다 우선 순위로 결정하는 단계를 포함할 수 있다.
다른 일실시예에 따르면, 상기 제1 변수의 값이 저장되는 제1 주소의 비트열 길이는 상기 제2 변수의 값이 저장되는 제2 주소의 비트열 길이보다 짧은 비트열을 가지는 것을 특징으로 할 수 있다.
일실시예에 따르면, 상기 변수의 우선 순위를 결정하는 단계는, 의존 분석(dependence analysis) 및 루프 뎁스 분석(loop depth analysis) 중 적어도 하나를 이용하여 상기 복수의 변수들의 사용 빈도를 획득하는 단계를 포함할 수 있다.
다른 일실시예에 따르면, 상기 프로그램을 구성하는 복수의 변수들의 값들이 할당되는 상기 메모리의 레이아웃을 계산하는 단계; 및 상기 계산된 레이아웃에서, 상기 변수에 대한 명령어를 이용하여 상기 변수의 값이 상기 메모리에 유효하게 저장되는지를 확인하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 변수의 값이 상기 메모리에 유효하게 저장되는 경우, 상기 명령어를 이용하여 상기 변수로 액세스하는 단계를 더 포함할 수 있다.
다른 일실시예에 따르면, 상기 변수의 값이 상기 메모리에 유효하게 저장되지 않는 경우, 에러 메시지를 제공하는 단계를 더 포함할 수 있다.
또 다른 일실시예에 따르면, 상기 프로그램을 구성하는 복수의 변수들 중에서 변수를 선택하는 단계를 더 포함할 수 있다.
여기서, 상기 복수의 변수들 중에서 변수를 선택하는 단계는, 프로파일 데이터를 이용하여 복수의 변수들 중에서 상기 변수를 획득하거나, 미리 설정된 정보로부터 상기 복수의 변수들 중에서 상기 변수를 획득하는 것일 수 있다.
한편, 상기 변수의 값이 저장되는 주소는 기준 위치에 기초하여 결정되고, 상기 기준 위치는 가변적인 것을 특징으로 할 수 있다.
다른 일측에 따르면, 메모리; 및 프로그램을 구성하는 변수의 사용 빈도에 따라 상기 변수의 우선 순위를 결정하고, 상기 우선 순위에 따라, 상기 메모리에 상기 변수의 값이 저장되는 주소를 결정하고, 상기 주소의 비트열의 길이에 따라 상기 변수에 대한 명령어를 생성하는 제어부를 포함하는, 프로세서가 제공된다.
일실시예에 따르면, 상기 제어부는, 상기 프로그램을 구성하는 제1 변수의 사용 빈도가 제2 변수의 사용 빈도보다 높은 경우, 상기 제1 변수를 상기 제2 변수보다 우선 순위로 결정할 수 있다.
여기서, 상기 제1 변수의 값이 저장되는 제1 주소의 비트열 길이는 상기 제2 변수의 값이 저장되는 제2 주소의 비트열 길이보다 짧은 비트열을 가지는 것을 특징으로 할 수 있다.
다른 일실시예에 따르면, 상기 제어부는, 의존 분석(dependence analysis) 및 루프 뎁스 분석(loop depth analysis) 중 적어도 하나를 이용하여 상기 복수의 변수들의 사용 빈도를 획득할 수 있다.
또 다른 일실시예에 따르면, 상기 제어부는, 상기 프로그램을 구성하는 복수의 변수들의 값들이 할당되는 상기 메모리의 레이아웃을 계산하고, 상기 계산된 레이아웃에서, 상기 변수에 대한 명령어를 이용하여 상기 변수의 값이 상기 메모리에 유효하게 저장되는지를 확인할 수 있다.
일실시예에 따르면, 상기 변수의 값이 상기 메모리에 유효하게 저장되는 경우, 상기 제어부는, 상기 명령어를 이용하여 상기 변수로 액세스할 수 있다.
한편, 상기 변수의 값이 상기 메모리에 유효하게 저장되지 않는 경우, 상기 제어부는, 에러 메시지를 제공할 수 있다.
일실시예에 따르면, 상기 제어부는, 상기 프로그램을 구성하는 복수의 변수들 중에서 변수를 선택할 수 있다.
여기서, 상기 제어부는, 프로파일 데이터를 이용하여 복수의 변수들 중에서 상기 변수를 선택하거나, 미리 설정된 정보로부터 상기 복수의 변수들 중에서 상기 변수를 선택할 수 있다.
또한, 상기 변수의 값이 저장되는 주소는 기준 위치에 기초하여 결정되고, 상기 기준 위치는 가변적인 것을 특징으로 할 수 있다.
본 발명은, 다음의 자세한 설명과 그에 수반되는 도면들의 결합으로 쉽게 이해될 수 있으며, 참조 번호(reference numerals)들은 구조적 구성요소(structural elements)를 의미한다.
도 1은 일실시예에 따라, 프로세서와 관련된 중앙 처리 장치에 대한 블록도이다.
도 2는 일실시예에 따른 프로세서의 블록도이다.
도 3은 일실시예에 따른 명령어 처리 방법을 나타낸 순서도이다.
도 4는 일실시예에 따라, 프로그램에 대한 코드를 설명하기 위한 도면이다.
도 5는 일실시예에 따라, 변수 값이 저장되는 주소의 비트열의 길이에 따른 명령어를 설명하기 위한 도면이다.
도 6은 다른 일실시예에 따라, 프로그램에 대한 코드를 설명하기 위한 도면이다.
도 7은 다른 일실시예에 따라, 변수 값이 저장되는 주소의 비트열의 길이에 따른 명령어를 설명하기 위한 도면이다.
도 8은 다른 일실시예에 따른 명령어 처리 방법을 나타낸 순서도이다.
도 9는 일실시예에 따라, 복수의 변수들에 대한 레이아웃을 설명하기 위한 도면이다.
도 10은 일실시예에 따른 변수의 우선 순위를 결정하는 방법을 나타낸 순서도이다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
도 1은 일실시예에 따라, 프로세서와 관련된 중앙 처리 장치에 대한 블록도이다.
일실시예에 따르면, 중앙 처리 장치(100)는 제어 장치(110), 연산 장치(120), 레지스터(130) 및 인터페이스 장치(140)를 포함할 수 있다. 그러나, 도시된 구성 요소 모두가 필수 구성 요소인 것은 아니다. 도시된 구성요소보다 많은 구성 요소에 의해 중앙 처리 장치(100)가 구현될 수 있고, 그보다 적은 구성 요소에 의해서도 중앙 처리 장치(100)가 구현될 수 있다. 이하 상기 구성 요소들에 대해 살펴본다.
제어 장치(110)는 중앙 처리 장치(100)에 포함된 장치들의 동작을 지시하고 제어한다. 제어 장치(110)는 주기억장치에서 읽어 들인 명령어를 해독하고, 해독된 명령어에 대응하는 장치로 명령어를 전송한다. 제어 장치(110)는 명령 해독기(Decoder), 부호기(Encoder), 제어 주소 레지스터(CAR: Control Address Register), 제어 버퍼 레지스터(CBR: Control Buffer Register), 제어 기억 장치 및 순서 제어 모듈을 포함할 수 있고, 이에 한정되지 않는다.
명령 해독기는 명령 레지스터(132)에 있는 명령을 해독하고, 부호기는 해독된 명령에 따라 각 장치로 보낼 제어 신호를 생성한다. 제어 주소 레지스터는 실행할 마이크로 명령어의 주소를 저장하는 레지스터이고, 제어 버퍼 레지스터는 제어 기억 장치로부터 읽혀진 마이크로 명령어 비트들을 일시적으로 저장하는 레지스터이다. 제어 기억 장치는 마이크로 명령어들로 이루어진 마이크로 프로그램을 저장하는 내부 기억 장치이다. 순서 제어 모듈은 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합이다.
연산 장치(120)는 제어 장치(110)의 명령을 받아 실제 연산을 수행하는 장치이다. 구체적으로, 산술, 논리, 관계, 이동 등의 연산을 수행한다. 연산 장치(120)는 가산기, 누산기(135), 보수기, 데이터 레지스터, 어버플로 검출기, 시프트 레지스터 등으로 구성될 수 있다.
레지스터(130)는 중앙 처리 장치(100)에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 기억 장소이다. 레지스터(130)는 플립플롭이나 래치들을 병렬로 연결해 구성될 수 있다. 레지스터 간의 데이터 전송은 직렬 전송, 병렬 전송 및 버스 전송 등이 있다. 직렬 전송은 직렬 시프트 마이크로 오퍼레이션이라고도 불리며, 병렬 전송보다 속도가 느리다. 병렬 전송은 하나의 클록 펄스 동안 레지스터 내의 모든 비트가 동시에 전송되는 방식이다. 버스 전송은 모든 레지스터들이 이용하는 경로로 결선의 수를 줄일 수 있다.
레지스터(130)는 프로그램 카운터(131), 명령 레지스터(132), 메모리 주소 레지스터(133), 메모리 버퍼 레지스터(134), 누산기(135)를 포함할 수 있다. 프로그램 카운터(131)는 다음에 실행할 명령어의 주소를 기억하는 레지스터이고, 명령 레지스터(132)는 현재 실행 중인 명령의 내용을 기억하는 레지스터이다. 메모리 주소 레지스터(133)는 읽기 및/또는 쓰기 동작을 수행할 때 필요한 주기억 장소의 주소를 저장하는 주소 저장 레지스터이다. 메모리 버퍼 레지스터(134)는 기억 장치를 출입하는 데이터가 일시적으로 기억되는 레지스터이다.
또한, 레지스터(130)는 상태 레지스터, 인덱스 레지스터, 데이터 레지스터, 시프트 레지스터 및 메이저 스테이터스 레지스터를 더 포함할 수 있다(미도시). 상태 레지스터는 프로그램 상태 워드의 정보를 저장하는 레지스터이고, 프로그램 상태 워드는 시스템 내부의 순간 상태가 기록된 정보이다. 인덱스 레지스터는 주소 변경, 프로그램에서 반복 연산 횟수를 세는 레지스터이다. 시프트 레지스터는 저장된 값을 왼쪽이나 오른쪽으로 한비트씩 자리를 이동시키는 레지스터이고, 직렬 전송에 사용된다. 메이저 스테이터스 레지스터는 중앙 처리 장치(100)의 메이져 상태를 저장하고 있는 레지스터이다.
도 1은 중앙 처리 장치(100)의 특정 구성요소들이 도시되어 있는데, 이는 본 발명을 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 구성요소들 없이도 본 발명이 실시될 수 있음은 관련 기술 분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다. 또한, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 관련 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 2는 일실시예에 따른 프로세서의 블록도이다.
일실시예에 따르면, 프로세서(200)는 메모리(210) 및 제어부(220)를 포함할 수 있다. 그러나, 도시된 구성 요소 모두가 필수 구성 요소인 것은 아니다. 도시된 구성요소보다 많은 구성 요소에 의해 프로세서(200)가 구현될 수 있고, 그보다 적은 구성 요소에 의해서도 프로세서(200)가 구현될 수 있다. 이하 상기 구성 요소들에 대해 살펴본다.
메모리(210)는 프로그램을 구성하는 변수의 값을 저장할 수 있다. 프로그램에서 변수를 선언하여 사용하게 되면, 변수는 메모리(210)에 변수에 대한 영역이 생기게 된다. 변수에 대한 값을 쓰거나 읽기 위해서는 변수의 주소를 레지스터에 저장하고, 레지스터로부터 참조된 주소에 값을 쓰거나 읽는 명령어가 필요하다.
제어부(220)는 프로그램을 구성하는 변수의 빈도에 따라 변수의 우선 순위를 결정한다. 제어부(220)는 우선 순위에 따라 메모리(210)에 변수의 값이 저장되는 주소를 결정한다. 제어부(220)는 주소의 비트열의 길이에 따라 변수에 대한 명령어를 결정한다. 또한, 제어부(220)는 주소의 비트열의 길이에 따라 변수에 대한 명령어 개수도 결정할 수 있다. 예를 들면, 32비트열의 경우, 변수 a의 값을 읽기 및/또는 쓰기를 하는 데에 필요한 명령어의 개수는 3개이다. 구체적으로 예를 들면, 명령어는 setlo, sethi 및 st이다. 반면에 16비트열의 경우, 변수 a의 값을 읽기 및/또는 쓰기를 하는 데에 필요한 명령어의 개수는 2개이다. 명령어는 setlo 및 st이다. 또한, 8비트열의 경우, 변수 a의 값을 읽기 및/또는 쓰기를 하는 데에 필요한 명령어의 개수는 1개이다. 명령어는 sta이다. 비트열에 따라 필요한 명령어의 개수 및 명령어 종류는 예시이며, 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 상기 예시를 추가/변경하여 다르게 실시할 수도 있다.
제어부(220)는 프로그램을 구성하는 복수의 변수들의 사용 빈도를 획득하고, 사용 빈도에 따라 복수의 변수들의 우선 순위를 결정할 수 있다. 여기서, 복수의 변수들은 제1 변수 및 제2 변수를 포함할 수 있다. 또한, 제1 주소는 제1 변수의 값을 저장하고, 제2 주소는 제2 변수의 값을 저장한다. 제2 변수의 우선 순위가 제1 변수의 우선 순위가 낮다면, 제1 주소의 비트열 길이는 제2 주소의 비트열 길이보다 짧을 수 있다.
제어부(220)는 프로그램을 구성하는 복수의 변수들의 값들이 할당되는 메모리(210)의 레이아웃을 계산한다. 제어부(220)는 계산된 레이아웃에서 변수에 대한 명령어를 이용하여 변수의 값이 메모리(210)에 유효하게 저장되는지를 결정할 수 있다. 변수의 값이 메모리(210)에 유효하게 저장되는 경우, 제어부(220)는 명령어를 이용하여 변수로 액세스할 수 있다. 한편, 변수의 값이 메모리(210)에 유효하게 저장되지 않는 경우, 제어부(220)는 에러 메시지를 제공할 수 있다.
제어부(220)는 프로그램을 구성하는 복수의 변수들 중에서 변수를 선택할 수 있다. 구체적으로, 제어부(220)는 프로파일 데이터를 이용하여 복수의 변수들 중에서 변수를 선택하거나, 미리 설정된 정보로부터 복수의 변수들 중에서 변수를 선택할 수도 있다. 프로파일 데이터는 변수의 이름 및 변수의 사용 빈도를 포함한 데이터일 수 있다. 제어부는 복수의 변수들 중에서 사용 빈도가 일정 빈도 이상인 변수를 선택할 수 있다. 프로파일 데이터는 프로세서(200)가 프로그램을 실행하여 획득된 것일 수도 있고, 사용자가 임의로 프로세서(200)로 입력한 데이터일 수도 있다.
변수의 값이 저장되는 주소는 기준 위치에 기초하여 결정되고, 기준위치는 가변적일 수 있다.
프로세서(200)는 중앙 연산 프로세서를 구비하여, 메모리(210) 및 제어부(220)의 동작을 총괄적으로 제어할 수 있다. 중앙 연산 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리(210)의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
이하에서는, 프로세서(200)가 수행하는 다양한 동작이나 응용들이 설명되는데, 상기 메모리(210) 및 제어부(220) 중 어느 구성을 특정하지 않더라도 본 발명의 기술분야에 대한 통상의 기술자가 명확하게 이해하고 예상할 수 있는 정도의 내용은 통상의 구현으로 이해될 수 있으며, 본 발명의 권리범위가 특정한 구성의 명칭이나 물리적/논리적 구조에 의해 제한되는 것은 아니다.
도 3은 일실시예에 따른 명령어 처리 방법을 나타낸 순서도이다.
도 3의 단계 S310에서, 프로세서(200)는 프로그램을 구성하는 변수의 사용 빈도에 따라 변수의 우선 순위를 결정한다.
단계 S320에서, 프로세서(200)는 우선 순위에 따라 메모리(210)에 변수의 값이 저장되는 주소를 결정한다.
단계 S330에서, 프로세서(200)는 주소의 비트열의 길이에 따라 변수에 대한 명령어를 결정한다.
도 4는 일실시예에 따라, 프로그램에 대한 코드를 설명하기 위한 도면이다.
도 4를 참고하면, 변수들(a, b, c)이 정의되어 있다. 프로세서(200)는 변수 들(a, b, c)의 사용 빈도에 따라 우선 순위를 결정할 수 있다. 프로세서(200)는 도 4에 도시된 프로그램에 대해 컴파일을 수행한다. 프로세서(200)가 컴파일을 수행하면, 어휘 분석(lexical analysis) 단계, 구문 분석(syntax analysis) 단계, 의미 분석(semantic analysis) 단계, 중간 코드 생성(IR generation) 단계 등을 거치게 된다. 프로세서(200)는 각 단계에서 변수를 읽어 들여 변수의 사용 빈도에 대한 정보를 획득할 수 있다.
일실시예에 따르면, 도 4에 도시된 프로그램에 대해 컴파일을 수행하면, 프로세서(200)는 각 변수들에 대한 사용 빈도를 획득할 수 있다. 사용 빈도는 표 1과 같다.
Figure pat00001
프로세서(200)는 사용 빈도에 따라, 사용 빈도가 높을수록 높은 우선 순위로 설정할 수 있다. 여기서, 우선 순위는 a, c, b의 순으로 결정될 수 있다.
또한, 프로세서(200)는 미리 설정된 변수들에 대해서만 사용 빈도를 획득할 수 있다. 프로세서(200)는 도 4의 410에 도시된 바와 같이 자주 쓰이는 변수로 표시된 변수에 대해서만 사용 빈도를 획득할 수도 있다. 자주 쓰이는 변수는 사용자에 의해 직접 설정될 수 있고, 프로파일 데이터를 이용하여 설정될 수도 있다.
다른 일실시예에 따르면, 도 4를 참고하면, 프로세서(200)는 의존 분석(dependence analysis) 및 루프 뎁스 분석(loop depth analysis) 중 적어도 하나를 이용하여 변수의 사용 빈도를 예측할 수 있다. 예상 사용 빈도는 표 2와 같다.
Figure pat00002
프로세서(200)는 루프(loop) 내부에서 사용되는 변수를 루프(loop) 외부에서 사용되는 변수보다 많이 사용된다고 판단할 수 있다. 프로세서(200)는 예상 사용 빈도에 기초하여 우선권 점수를 각 변수에 대하여 부여할 수 있다.
도 5는 일실시예에 따라, 변수 값이 저장되는 주소의 비트열의 길이에 따른 명령어를 설명하기 위한 도면이다.
프로세서(200)는 우선 순위에 따라 메모리(210)에 변수의 값이 저장되는 주소를 결정할 수 있다. 또한, 프로세서(200)는 프로그램을 실행할 프로세서의 ISA(Industry Standard Architecture)에서 변수들로 접근할 로드(load), 스토어(store) 명령어를 확인하여 필요한 명령어들을 생성할 수 있다. 여기서, ISA는 중앙 처리 장치와 각종 주변 장치를 연결하여 정보를 전달할 수 있게 하는 버스 설계 규격을 의미한다.
도 5에 도시된 바와 같이, 각 명령어(510, 520, 530)는 변수 a에서 값을 읽거나 쓸 때 사용되는 명령어이다.
도 510은 주소의 비트열 길이가 32비트인 경우, 사용되는 명령어를 설명하기 위한 도면이다. 즉, a의 주소를 나타내는 하위 16비트를 레지스터 r1의 하위 16비트에 저장; a의 주소를 나타내는 상위 16비트를 레지스터 r1의 상위 16비트에 저장; 레지스터 r1이 나타내는 메모리(210)의 주소에 r2의 값을 저장하는 내용을 나타낸다. 주소의 비트열 길이가 32비트인 경우, 세 개의 명령어가 필요하다.
도 520은 주소의 비트열 길이가 16비트인 경우, 사용되는 명령어를 설명하기 위한 도면이다. 즉, a의 주소를 나타내는 하위 16비트를 레지스터 r1의 하위 16비트에 저장; 레지스터 r1이 나타내는 메모리(210)의 주소에 r2의 값을 저장하는 내용을 나타낸다. 주소의 비트열 길이가 16비트인 경우, 두 개의 명령어가 필요하다.
도 530은 주소의 비트열 길이가 8비트인 경우, 사용되는 명령어를 설명하기 위한 도면이다. 즉, rx 와 a주소를 더한 메모리(210)의 주소에 r2의 값을 저장하는 내용을 나타낸다. 여기서, rx는 제로 레지스터를 나타낼 수 있다. 주소의 비트열 길이가 8비트인 경우, 한 개의 명령어가 필요하다.
도 5를 참고하면, 같은 동작을 수행하더라도 변수의 주소에 대한 비트열 길이에 따라 명령어의 개수가 달라질 수 있다. 따라서, 변수의 값이 저장되는 주소가 짧은 비트열로 표현될 수 있다면, 주소로 보다 빨리 접근할 수 있기 때문에 프로그램의 성능이 향상되는 결과를 얻을 수 있다.
프로세서(200)는 프로그램을 구성하는 복수의 변수들에 대해서 사용 빈도에 따라 우선 순위를 결정하고, 우선 순위에 따라 복수의 변수들의 값이 저장되는 주소들을 결정할 수 있다. 사용 빈도가 제1 순위 변수의 경우, 제1 순위 변수의 값이 저장되는 주소를 8비트 메모리(210) 공간 안에서 설정되게 함으로써, 제1 순위 변수로 보다 신속하게 접근하여 프로그램의 처리 속도를 높일 수 있다.
도 6은 다른 일실시예에 따라, 프로그램에 대한 코드를 설명하기 위한 도면이다. 도 6은 global 변수를 포함하는 프로그램에 대한 코드 일부분을 도시한다.
도 7은 다른 일실시예에 따라, 변수 값이 저장되는 주소의 비트열의 길이에 따른 명령어를 설명하기 위한 도면이다.
도 710은, 주소의 비트열 길이가 32비트인 경우, global 변수의 읽기 및/또는 쓰기를 하는데 사용되는 명령어를 설명하기 위한 도면이다. 프로세서(200)는 file1.c의 global이라는 변수에 값을 쓰기 위해서 setlo 및 sethi의 두 명령어를 이용하여 global의 주소를 레지스터 r2에 저장한다. 프로세서(200)는 st 명령어를 이용하여 레지스터 r2의 값을 읽어 r2가 가리키는 메모리(210)에 레지스터 r1의 값을 저장한다. 즉, 주소의 비트열 길이가 32비트인 경우, 세 개의 명령어가 필요하다.
도 720을 참고하면, 주소의 비트열 길이가 16비트인 경우, global 변수의 읽기 및/또는 쓰기를 하는데 두 개의 명령어가 필요하다.
도 730을 참고하면, 주소의 비트열 길이가 8비트인 경우, global 변수의 읽기 및/또는 쓰기를 하는데 한 개의 명령어가 필요하다.
제1 변수의 값이 저장되는 주소가 16비트 또는 8비트로 표현될 수 있다면, 제1 변수의 읽기 및/또는 쓰기를 하는데 사용되는 명령어를 두 개 또는 한 개의 명령어로 사용할 수 있다. 따라서, 메모리(210)의 공간이 제한적인 경우, 사용 빈도에 따라 우선 순위를 결정하고, 우선 순위가 높은 변수에 대해 낮은 비트로 주소를 설정하면, 필요한 명령어의 개수를 감소시켜 프로그램의 처리 속도를 높일 수 있다. 도 7에서 설명한 명령어는 변수 값이 저장되는 주소의 비트열의 길이에 따른 명령어의 일예시이고, 본 실시예가 속하는 기술분야에서 통상의 지식을 가진 자는 다른 명령어로 추가/변경하여 실시할 수 있다.
도 8은 다른 일실시예에 따른 명령어 처리 방법을 나타낸 순서도이다.
도 8의 단계 S810에서, 프로세서(200)는 프로그램을 구성하는 복수의 변수들의 값들이 할당되는 메모리(210)의 레이아웃을 계산한다.
단계 S820에서, 프로세서(200)는 계산된 레이아웃에서, 명령어를 이용하여 변수의 값이 메모리(210)에 유효하게 저장되는지를 확인한다.
단계 S830에서, 변수의 값이 메모리(210)에 유효하게 저장되는 경우, 프로세서(200)는 명령어를 이용하여 변수로 액세스할 수 있다.
단계 S840에서, 변수의 값이 메모리(210)에 유효하게 저장되지 않는 경우, 프로세서(200)는 에러 메시지를 제공한다.
도 9는 일실시예에 따라, 복수의 변수들에 대한 레이아웃을 설명하기 위한 도면이다.
프로세서(200)는 프로그램을 이루는 파일들에 사용되는 복수의 변수들의 정보 및 현재 프로그램을 실행하기 이전의 단계까지의 정보를 이용하여 복수의 변수들이 메모리(210)에서 차지하는 공간을 계산한다. 복수의 변수들이 메모리(210)에서 차지하는 공간을 계산하는 과정을 레이아웃이라 한다. 여기서, 복수의 변수들의 정보는 복수의 변수들에 대한 이름, 크기 및 복수의 변수들 각각에 대한 변수 값이 저장되는 주소 중 적어도 하나를 포함할 수 있다.
프로세서(200)는 계산된 레이아웃에서, 단계 330에서 결정된 명령어를 이용하여 명령어에 대응하는 변수의 값이 메모리(210)에 유효하게 저장되는지를 확인할 수 있다.
도 9를 참고하면, 프로그램을 이루는 파일들은 file1.c(910), file2.c(920) 및 file3.c(930)이다. 각 파일들에는 변수들이 포함되어 있다. 프로세서(200)는 컴파일러의 분석 기법을 통해 예상 사용 빈도를 획득할 수 있다. 여기서, 컴파일러의 분석 기법은, 의존 분석(dependence analysis) 및 루프 뎁스 분석(loop depth analysis) 중 적어도 하나에 해당될 수 있고, 이에 한정되지 않는다.
file1.c(910)에 우선 순위가 높은 변수는 a, c이다. file1.c(910)에 포함된 변수 b, file2.c(920) 및 file3.c(930)에 포함된 변수들은 예상 사용 빈도가 동일하여 우선권 점수가 동일하다. 따라서, 프로세서(200)는 우선 순위에 따라 변수에 대한 주소를 비트열의 길이가 짧은 주소로 결정할 수 있다.
도 940을 참고하면, file1.c(910)에 포함된 변수 a,c는 4GB 메모리 중 8비트 메모리 공간 안에 할당되고, file1.c(910)에 포함된 변수 b 및 file2.c(920)에 포함된 변수들은 4GB 메모리 중 16비트 메모리 공간 안에 할당되고, file3.c(930)에 포함된 변수들은 4GB 메모리 중 32비트 메모리 공간 안에 할당된다.
프로세서(200)는 file1.c(910), file2.c(920) 및 file3.c(930)에 포함된 변수들에 대해 레이아웃을 결정하고, 우선 순위에 따라 결정된 명령어를 이용하여 명령어에 대응하는 변수의 값이 메모리(210)에 유효하게 저장되는지를 확인한다.
변수의 값이 메모리(210)에 유효하게 저장되는 경우, 프로세서(200)는 명령어를 이용하여 변수로 액세스할 수 있다. 반면에, 변수의 값이 메모리(210)에 유효하게 저장되지 않는 경우, 프로세서(200)는 에러 메시지를 제공할 수 있다. 이 경우, 프로세서(200)는 어떤 변수의 값이 메모리(210)에 유효하게 저장되지 않는다는 메시지를 제공할 수 있다. 예를 들면, 변수 c가 8비트 메모리(210) 공간 안에 할당되었는데, 다른 변수가 8비트 메모리(210) 공간 안에 할당되어 빈 공간이 없는 경우, 프로세서(200)는 우선 순위에 따른 명령어로 프로그램을 수행할 수 없다는 에러 메시지를 제공할 수 있다.
프로세서(200)는 복수의 변수들 중 메모리(210)에 유효하게 저장되지 않는 변수에 대하여 에러 메시지를 제공할 수 있다. 프로세서(200)는 메모리(210)에 유효하게 저장되지 않는 변수에 대해서만 우선 순위에 따른 명령어 수행을 해제할 수 있다.
프로세서(200)는 기준 위치에 기초하여 변수의 값이 저장되는 주소를 결정할 수 있다. 도 5의 530을 참고하면, rx가 기준 위치에 대응될 수 있다. 프로세서(200)는 제1 위치에서 제2 위치로 기준 위치를 변경할 수 있다. 따라서, 프로세서(200)는 변수의 값을 저장하기 위한 주소를 계산할 때에 변경된 기준 위치를 반영한다.
도 10은 일실시예에 따른 변수의 우선 순위를 결정하는 방법을 나타낸 순서도이다.
도 10의 단계 S1010에서, 프로세서(200)는 프로그램을 구성하는 복수의 변수들의 사용 빈도를 획득한다. 프로세서(200)는 프로그램을 컴파일하여 사용 빈도를 획득할 수 있고, 의존 분석(dependence analysis) 및 루프 뎁스 분석(loop depth analysis)과 같은 컴파일러의 분석 기법을 이용하여 예상 사용 빈도를 획득할 수 있다.
단계 S1020에서, 프로세서(200)는 사용 빈도에 따라 복수의 변수들의 우선 순위를 결정한다. 프로세서(200)는 예상 사용 빈도에 따라 각 변수에 대한 우선권 점수를 계산하고, 우선권 점수에 따라 우선 순위를 결정할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다.
처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다.
이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다.
소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 프로그램을 구성하는 변수의 사용 빈도에 따라 상기 변수의 우선 순위를 결정하는 단계;
    상기 우선 순위에 따라, 메모리에 상기 변수의 값이 저장되는 주소를 결정하는 단계; 및
    상기 주소의 비트열의 길이에 따라 상기 변수에 대한 명령어를 생성하는 단계를 포함하는, 명령어 처리 방법.
  2. 제1항에 있어서,
    상기 변수의 사용 빈도에 따라 상기 변수의 우선 순위를 결정하는 단계는,
    상기 프로그램을 구성하는 제1 변수의 사용 빈도가 제2 변수의 사용 빈도보다 높은 경우, 상기 제1 변수를 상기 제2 변수보다 우선 순위로 결정하는, 명령어 처리 방법.
  3. 제2항에 있어서,
    상기 제1 변수의 값이 저장되는 제1 주소의 비트열 길이는 상기 제2 변수의 값이 저장되는 제2 주소의 비트열 길이보다 짧은 비트열을 가지는 것을 특징으로 하는, 명령어 처리 방법.
  4. 제2항에 있어서,
    상기 변수의 우선 순위를 결정하는 단계는,
    의존 분석(dependence analysis) 및 루프 뎁스 분석(loop depth analysis) 중 적어도 하나를 이용하여 상기 복수의 변수들의 사용 빈도를 획득하는 단계를 포함하는, 명령어 처리 방법.
  5. 제1항에 있어서,
    상기 프로그램을 구성하는 복수의 변수들의 값들이 할당되는 상기 메모리의 레이아웃을 계산하는 단계; 및
    상기 계산된 레이아웃에서, 상기 변수에 대한 명령어를 이용하여 상기 변수의 값이 상기 메모리에 유효하게 저장되는지를 확인하는 단계를 더 포함하는, 명령어 처리 방법.
  6. 제5항에 있어서,
    상기 변수의 값이 상기 메모리에 유효하게 저장되는 경우, 상기 명령어를 이용하여 상기 변수로 액세스하는 단계를 더 포함하는, 명령어 처리 방법.
  7. 제5항에 있어서,
    상기 변수의 값이 상기 메모리에 유효하게 저장되지 않는 경우, 에러 메시지를 제공하는 단계를 더 포함하는, 명령어 처리 방법.
  8. 제1항에 있어서,
    상기 프로그램을 구성하는 복수의 변수들 중에서 변수를 선택하는 단계를 더 포함하는, 명령어 처리 방법.
  9. 제8항에 있어서,
    상기 복수의 변수들 중에서 변수를 선택하는 단계는,
    프로파일 데이터를 이용하여 복수의 변수들 중에서 상기 변수를 선택하거나, 미리 설정된 정보로부터 상기 복수의 변수들 중에서 상기 변수를 선택하는, 명령어 처리 방법.
  10. 제1항에 있어서,
    상기 변수의 값이 저장되는 주소는 기준 위치에 기초하여 결정되고, 상기 기준 위치는 가변적인 것을 특징으로 하는, 명령어 처리 방법.
  11. 메모리; 및
    프로그램을 구성하는 변수의 사용 빈도에 따라 상기 변수의 우선 순위를 결정하고, 상기 우선 순위에 따라, 상기 메모리에 상기 변수의 값이 저장되는 주소를 결정하고, 상기 주소의 비트열의 길이에 따라 상기 변수에 대한 명령어를 생성하는 제어부를 포함하는, 프로세서.
  12. 제11항에 있어서,
    상기 제어부는, 상기 프로그램을 구성하는 제1 변수의 사용 빈도가 제2 변수의 사용 빈도보다 높은 경우, 상기 제1 변수를 상기 제2 변수보다 우선 순위로 결정하는, 프로세서.
  13. 제12항에 있어서,
    상기 제1 변수의 값이 저장되는 제1 주소의 비트열 길이는 상기 제2 변수의 값이 저장되는 제2 주소의 비트열 길이보다 짧은 비트열을 가지는 것을 특징으로 하는, 프로세서.
  14. 제12항에 있어서,
    상기 제어부는, 의존 분석(dependence analysis) 및 루프 뎁스 분석(loop depth analysis) 중 적어도 하나를 이용하여 상기 복수의 변수들의 사용 빈도를 획득하는, 프로세서.
  15. 제11항에 있어서,
    상기 제어부는, 상기 프로그램을 구성하는 복수의 변수들의 값들이 할당되는 상기메모리의 레이아웃을 계산하고, 상기 계산된 레이아웃에서, 상기 변수에 대한 명령어를 이용하여 상기 변수의 값이 상기 메모리에 유효하게 저장되는지를 확인하는, 프로세서.
  16. 제15항에 있어서,
    상기 변수의 값이 상기 메모리에 유효하게 저장되는 경우,
    상기 제어부는, 상기 명령어를 이용하여 상기 변수로 액세스하는, 프로세서.
  17. 제15항에 있어서,
    상기 변수의 값이 상기 메모리에 유효하게 저장되지 않는 경우,
    상기 제어부는, 에러 메시지를 제공하는, 프로세서.
  18. 제11항에 있어서,
    상기 제어부는, 상기 프로그램을 구성하는 복수의 변수들 중에서 변수를 선택하는, 프로세서.
  19. 제18항에 있어서,
    상기 제어부는, 프로파일 데이터를 이용하여 복수의 변수들 중에서 상기 변수를 선택하거나, 미리 설정된 정보로부터 상기 복수의 변수들 중에서 상기 변수를 선택하는, 프로세서.
  20. 제11항에 있어서,
    상기 변수의 값이 저장되는 주소는 기준 위치에 기초하여 결정되고, 상기 기준 위치는 가변적인 것을 특징으로 하는, 프로세서.
KR1020140177830A 2014-12-10 2014-12-10 프로세서 및 프로세서의 명령어 처리 방법 KR102270789B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140177830A KR102270789B1 (ko) 2014-12-10 2014-12-10 프로세서 및 프로세서의 명령어 처리 방법
US14/964,069 US9971579B2 (en) 2014-12-10 2015-12-09 Processor and command processing method performed by same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140177830A KR102270789B1 (ko) 2014-12-10 2014-12-10 프로세서 및 프로세서의 명령어 처리 방법

Publications (2)

Publication Number Publication Date
KR20160070631A true KR20160070631A (ko) 2016-06-20
KR102270789B1 KR102270789B1 (ko) 2021-06-29

Family

ID=56111259

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140177830A KR102270789B1 (ko) 2014-12-10 2014-12-10 프로세서 및 프로세서의 명령어 처리 방법

Country Status (2)

Country Link
US (1) US9971579B2 (ko)
KR (1) KR102270789B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158756A (zh) * 2019-12-31 2020-05-15 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111045959B (zh) * 2019-11-18 2024-03-19 中国航空工业集团公司西安航空计算技术研究所 一种基于存储优化的复杂算法变量映射方法
CN113961347B (zh) * 2021-10-27 2022-05-17 缪周航 提升移动计算平台可靠性的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050172278A1 (en) * 2000-04-04 2005-08-04 Microsoft Corporation Profile-driven data layout optimization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050172278A1 (en) * 2000-04-04 2005-08-04 Microsoft Corporation Profile-driven data layout optimization

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158756A (zh) * 2019-12-31 2020-05-15 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置
US11016769B1 (en) 2019-12-31 2021-05-25 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus for processing information
CN111158756B (zh) * 2019-12-31 2021-06-29 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置

Also Published As

Publication number Publication date
US20160170807A1 (en) 2016-06-16
KR102270789B1 (ko) 2021-06-29
US9971579B2 (en) 2018-05-15

Similar Documents

Publication Publication Date Title
JP5646737B2 (ja) 条件付き比較命令
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
JP2019504403A5 (ko)
JP5549734B2 (ja) 試験方法、演算処理装置、試験プログラム、試験プログラム生成方法、試験プログラム生成装置、及び試験プログラム生成プログラム
KR20150132884A (ko) 결합된 분기 타깃 및 프레디킷 예측
KR20190104329A (ko) 내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷
KR20150037937A (ko) 상태 기계 엔진에 의해 수신된 데이터를 핸들링하기 위한 방법들 및 시스템들
KR20140103143A (ko) 상태 기계 격자에서의 카운터 동작
KR20140102274A (ko) 상태 기계 격자에서의 불리언 로직
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
KR102270789B1 (ko) 프로세서 및 프로세서의 명령어 처리 방법
JP2008176453A (ja) シミュレーション装置
US11226798B2 (en) Information processing device and information processing method
US10528365B2 (en) Function evaluation using multiple values loaded into registers by a single instruction
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
JP6874262B2 (ja) ベクトル被演算子ビットサイズの制御
US20140019737A1 (en) Branch Prediction For Indirect Jumps
KR102161055B1 (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
US9141357B2 (en) Computer-readable recording medium, compiling method, and information processing apparatus
KR20180008709A (ko) 대규모 소스 코드 저장소들에서의 자동적인 임포트들 및 의존성들
US20170115973A1 (en) Operating method of semiconductor device and semiconductor system
JP6136834B2 (ja) ストレージ制御装置、制御プログラムおよび制御方法
US9547738B1 (en) Invariant code optimization in high-level FPGA synthesis
JP6548848B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP4220537B2 (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