KR100622945B1 - 복수 로드 스토어 명령어를 통한 코드 크기 감소 방법 - Google Patents

복수 로드 스토어 명령어를 통한 코드 크기 감소 방법 Download PDF

Info

Publication number
KR100622945B1
KR100622945B1 KR1020040058555A KR20040058555A KR100622945B1 KR 100622945 B1 KR100622945 B1 KR 100622945B1 KR 1020040058555 A KR1020040058555 A KR 1020040058555A KR 20040058555 A KR20040058555 A KR 20040058555A KR 100622945 B1 KR100622945 B1 KR 100622945B1
Authority
KR
South Korea
Prior art keywords
data
register
memory
command
address
Prior art date
Application number
KR1020040058555A
Other languages
English (en)
Other versions
KR20060010004A (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 KR1020040058555A priority Critical patent/KR100622945B1/ko
Priority to CNA200510087563XA priority patent/CN1728110A/zh
Priority to US11/189,793 priority patent/US7493463B2/en
Priority to JP2005217727A priority patent/JP2006040290A/ja
Publication of KR20060010004A publication Critical patent/KR20060010004A/ko
Application granted granted Critical
Publication of KR100622945B1 publication Critical patent/KR100622945B1/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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/4434Reducing the memory space required by the program code

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)
  • Communication Control (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 하나의 명령으로 메모리에 저장되어 있는 복수 개의 데이터들을 전달하는 방안을 제안한다. 이를 위해 각 영역별로 어드레스가 할당된 적어도 2개의 영역들로 구성된 메모리에서, 데이터들을 각 어드레스에 순차적으로 할당하고, 상기 어드레스 할당된 데이터들을 하나의 명령으로 전달하게 된다. 즉, 하나의 명령으로 구성하고 있는 데이터들을 전달하는 적어도 하나의 블록을 생성하고, 데이터를 상기 블록들 중 적어도 하나의 블록에 구성되도록 지시한다. 상기 블록을 구성하고 있는 데이터들을 상호 연결하고, 상기 블록들에 대해 동일한 데이터들을 상호 연결한 경로의 합들을 산출하고, 상기 연결한 경로의 합을 고려하여 상기 데이터들을 최소 경로로 연결한다. 상기 최소 경로를 이용하여 상기 데이터들을 어드레스별로 순차적으로 할당한다.
메모리, 레지스터, 어드레스, MLS

Description

복수 로드 스토어 명령어를 통한 코드 크기 감소 방법{Code Reduction Method through Multiple Load-Store Instructions}
도 1은 일반적인 메모리와 레지스터에 어드레스를 할당한 모습을 도시한 도면,
도 2는 본 발명에 따른 메모리와 레지스터의 각 어드레스에 데이터를 할당하는 과정을 도시한 도면.
도 3은 본 발명에 따른 각 블록별로 하나의 명령으로 전달할 수 있는 데이터들을 도시한 도면,
도 4는 하나의 명령으로 전달할 수 있는 데이터들을 상호 연결하고, 각 경로별 가중치를 도시한 도면, 및
도 5는 도 3과 도4를 이용하여 하나의 명령으로 전달할 수 있는 데이터들을 최소한 경로로 연결한 도면.
본 발명은 코드 크기를 감소시키는 방법에 관한 것으로서, 더욱 상세하게는, 메모리에 저장되어 있는 데이터를 레지스터로 전달하거나, 상기 레지스터에 저장되 어 있는 데이터를 메모리로 전달 회수를 최소화함으로서 코드 크기를 감소시키는 방법에 관한 것이다.
일반적으로 중앙처리장치(CPU)는 메모리에 저장되어 있는 데이터들을 이용하여 연산 등과 기설정된 동작을 수행한다. 상기 중앙처리장치는 메모리에 저장되어 있는 데이터를 직접 이용하여 상기 기설정된 동작을 수행하는 것이 아니라, 상기 중앙처리장치와 연결되어 있는 레지스터에 기록되어 있는 데이터를 이용하여 기설정된 동작을 수행한다. 즉, 상기 중앙처리장치가 상기 메모리에 저장되어 있는 데이터를 이용하기 위해서는, 상기 메모리에 저장되어 있는 데이터를 상기 레지스터에 기록(write)하는 과정이 선행되어야 한다. 또한, 상기 레지스터에 기록되어 있는 데이터를 이용하여 기설정된 동작을 수행한 상기 중앙처리장치는 수행한 결과인 결과데이터를 상기 레지스터에 기록한다. 상기 레지스터에 기록된 상기 결과데이터는 주어진 명령에 의해 상기 메모리에 저장된다. 이와 같이 상기 중앙처리장치가 상기 메모리에 저장되어 있는 데이터를 이용하기 위해서는 레지스터를 활용하여야 한다.
상기 메모리와 레지스터는 복수 개의 영역들로 구분되며, 각 영역별로 어드레스가 할당된다. 도 1은 상기 메모리와 레지스터의 구조를 도시하고 있다. 상기 레지스터는 16개의 영역으로 구분되며, 각 영역별로 어드레스가 할당되어 있음을 알 수 있다. 상기 레지스터의 각 영역은 r0 내지 r15의 어드레스가 순차적으로 할당된다. 상기 메모리 역시 상기 레지스터와 동일하게 각 영역별로 어드레스가 할당된다. 상기 메모리의 크기는 사용자의 설정에 따라 달라지므로, 구분되는 영역 개 수도 달라진다. 상기 도 1은 하나의 메모리가 복수 개의 영역으로 구분되어 있으며, 각 영역별로 0x00, 0x04, 0x08, 0x0c, ....로 어드레스를 할당하고 있음을 도시하고 있다.
이하, 메모리에 저장되어 있는 데이터를 레지스터로 전달하는 과정에 대해 알아보기로 한다. 하나의 명령을 통해 상기 메모리에 저장되어 있는 데이터들 중 하나의 영역(어드레스)에 저장되어 있는 데이터가 상기 레지스터의 특정 영역(어드레스)로 전달된다.
일 예를 들어 설명하면, 제1명령에 의해 상기 메모리의 0x00에 저장되어 있는 데이터가 레지스터의 r0으로 전달되어 기록된다. 제2명령에 의해 상기 메모리의 0x04에 저장되어 있는 데이터가 레지스터의 r1으로 전달되어 기록된다. 제3명령에 의해 상기 메모리 0x08에 저장되어 있는 데이터가 레지스터의 r2로 전달되어 기록된다. 이와 같이 하나의 명령을 통해 하나의 데이터만이 상기 레지스터로 전달된다.
상기 중앙처리장치는 레지스터에 기록되어 있는 데이터를 이용하여 기설정된 동작을 수행한 후, 상기 동작에 대응되는 결과데이터를 상기 레지스터에 재 기록한다. 상기 레지스터에 기록된 결과데이터들 역시 하나의 명령으로 하나의 데이터가 상기 메모리로 전달된다. 이와 같은 문제점을 해결하기 위해 하나의 명령을 통해 적어도 2개의 데이터를 전달하는 방안이 논의된다. 이와 같이 하나의 명령을 통해 적어도 2개의 데이터를 데이터를 전달하는 방안을 복수 로드-스토어(Multiple Load-Store: MLS)라 한다.
이하 MLS에 대해 알아보기로 한다. 상기 MLS는 하나의 명령으로 상기 메모리에 저장되어 있는 적어도 2개의 데이터를 레지스터로 전달한다. 하지만, 상기 MLS를 수행하기 위해서는 전달되는 상기 메모리로부터 리드(read)되는 데이터들의 어드레스는 순차적으로 배열되어야 한다. 즉, 상기 0x08에 저장되어 있는 데이터로부터 3개의 데이터를 리드한다면, 상기 리드되는 데이터들의 어드레스는 0x08, 0x0c, 0x10이다. 물론 상기 리드된 데이터들은 상기 순차적으로 배열되어 있는 레지스터의 어드레스에 기록된다. 즉, 리드된 데이터들이 r1부터 기록된다면, 상기 기록되는 어드레스는 r1, r2, r3가 될 수 있다.
이와 같이 상기 MLS를 수행하기 위해서는 상술한 요건들을 만족하여야 한다. 하지만, 상기 메모리에 저장되어 있는 데이터들 중 순차적으로 저장되어 있는 데이터들을 리드할 수 있는 경우는 극히 희박하다. 또한, 연산과정을 통해 상술한 요건들을 만족하도록 상기 메모리와 레지스터의 어드레스에 할당되는 데이터들을 재배열하는 방안을 탐색할 수 있으나, 상기 탐색을 위한 연산량이 너무 크다는 단점을 가지고 있다.
상기 문제점을 해결하기 위한 본 발명의 목적은 MLS 수행할 수 있는 요건을 만족하는 방법을 제공함에 있다.
상기 문제점을 해결하기 위한 본 발명의 다른 목적은 데이터 전달 회수를 최소화하기 위해 MLS 수행할 수 있는 요건을 만족하고, 이로 인해 코드 크기를 감소시키는 방법을 제공함에 있다.
상기 본 발명의 목적들을 이루기 위해 각 영역별로 어드레스가 할당된 적어도 2개의 영역들로 구성된 메모리에서, 데이터들을 각 어드레스에 할당하는 방법에 있어서, 하나의 명령으로 구성하고 있는 데이터들을 전달하는 적어도 하나의 블록을 생성하고, 데이터를 상기 블록들 중 적어도 하나의 블록에 구성되도록 지시하는 단계; 상기 블록을 구성하고 있는 데이터들을 상호 연결하고, 상기 블록들에 대해 동일한 데이터들을 상호 연결한 경로의 합들을 산출하는 단계; 상기 연결한 경로의 합을 고려하여 상기 데이터들을 최소 경로로 연결하는 단계; 및 상기 최소 경로를 이용하여 상기 데이터들을 어드레스별로 순차적으로 할당하는 단계;로 구성됨을 특징으로 한다.
이하, 첨부된 도면들을 참조하여 본 발명을 상세하게 설명하기로 한다.
도 2는 본 발명에 따른 코드 크기를 감소시키는 과정을 도시하고 있다. 이하, 상기 도 2를 이용하여 본 발명에 따른 코드 크기를 감소시키는 과정에 대해 개략적으로 알아보기로 한다.
S200단계에서 L, S 영역을 측정한다. 상기 L, S 영역에 대한 상세한 설명은 후술하기로 한다.
S202단계에서 상기 메모리로부터 상기 레지스터로, 상기 레지스터에서 상기 메모리로 전달할 각 데이터를 상호 연결하는 경로별 가중치를 산출한다. 즉, 두 개의 데이터를 하나의 명령으로 전달할 수 있는 회수를 가중치로 표현한다. 상기 도 1은 레지스터의 개수가 16개인 경우에 대해 도시되어 있지만, 이에 한정되는 것은 아니다. 즉, 상기 레지스터의 개수는 사용자의 설정에 달라질 수 있다.
S204단계에서 각 경로별 가중치에서 낮은 가중치를 갖는 경로를 삭제한다. 상기 각 데이터들은 모두 최소 개수의 경로로 연결되어 있어야 하며, 상기 최소 개수의 경로로 연결하는데 불필요한 경로들은 가중치를 고려하여 삭제한다. 이에 대해서는 하기에서 상세하게 알아보기로 한다.
S206단계에서 상기 삭제되지 않은 경로들을 이용하여 각 어드레스에 데이터를 배열한다. 상기 데이터 배열과정을 수행함으로서 상기 MLS를 만족하게 된다. 이하 상기 도 2에 대해 상세하게 알아보기로 한다.
상기 중앙처리장치의 기설정된 동작이 하기와 같은 [프로그램1]에 의해 연산을 수행한다고 가정하자.
[프로그램1]
...
a = a + b - c + d;
if (a 〉 b) {
qstring (a, d);
f = f - d;
}
else {
qstring (a, b);
f = a + b;
d = b + d;
e = a + f;
}
f = d + a;
d = f - d;
...
상기 [프로그램1]을 상기 레지스터(레지스터 어드레스)와 관련하여 다시 한번 기술하면 하기 [프로그램2]와 같다.
[프로그램2]
B1-0 r0 = a;
B1-1 r1 = b;
B1-2 r2 = c;
B1-3 r0 = r0 + r1;
B1-4 r0 = r0 - r2;
B1-5 r2 = d;
B1-6 r0 = r0 + r2;
B1-7 a = r0;
B1-8 goto L1 if r0 ≤ r1
B2-0 r1 = r2;
B2-1 call gstring;
B2-2 r0 = f;
B2-3 r1 = d;
B2-4 r0 = r0 -r1;
B2-5 f = r0;
B2-6 goto L2
B3-0 L1 call gstring
B3-1 r0 = a;
B3-2 r2 = b;
B3-3 r3 = d;
B3-4 r1 = r0 + r2;
B3-5 f = r1
B3-6 r0 = r0 + r1;
B3-7 r2 = r2 + r3;
B3-8 e = r0;
B3-9 d = r2;
B4-0 L2 r0 = d;
B4-1 r2 = a;
B4-2 r1 = r2 + r0;
B4-3 r2 = r1 -r0;
B4-4 d = r2;
B4-5 f = r1;
상기 [프로그램2]를 이용하여 상기 연산을 수행하기 위해 데이터가 레지스터에 기록되어야 하는 시점에 대해 알아보기로 한다.
상기 [프로그램2]는 B1 내지 B4로 구성된다. 이하 먼저 B1에 대해 알아보기로 한다. 상기 연산을 위해 데이터a가 레지스터에 기록되어야 하는 시점은 B1-0 내지 B1-2이다 즉, 상기 B1-2 이내에 상기 데이터a가 상기 레지스터에 기록되면, 상기 중앙처리장치는 연산을 수행할 수 있다. 상기 연산을 위해 데이터b가 상기 레지스터에 기록되어야 하는 시점은 B1-0 내지 B1-2이다. 상기 연산을 위해 데이터c가 상기 레지스터에 기록되어야 하는 시점은 B1-0 내지 B1-3이다. 상기 연산을 위해 데이터d가 상기 레지스터에 기록되어야 하는 시점은 B1-0 내지 B1-5이다. 따라서, 상기 데이터a 내지 데이터d를 메모리에서 상기 레지스터로 하나의 명령으로 전달할 수 있는 시점은 B1-0 내지 B1-2이다. 또한, 상기 중앙처리장치로부터 전달된 결과데이터a는 상기 메모리로 전달하기 위해 B1-7에서 상기 레지스터에 기록된다.
이하, 상기 B2에 대해 알아본다. 상기 연산을 위해 데이터f가 레지스터에 기록되어야 하는 시점은 B2-0 내지 B2-3이다. 상기 연산을 위해 데이터d가 레지스터에 기록되어야 하는 시점 역시 B2-0 내지 B2-3이다. 따라서, 상기 데이터f, 데이터d를 메모리에서 상기 레지스터로 하나의 명령으로 전달할 수 있는 시점은 B2-0 내지 B2-3이다. 또한, 상기 중앙처리장치로부터 전달된 결과데이터f는 상기 메모리로 전달하기 위해 B2-5에서 상기 레지스터에 기록된다.
상기 B3에 대해 알아보면, 상기 연산을 위해 데이터a이 레지스터에 기록되어야 하는 시점은 B3-0 내지 B3-3이다. 상기 연산을 위해 데이터b가 레지스터에 기록되어야 하는 시점 역시 B3-0 내지 B3-3이다. 상기 연산을 위해 데이터d가 레지스터에 기록되어야 하는 시점은 상기 B3-0 내지 B3-6이다. 상기 데이터a, 데이터b, 데이터d를 메모리에서 상기 레지스터로 하나의 명령으로 전달할 수 있는 시점은 B3-0 내지 B3-3이다.
또한, 상기 중앙처리장치로부터 전달된 결과데이터f는 상기 메모리로 전달하기 위해 B3-5에서 상기 레지스터에 기록된다. 상기 중앙처리장치로부터 전달된 결과데이터e는 B3-8에서 상기 레지스터에 기록된다. 상기 중앙처리장치로부터 전달된 결과데이터d는 B3-9에서 상기 레지스터에 기록된다. 따라서, 상기 결과데이터f, 결과데이터e, 결과데이터d를 상기 레지스터에서 상기 메모리로 하나의 명령으로 전달할 수 있는 시점은 B3-9이다.
상기 B4에 대해 알아보면, 상기 연산을 위해 데이터d가 레지스터에 기록되어야 하는 시점은 B4-0 내지 B4-1이다. 상기 연산을 위해 데이터a가 레지스터에 기록되어야 하는 시점 역시 B4-0 내지 B4-1이다. 상기 데이터d, 데이터a를 메모리에서 상기 레지스터로 하나의 명령으로 전달할 수 있는 시점은 B4-0 내지 B4-1이다.
상술한 과정을 통해 상기 각 블록별로 하나의 명령으로 데이터를 전달할 수 있는 시점에 대해 알아보았다. 이하, 상기 데이터를 메모리 또는 레지스터의 어드레스에 할당하는 과정에 대해 알아보기로 한다. 상술한 바와 같이 상기 하나의 명 령으로 데이터를 전달하기 위해서는 상기 데이터들을 저장하고 있는 메모리 또는 레지스터의 어드레스가 순차적으로 배열되어 있어야 한다.
도 3은 본 발명에 따른 하나의 명령으로 전달할 수 있는 데이터들과, 상기 데이터들을 상호 연결한 경로(path)를 도시하고 있다. 이하, 각 블록별로 상기 데이터들을 상호 연결한 경로에 대해 알아보기로 한다.
먼저 (B1)에 대해 알아보면, 상기 (B1)은 데이터a, 데이터b, 데이터c, 데이터d를 하나의 명령으로 전달한다. 상기 데이터a, 데이터b, 데이터c, 데이터d를 연결하는 경로를 도시하면 상기 도 3의 (B1)과 같다. 또한, 상기 (B1)은 중앙처리장치로부터 전달받은 결과데이터a를 도시하고 있다.
(B2)에 대해 알아보면, 상기 (B2)는 데이터f, 데이터d를 하나의 명령으로 전달한다. 상기 데이터f, 데이터d를 연결하는 경로를 도시하면 상기 도 3의 (B2)와 같다. 또한, 상기 (B2)는 중앙처리장치로부터 전달받은 결과데이터f를 도시하고 있다.
(B3)에 대해 알아보면, 상기 (B3)는 데이터a, 데이터b, 데이터d를 하나의 명령으로 전달한다. 상기 데이터a, 데이터b, 데이터d를 연결하는 경로를 도시하면 상기 도 3의 (B3)와 같다. 또한, 상기 (B3)는 중앙처리장치로부터 전달받은 결과데이터f, 결과데이터d, 결과데이터e를 연결하는 경로를 도시하고 있다.
(B4)에 대해 알아보면, 상기 (B4)는 데이터a, 데이터d를 하나의 명령으로 전달한다. 상기 데이터a, 데이터d를 연결하는 경로를 도시하면 상기 도 3의 (B4)와 같다. 또한, 상기 (B4)는 중앙처리장치로부터 전달받은 데이터f, 데이터d, 데이터e 를 연결하는 경로를 도시하고 있다.
도 4(a)는 상기 도 3을 이용하여 각 경로별로 가중치를 나타내고 있다. 이하 결과데이터와 데이터를 혼용해서 사용하기로 한다.
상기 데이터a와 데이터b를 연결하는 경로는 도 3의 (B1)과 (B3)에 각각 도시되어 있으므로, 가중치는 2가 된다. 상기 데이터a와 데이터c를 연결하는 경로는 도 3의 (B1)에 각각 도시되어 있으므로, 가중치는 1이 된다. 상기 데이터a와 데이터d를 연결하는 경로는 도 3의 (B1)과 (B3), (B4)에 각각 도시되어 있으므로, 가중치는 3가 된다.
또한, 상기 데이터d와 데이터f를 연결하는 경로는 도 3의 (B2)과 (B3), (B4)에 각각 도시되어 있으므로, 가중치는 3이 된다. 상술한 과정을 순차적으로 수행함으로서 상기 도 4(a)에 기재되어 있는 각 경로별 가중치를 획득하게 된다.
도 4(b)는 최소한 경로를 이용하여 각 데이터를 모두 연결한 예를 도시하고 있다. 따라서, 상기 도 4(b)에서 선택된 경로를 제외한 나머지 경로들은 도 4(a)에서 삭제된다. 상기 각 경로별 가중치를 고려하여 상기 일부 경로를 삭제한다. 즉, 가중치가 낮은 경로를 우선 삭제한다. 이와 같이 함으로서 사용빈도가 높은 경로만이 남게 된다. 상기 도 4(b)를 살펴보면, 데이터a와 데이터c를 연결하는 경로, 데이터c와 데이터d를 연결하는 경로, 데이터b와 데이터d를 연결하는 경로, 데이터d와 데이터e를 연결하는 경로가 삭제되어 있다.
도 5는 상기 도4(b)를 이용하여 상기 도 3에 도시되어 있는 데이터들을 연결한 예를 도시하고 있다.
(B1)은 데이터a와 데이터b를 연결하는 경로, 데이터b와 데이터c를 연결하는 경로, 데이터a와 데이터d를 연결하는 경로와 데이터a로 구성된다. (B2)는 데이터f와 데이터d를 연결하는 경로와 데이터f로 구성된다. (B3)는 데이터a와 데이터b를 연결하는 경로, 데이터a와 데이터d를 연결하는 경로로 구성된다. 또한, 상기 (B3)는 데이터f와 데이터d를 연결하는 경로, 데이터f와 데이터e를 연결하는 경로로 구성된다. (B4)는 데이터a와 데이터d를 연결하는 경로, 데이터d와 데이터f를 연결하는 경로로 구성된다.
상기 도 5에 도시되어 있는 경로들을 이용하여 상기 메모리의 각 어드레스에 할당되는 데이터를 알아보면 하기 〈표 1〉과 같다.
어드레스 데이터
0x00 데이터c
0x04 데이터b
0x08 데이터a
0x0c 데이터d
0x10 데이터f
0x14 데이터e
상기 메모리의 각 어드레스에 상기 〈표 1〉에서 나타낸 바와 같이 데이터를 할당함으로서 하나의 명령으로 복수 개의 데이터를 전달할 수 있게 된다. 즉, (B1)에서 필요한 데이터a 내지 데이터d는 메모리 어드레스 0x00 내지 0x0c로부터 하나의 과정으로 리드한다. (B2) 내지 (B4)에서 필요한 데이터들도 각 어드레스로부터 하나의 과정으로 리드할 수 있다.
본 발명은 하나의 명령으로 복수개의 데이터들을 효율적으로 전달할 수 있는 방안을 제안하다. 즉, 하나의 명령으로 전달할 수 있도록 상기 데이터들은 메모리의 각 어드레스에 순차적으로 할당된다. 이와 같이 하나의 명령으로 복수 개의 데이터들을 전달함으로, 데이터 전달을 지시하는 코드의 크기가 감소되며, 상기 코드를 저장하는 메모리의 크기 역시 감소된다.
이상에서는 본 발명의 바람직한 실시예에 대해서 도시하고 설명하였으나, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.

Claims (7)

  1. 각 영역별로 어드레스가 할당된 적어도 2 개의 영역들로 구성된 메모리에서 레지스터로 데이터들을 전달하기 위해 상기 데이터들에 대하여 각 어드레스를 할당하는 방법에 있어서,
    상기 데이터들을 하나의 명령으로 전달하는 적어도 하나 이상의 블록을 생성하고, 상기 블록들 중 적어도 하나의 블록에 상기 하나의 명령으로 전달하는 데이터들을 구성하는 단계;
    상기 블록을 구성하고 있는 상기 데이터들을 상호 연결하고, 상기 블록들에 대해 상기 하나의 명령으로 수행되는 데이터들을 상호 연결한 경로의 합들을 산출하는 단계;
    상기 연결한 경로의 합을 고려하여, 상기 데이터들을 최소 경로로 연결하는 단계; 및
    상기 최소 경로를 이용하여 상기 데이터들을 어드레스별로 순차적으로 할당하는 단계;를 포함하는 것을 특징으로 하는 상기 어드레스 할당 방법.
  2. 제 1항에 있어서, 상기 연결한 경로의 합이 큰 경로를 이용하여 상기 데이터들을 연결함을 특징으로 하는 상기 어드레스 할당 방법.
  3. 제 1항에 있어서, 하나의 블록을 구성하고 있는 데이터들은 특정 어드레스로부터 순차적으로 할당됨을 특징으로 하는 상기 어드레스 할당 방법.
  4. 제 3항에 있어서, 상기 블록을 구성하고 있는 각 데이터의 전달시점들을 결정하고, 상기 공통되는 전달시점에서 상기 블록을 구성하고 있는 데이터들을 전달함을 특징으로 하는 상기 어드레스 할당 방법.
  5. 제 1항에 있어서, 상기 메모리로부터 전달된 데이터들은 레지스터로 전달함을 특징으로 하는 상기 어드레스 할당 방법.
  6. 제 5항에 있어서, 상기 메모리로부터 전달된 데이터들은 레지스터의 특정 어드레스부터 순차적으로 기록됨을 특징으로 하는 상기 어드레스 할당 방법.
  7. 제 6항에 있어서, 상기 레지스터는 16개의 영역으로 구성되며, 각 영역별로 어드레스가 할당되어 있음을 특징으로 하는 상기 어드레스 할당 방법.
KR1020040058555A 2004-07-27 2004-07-27 복수 로드 스토어 명령어를 통한 코드 크기 감소 방법 KR100622945B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020040058555A KR100622945B1 (ko) 2004-07-27 2004-07-27 복수 로드 스토어 명령어를 통한 코드 크기 감소 방법
CNA200510087563XA CN1728110A (zh) 2004-07-27 2005-07-27 通过多载入/存储指令的代码尺寸减小方法
US11/189,793 US7493463B2 (en) 2004-07-27 2005-07-27 Code size reduction method through multiple load/store instructions
JP2005217727A JP2006040290A (ja) 2004-07-27 2005-07-27 アドレス割当方法およびデータ伝送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040058555A KR100622945B1 (ko) 2004-07-27 2004-07-27 복수 로드 스토어 명령어를 통한 코드 크기 감소 방법

Publications (2)

Publication Number Publication Date
KR20060010004A KR20060010004A (ko) 2006-02-02
KR100622945B1 true KR100622945B1 (ko) 2006-09-19

Family

ID=35733873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040058555A KR100622945B1 (ko) 2004-07-27 2004-07-27 복수 로드 스토어 명령어를 통한 코드 크기 감소 방법

Country Status (4)

Country Link
US (1) US7493463B2 (ko)
JP (1) JP2006040290A (ko)
KR (1) KR100622945B1 (ko)
CN (1) CN1728110A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9639357B2 (en) 2011-12-02 2017-05-02 Samsung Electronics Co., Ltd. Processor, apparatus and method for generating instructions

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100735552B1 (ko) 2005-09-23 2007-07-04 삼성전자주식회사 코드 메모리 상의 프로그램의 코드 크기를 줄이는 방법
KR100829167B1 (ko) * 2006-11-10 2008-05-13 재단법인서울대학교산학협력재단 소프트웨어 파이프라이닝의 데이터 의존도 완화 방법
CN101276315B (zh) * 2007-03-30 2011-06-22 财团法人工业技术研究院 动态调整传输数据宽度的直接存储器存取控制器与方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8815978D0 (en) * 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
CA2117846C (en) * 1993-10-20 2001-02-20 Allen Reiter Computer method and storage structure for storing and accessing multidimensional data
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5991815A (en) * 1997-06-19 1999-11-23 The United States Of America As Represented By The Secretary Of The Navy Method of supplying multiple loads from multiple sources over an interconnected network of defined paths
US20020156914A1 (en) * 2000-05-31 2002-10-24 Lo Waichi C. Controller for managing bandwidth in a communications network
US7362974B2 (en) * 2001-11-30 2008-04-22 Pirelli & C. S.P.A. Method for planning or provisioning data transport networks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9639357B2 (en) 2011-12-02 2017-05-02 Samsung Electronics Co., Ltd. Processor, apparatus and method for generating instructions

Also Published As

Publication number Publication date
US20060026581A1 (en) 2006-02-02
JP2006040290A (ja) 2006-02-09
US7493463B2 (en) 2009-02-17
CN1728110A (zh) 2006-02-01
KR20060010004A (ko) 2006-02-02

Similar Documents

Publication Publication Date Title
US6347396B1 (en) Disturbance free update of data
CN103677884B (zh) flash分区表文件生成及其数据升级方法、装置
US6275921B1 (en) Data processing device to compress and decompress VLIW instructions by selectively storing non-branch NOP instructions
CN102750317B (zh) 数据持久化处理方法、装置及数据库系统
CN103222003B (zh) 用于根据配置信息执行原子存储器操作的存储器及方法
CN100456264C (zh) 一种磁盘空间管理方法及系统
CN101111828A (zh) 用于具有组合行和字访问的存储器的系统和方法
CN109901909A (zh) 用于虚拟化系统的方法及虚拟化系统
CN108733324A (zh) 一种固态硬盘的数据读写方法、装置、设备及存储介质
KR100622945B1 (ko) 복수 로드 스토어 명령어를 통한 코드 크기 감소 방법
CN109857553A (zh) 内存管理方法及装置
CN109766057A (zh) 固件数据处理方法及系统
CN101441551A (zh) 计算机、外存储器以及处理外存储器中数据信息的方法
JPS6058487B2 (ja) デ−タ処理装置
JP2002049604A (ja) プロセッサ間データ通信装置、プロセッサ間データ通信方法およびデータ処理装置
CN106325762B (zh) 输入输出控制方法和装置
CN113474761A (zh) 用于配置多个核心独立外围设备的可编程任意序列直接存储器存取控制器
CN116302699B (zh) 一种数据库并行回放的控制方法以及控制系统
JPH0250787A (ja) Icカード及びそのプログラム書換え方式
JPH06282700A (ja) Cpuを内蔵した情報記録媒体
Schimpf Garbage collection for Prolog based on twin cells
CN115729850A (zh) 多口存储器的数据读写方法、装置、存储介质和电子设备
JPS63153655A (ja) メモリアクセス制御方式
KR100476291B1 (ko) 방문 가입자 데이터 저장을 위한 프로세서 로드 데이터 로딩 방법
DK0740806T3 (da) Fremgangsmåde til styring af en teknisk proces efter den endelige automats princip

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
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: 20111208

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20120904

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee