KR100484161B1 - 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드단위로 저장하는 장치 및 방법 - Google Patents
데이터를 워드 단위 또는 바이트 단위로 로드하고 워드단위로 저장하는 장치 및 방법 Download PDFInfo
- Publication number
- KR100484161B1 KR100484161B1 KR10-2002-0055641A KR20020055641A KR100484161B1 KR 100484161 B1 KR100484161 B1 KR 100484161B1 KR 20020055641 A KR20020055641 A KR 20020055641A KR 100484161 B1 KR100484161 B1 KR 100484161B1
- Authority
- KR
- South Korea
- Prior art keywords
- word
- data
- storage location
- byte
- units
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 데이터를 메모리의 저장 장소간에 레지스터를 경유하여 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드 단위로 저장하는 장치 및 방법에 관한 것으로, 본 발명에 따른 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치는 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 워드 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하는 워드 단위 로드부, 및 상기 레지스터에 로드된 한 워드의 데이터를, 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 워드 단위로 저장하는 워드 단위 저장부로 구성된다.
본 발명에 따르면 원천지 주소의 정렬 방식을 고려하여 로드와 저장 연산의 횟수를 감소시킴으로서, 데이터의 전송 속도를 향상시키는 효과가 있다. 본 발명의 효과는 전송될 데이터의 양이 많을수록 커진다.
Description
본 발명은 데이터를 메모리의 저장 장소간에 레지스터를 경유하여 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드 단위로 저장하는 장치 및 방법에 관한 것이다.
도 1은 종래의 바이트 단위로 로드하고 바이트 단위로 저장하는 장치의 일 실시예를 나타낸 도면이다.
어떤 데이터가 여러 바이트씩 메모리의 원천지 저장 장소(11)로부터 목적지 저장 장소(13)로 전송(복사, 또는 이동을 포함한다)될 때, 우선 바이트 단위로 프로세서 레지스터(12)에 로드된 후, 바이트 단위로 목적지 저장 장소(13)에 저장된다. 종래의 로드 및 저장 명령들은 프로세서 레지스터 상에서의 비효율적인 연산들이다. 여러 바이트의 전송될 데이터가 존재할 때, 한 바이트씩 원천지 저장 장소(11)로부터 프로세서 레지스터(12)로 로드되고, 그런 다음 목적지 저장 장소(13)에 저장되므로, 한 바이트마다 비효율적인 로드 및 저장 연산들을 사용하여야 한다는 문제점이 있었다.
본 발명이 이루고자 하는 기술적 과제는 원천지 주소들의 정렬 방식을 고려하여 로드 및 저장 연산의 횟수를 감소시키는 장치 및 방법을 제공하는데 있다.
상기 문제점을 해결하기 위한 본 발명에 따른 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치는 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 워드 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하는 워드 단위 로드부, 및 상기 레지스터에 로드된 한 워드의 데이터를, 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 워드 단위로 저장하는 워드 단위 저장부로 구성된다.
상기 또 다른 문제점을 해결하기 위한 본 발명에 따른 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치는 상기 메모리의, 워드로 정렬되어 있지 않고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 원천지 주소 저장 장소로부터 상기 레지스터로 로드하는 바이트 단위 로드부, 및 상기 레지스터에 로드된 한 워드의 데이터를 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 상기 레지스터에 로드된 데이터를 워드 단위로 저장하는 워드 단위 저장부로 구성된다.
상기 또 다른 문제점을 해결하기 위한 본 발명에 따른 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 방법은 (a) 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 워드 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하는 단계, 및 (b) 상기 레지스터에 로드된 한 워드의 데이터를, 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 워드 단위로 저장하는 단계로 구성된다.
상기 또 다른 문제점을 해결하기 위한 본 발명에 따른 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 방법은 (a) 상기 메모리의, 워드로 정렬되어 있지 않고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 원천지 주소 저장 장소로부터 상기 레지스터로 로드하는 단계, 및 (b) 상기 레지스터에 로드된 한 워드의 데이터를 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 상기 레지스터에 로드된 데이터를 워드 단위로 저장하는 단계로 구성된다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
도 2는 본 발명에 따른 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치의 구성도이다.
도 2의 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치는 워드 단위 로드부(21)와 워드 단위 저장부(22)로 구성된다. 도 2의 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치는 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 프로세서의 레지스터를 경유하여 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치이다.
워드 단위 로드부(21)는 워드로 정렬되어 있고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 워드 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드한다. 워드란 하나의 연산(operation)을 통해 메모리로부터 프로세서의 레지스터에 옮겨놓을 수 있는 데이터 단위를 말한다. 즉, 워드는 프로세서의 레지스터의 저장 용량이 된다. 본 발명에서는 로드나 저장 등의 연산을 통해 원천지 저장 장소로부터 목적지 저장 장소로 데이터를 전송할 수 있는 최대 용량을 말한다. 다수의 원천지 주소들이 어떠한 경우에 워드로 정렬되어 있다는 것을 의미하고, 어떠한 경우에 순차적으로 증가한다는 것을 의미하는 지는 다음의 도 3에서 구체적으로 살펴보기로 한다.
워드 단위 저장부(22)는 상기 레지스터에 로드된 한 워드의 데이터를 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 워드 단위로 저장한다.
만약, 상기 원천지 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우라면, 워드 단위 로드부(21)는 상기 한 워드 미만의 데이터를 바이트 단위로 원천지 저장 장소로부터 레지스터로 로드한다. 로드나 저장은 워드 단위로 할 수 있는데, 전송(복사, 이동을 포함한다)할 데이터가 한 워드 미만인 경우에는, 종래와 같이 바이트 단위로 일일이 할 수밖에 없다. 이 경우, 워드 단위 저장부(22)는 상기 레지스터에 로드된 한 바이트의 데이터를 목적지 저장 장소에 바이트 단위로 저장한다. 반복해서 바이트 단위로 레지스터로 로드된 데이터가 한 워드를 채울 수 없기 때문에 워드 단위 저장부(22)는 목적지 저장 장소에 바이트 단위로 저장할 수밖에 없다.
본 발명에서는 워드를 4 바이트 또는 8 바이트(한 바이트는 8 비트)로 구성하였다. IBM 메인프레임용 프로세서와 PC에서 활용되는 인텔의 프로세서가 모두 32 비트를 한 워드로 하는 방식을 사용하기 때문이다. 또한, 인텔 및 기타 업체에서 최근 발표하는 프로세서들의 구조에서는 64 비트를 한 워드로 하는 방식을 제공하기도 하기 때문에 8 바이트를 추가하였다. 이하에서는 한 워드는 4 바이트인 것으로 하여 실시 예를 구성하기로 하겠다.
도 3은 본 발명에 따른 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치의 일 실시예를 나타낸 도면이다.
상기 도 3은 원천지 저장 장소(31)의 원천지 주소들이 워드로 정렬되어 있고, 순차적으로 증가하는 경우로서, 가장 간단한 경우에 해당된다. 여기에서 주소가 워드로 정렬되어 있는 경우란 원천지 저장 장소(31)로부터 전송할 데이터가 바이트 2, 바이트 3, 바이트 4, 및 바이트 5로서 시작 데이터인 바이트 2가 0, 4, 8, 또는 C로 끝나는 주소로 시작하는 경우(예 : 0xc020 fff0)를 말한다. 일반적으로, 프로세서는 연산(operation)을 워드 단위로 실행하고, 0, 4, 8, 또는 C로 끝나는 주소로부터 연속적으로 저장된 4 바이트를 워드로 인식하기 때문이다. 따라서, 전송할 데이터가 0, 4, 8, C 이외의 숫자로 끝나는 주소를 시작으로 저장되어 있는 경우에 있어서, 워드 단위로 연산을 처리하는 경우, 다른 데이터를 포함하여 처리하기 때문에 바이트 단위로 처리할 수밖에 없다.
여기에서 주소가 순차적으로 증가하는 경우란 전송할 데이터인 바이트 2, 바이트 3, 바이트 4, 및 바이트 5가 원천지 저장 장소(31)에 연속적으로 저장되어 있다는 것을 의미한다. 예를 들면, 바이트 2는 0xc020 fff0 번지에, 바이트 3는 0xc020 fff1에, 바이트 4는 0xc020 fff2에, 바이트 5는 0xc020 fff3에 저장되어 있는 경우를 말한다.
원천지 주소와 목적지 주소가 모두 워드로 정렬되고 순차적인 경우라면, 워드 단위로 원천지 저장 장소(31)로부터 프로세서 레지스터(32)에 로드(가능하면 다중 로드)된 후, 목적지 저장 장소(33)에 저장(가능하면 다중 저장)될 수 있다. 이것은 전송될 4 바이트 이상의 데이터가 존재할 때까지 반복된다. 나머지는 모든 바이트(0-3 바이트)가 전송될 때까지 바이트 단위로 로드 및 저장에 의하여 전송된다.
도 4는 본 발명에 따른 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치의 구성도이다.
도 4의 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치는 바이트 단위 로드부(41)와 워드 단위 저장부(42)로 구성된다. 도 4의 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치는 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 프로세서의 레지스터를 경유하여 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치이다.
바이트 단위 로드부(41)는 워드로 정렬되어 있지 않고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 한 워드 이상의 데이터를 바이트 단위로 원천지 주소 저장 장소로부터 레지스터로 로드한다. 상기한 바와 같이, 원천지 주소들이 워드로 정렬되지 않은 경우이므로 워드 단위로 레지스터로 로드할 경우, 다른 데이터를 포함하여 로드하게 되므로 바이트 단위로 로드할 수밖에 없다.
워드 단위 저장부(42)는 레지스터에 로드된 한 워드의 데이터를 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 상기 레지스터에 로드된 데이터를 워드 단위로 저장한다. 반복해서 바이트 단위로 레지스터로 로드된 데이터가 한 워드를 채우면, 워드 단위 저장부(42)는 목적지 저장 장소에 워드 단위로 저장한다.
만약, 원천지 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우라면, 바이트 단위 로드부(41)는 상기 한 워드 미만의 데이터를 바이트 단위로 원천지 저장 장소로부터 레지스터로 로드하고, 워드 단위 저장부(42)는 레지스터에 로드된 한 바이트의 데이터를 목적지 저장 장소에 바이트 단위로 저장한다. 반복해서 바이트 단위로 레지스터로 로드된 데이터가 한 워드를 채울 수 없기 때문에 워드 단위 저장부(42)는 목적지 저장 장소에 바이트 단위로 저장할 수밖에 없다.
만약, 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우라면, 바이트 단위 로드부(41)는 상기 한 워드 이상의 데이터를 바이트 단위로 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소부터 레지스터로 로드한다. 상기한 바와 같이, 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소에 한 워드 이상의 데이터가 저장되어 있다는 것은 한 워드 이상의 데이터가 비연속적인 주소들에 저장되어 있다는 것을 의미한다. 이 경우에도, 반복해서 바이트 단위로 레지스터로 로드된 데이터가 한 워드를 채울 수 있기 때문에 워드 단위 저장부(42)는 목적지 저장 장소에 워드 단위로 저장할 수 있다.
만약, 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우라면, 바이트 단위 로드부(41)는 상기 한 워드 미만의 데이터를 바이트 단위로 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소로부터 레지스터로 로드하고, 워드 단위 저장부(42)는 레지스터에 로드된 한 바이트의 데이터를 상기 목적지 저장 장소에 바이트 단위로 저장한다.
도 5는 본 발명에 따른 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치의 일 실시예를 나타낸 도면이다.
상기 도 5는 원천지 저장 장소(51)의 원천지 주소들이 워드로 정렬되어 있지 않고, 순차적으로 증가하는 경우이다. 즉, 도 5에서 나타난 바와 같이 로드할 데이터가 바이트 2, 바이트 3, 바이트 4, 및 바이트 5 인 경우에 있어서, 0xc020 fff1 번지에 바이트 2, 0xc020 fff2 번지에 바이트 3, 0xc020 fff3 번지에 바이트 4, 0xc020 fff4 번지에 바이트 5가 저장된 경우이다. 워드 단위로 로드할 경우, 0xc020 fff0 번지부터 0xc020 fff3 번지에 저장된 데이터가 로드되므로, 로드하려고 하지 않은 데이터인 바이트 1도 함께 포함되어 로드된다는 문제점이 있다. 따라서, 이 경우는 종래와 같이 바이트 단위로 로드한다. 일반적으로, 원천지 주소들이 하프 워드로 정렬되어 있고 순차적으로 증가하는 경우가 여기에 해당된다.
반복해서 바이트 단위로 레지스터(52)로 로드된 데이터가 한 워드를 채울 수 있기 때문에 목적지 저장 장소(53)에 워드 단위로 저장할 수 있다. 즉, 원천지 저장 장소(51)로부터 레지스터(52)로 바이트 단위로 로드한다. 그런 다음, 목적지 저장 장소(53)에 로드된 바이트를 저장하는 것 대신에 바이트 단위로 프로세서 레지스터(52)에 저장한다. 4 바이트가 프로세서 레지스터(52)에 저장된다(바이트들이 저장되는 방법은 프로세서의 엔디언(endian)을 따른다). 상기 4 바이트는 한 워드를 이루므로, 워드 단위로 목적지 저장 장소(53)에 저장(가능하면 다중 저장)된다. 이것은 전송될 네 바이트 이상의 데이터가 존재할 때까지 반복된다. 나머지는 모든 바이트(0-3 바이트)의 데이터가 복사될 때까지 바이트 단위로 로드 및 저장하는 것에 의하여 전송된다.
도 6은 본 발명에 따른 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치의 또 다른 일 실시예를 나타낸 도면이다.
상기 도 6은 원천지 주소들이 순차적으로 증가하지 않는 경우이다. 즉, 도 6에서 나타난 바와 같이 로드할 데이터가 바이트 2(611), 바이트 3(612), 바이트 4(613), 및 바이트 5(614) 인 경우에 있어서, 바이트 2(611), 바이트 3(612), 바이트 4(613), 및 바이트 5(614)가 비연속적인 주소에 저장된 경우이다. 워드 단위로 로드할 경우, 연속적인 4개의 주소에서 4 바이트 분량의 데이터를 한번에 로드하여야 하므로, 로드하려고 하지 않은 데이터인 바이트*도 함께 포함되어 로드된다는 문제점이 있다. 따라서, 이 경우는 종래와 같이 바이트 단위로 로드한다.
반복해서 바이트 단위로 레지스터(62)로 로드된 데이터가 한 워드를 채울 수 있기 때문에 목적지 저장 장소(63)에 워드 단위로 저장할 수 있다. 즉, 원천지 저장 장소(611~614)로부터 레지스터(62)로 바이트 단위로 로드한다. 그런 다음, 목적지 저장 장소(63)에 로드된 바이트를 저장하는 것 대신에 바이트 단위로 프로세서 레지스터(62)에 저장한다. 4 바이트가 프로세서 레지스터(62)에 저장된다(바이트들이 저장되는 방법은 프로세서의 엔디언(endian)을 따른다). 상기 4 바이트는 한 워드를 이루므로, 워드 단위로 목적지 저장 장소(63)에 저장(가능하면 다중 저장)된다. 이것은 전송될 네 바이트 이상의 데이터가 존재할 때까지 반복된다. 나머지는 모든 바이트(0-3 바이트)의 데이터가 복사될 때까지 바이트 단위로 로드 및 저장하는 것에 의하여 전송된다.
이 밖에 목적지 주소들이 워드로 정렬되지 않은 경우, 다음의 두 가지 경우가 있다. 첫째, 목적지 주소들이 순차적으로 증가하고, 원천지 주소와 목적지 주소의 정렬이 같은 경우(즉, 원천지 주소 모듈로 4 = 목적지 주소 모듈로 4)로서, 목적지 주소들이 하프 워드로 정렬되어 있는 경우, 하프 워드 단위의 로드 및 저장은 처음 2 바이트에 대해서 실행될 수 있다. 하프 워드 로드 및 저장 연산이 지원되는 경우라면, 본 발명에서 워드 대신에 하프 워드를 대치한 경우도 가능하다.
원천지 및 목적지 저장 장소들이 하프 워드로 정렬되어 있지 않거나, 또는 하프 워드 로드 연산이 지원되지 않는 경우, 바이트 단위로 원천지 저장 장소로부터 로드된 후, 워드 단위로 목적지 저장 장소로 저장된다(4 - 초기 목적지 주소 모듈로 4). 그런 다음 복사될 네 바이트 이상의 데이터가 있는 경우, 원천지 저장 장소로부터 프로세서 레지스터로 로드되고(가능하다면 다중 로드), 목적지 저장 장소에 저장된다(가능하다면 다중 저장). 이것은 복사될 네 바이트 이상의 데이터가 존재할 때까지 반복된다. 나머지는 모든 바이트(0-3 바이트)가 복사될 때까지 바이트 단위로 로드하고 저장하는 것에 의하여 복사된다.
둘째, 목적지 주소들이 순차적으로 증가하고, 원천지 주소들과 목적지 주소들의 정렬이 같지 않은 경우(즉, 원천지 주소 모듈로 4 ! = 목적지 주소 모듈로 4), 또는 목적지 주소가 순차적으로 증가하지 않는 경우, 바이트 단위로 원천지 저장 장소로부터 로드되고, 바이트 단위로 목적지 저장 장소에 저장된다(4 - 초기 목적지 주소 모듈로 4). 전송될 네 바이트 이상의 데이터가 존재하는 경우, 원천지 저장 장소로부터 레지스터에 4 바이트씩 로드하고, 상기 로드된 바이트를 목적지 저장 장소에 저장하는 것 대신에 프로세서 레지스터에 저장한다. 네 바이트는 프로세서 레지스터에 저장된다(바이트가 저장되는 방식은 프로세서의 엔디안에 따른다). 바이트가 레지스터에 저장된 후에 저장 워드 연산이 실행될 수 있다(가능하다면 다중 저장). 이것은 복사될 네 바이트 이상이 존재할 때까지 반복된다. 나머지는 모든 바이트(0-3 바이트)가 복사될 때까지 바이트 별로 로드하고 저장하는 것에 의하여 복사된다.
도 7은 본 발명에 따른 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드 단위로 저장하는 방법의 흐름도이다.
상기 도 7의 워드 단위 또는 바이트 단위로 로드하고 워드 단위로 저장하는 방법은 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 프로세서의 레지스터를 경유하여 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드 단위로 저장하는 방법이다.
먼저, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소(71)에 한 워드 이상의 데이터가 저장되어 있는 경우(72), 상기 한 워드 이상의 데이터를 워드 단위로 원천지 저장 장소로부터 레지스터로 로드한다(73). 이어서, 상기 레지스터에 로드된 한 워드의 데이터를 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 워드 단위로 저장한다(74).
만약, 원천지 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우라면(72), 상기 한 워드 미만의 데이터를 바이트 단위로 원천지 저장 장소로부터 레지스터로 로드하고(75), 이어서 레지스터에 로드된 한 바이트의 데이터를 목적지 저장 장소에 바이트 단위로 저장한다(76).
만약, 워드로 정렬되어 있지 않고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소(71)에 한 워드 이상의 데이터가 저장되어 있는 경우라면(77), 상기 한 워드 이상의 데이터를 바이트 단위로 상기 원천지 주소 저장 장소로부터 상기 레지스터로 로드한다(78). 이어서, 상기 레지스터에 로드된 한 워드의 데이터를 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 레지스터에 로드된 데이터를 워드 단위로 저장한다(79).
만약, 상기 원천지 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우라면(77), 상기 한 워드 미만의 데이터를 바이트 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하고(710), 이어서 레지스터로 로드된 한 바이트의 데이터를 상기 목적지 저장 장소에 바이트 단위로 저장한다(711).
만약, 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소(71)에 한 워드 이상의 데이터가 저장되어 있는 경우라면(77), 상기 한 워드 이상의 데이터를 바이트 단위로 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소부터 레지스터로 로드한다(78). 이어서, 상기 레지스터에 로드된 한 워드의 데이터를 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 레지스터에 로드된 데이터를 워드 단위로 저장한다(79).
만약, 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우라면(77), 상기 한 워드 미만의 데이터를 바이트 단위로 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소로부터 레지스터로 로드하고(710), 이어서 레지스터로 로드된 한 바이트의 데이터를 목적지 저장 장소에 바이트 단위로 저장한다(711).
한편, 상술한 본 발명의 실시 예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 씨디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
본 발명에 따르면 원천지 주소의 정렬 방식을 고려하여 로드와 저장 연산의 횟수를 감소시킴으로서, 데이터의 전송 속도를 향상시키는 효과가 있다. 본 발명의 효과는 전송될 데이터의 양이 많을수록 커진다. 본 발명은 효율적인 코드를 발생시키려고 하는 콤파일러 디자이너에 의하여 사용되어질 수 있고, 또한 콤파일러가 어셈블리를 생성하고자 할 때 본 발명이 사용되지 않는다면, 본 발명은 향상된 성능을 위하여 코드를 최적화하려고 하는 어셈블러 프로그래머에 의하여 사용되어질 수 있다.
도 1은 종래의 바이트 단위로 로드하고 바이트 단위로 저장하는 장치의 일 실시예를 나타낸 도면이다.
도 2는 본 발명에 따른 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치의 구성도이다.
도 3은 본 발명에 따른 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치의 일 실시예를 나타낸 도면이다.
도 4는 본 발명에 따른 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치의 구성도이다.
도 5는 본 발명에 따른 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치의 일 실시예를 나타낸 도면이다.
도 6은 본 발명에 따른 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치의 또 다른 일 실시예를 나타낸 도면이다.
도 7은 본 발명에 따른 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드 단위로 저장하는 방법의 흐름도이다.
Claims (19)
- 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 장치에 있어서,상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 워드 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하는 워드 단위 로드부; 및상기 레지스터에 로드된 한 워드의 데이터를, 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 워드 단위로 저장하는 워드 단위 저장부를 포함하고,상기 워드 단위 로드부는 상기 원천지 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하고,상기 워드 단위 저장부는 상기 레지스터에 로드된 한 바이트의 데이터를 상기 목적지 저장 장소에 바이트 단위로 저장하는 것을 특징으로 하는 장치.
- 삭제
- 제 1 항에 있어서, 상기 워드는 4 바이트, 8 바이트, 또는 하프 워드인 것을 특징으로 하는 장치.
- 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 장치에 있어서,상기 메모리의, 워드로 정렬되어 있지 않고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 원천지 주소 저장 장소로부터 상기 레지스터로 로드하는 바이트 단위 로드부; 및상기 레지스터에 로드된 한 워드의 데이터를 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 상기 레지스터에 로드된 데이터를 워드 단위로 저장하는 워드 단위 저장부를 포함하고,상기 바이트 단위 로드부는 상기 원천지 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하고,상기 워드 단위 저장부는 상기 레지스터에 로드된 한 바이트의 데이터를 상기 목적지 저장 장소에 바이트 단위로 저장하는 것을 특징으로 하는 장치.
- 삭제
- 상기 제 4 항에 있어서, 상기 워드는 4 바이트, 8 바이트, 또는 하프 워드인 것을 특징으로 하는 장치.
- 상기 제 4 항에 있어서, 상기 바이트 단위 로드부는 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소부터 상기 레지스터로 로드하는 것을 특징으로 하는 장치.
- 상기 제 7 항에 있어서,상기 바이트 단위 로드부는 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소로부터 상기 레지스터로 로드하고,상기 워드 단위 저장부는 상기 레지스터에 로드된 한 바이트의 데이터를 상기 목적지 저장 장소에 바이트 단위로 저장하는 것을 특징으로 하는 장치.
- 상기 제 8 항에 있어서, 상기 워드는 4 바이트, 8 바이트, 또는 하프 워드인 것을 특징으로 하는 장치.
- 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 워드 단위로 로드하고 워드 단위로 저장하는 방법에 있어서,(a) 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 워드 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하는 단계; 및(b) 상기 레지스터에 로드된 한 워드의 데이터를, 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 워드 단위로 저장하는 단계를 포함하고,상기 (a) 단계는 상기 원천지 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하고,상기 (b) 단계는 상기 레지스터에 로드된 한 바이트의 데이터를 상기 목적지 저장 장소에 바이트 단위로 저장하는 것을 특징으로 하는 방법.
- 삭제
- 제 10 항에 있어서, 상기 워드는 4 바이트, 8 바이트, 또는 하프 워드인 것을 특징으로 하는 방법.
- 한 바이트의 데이터가 저장될 수 있는 저장 장소마다 주소가 부여된 메모리의 저장 장소간에 소정의 레지스터를 경유하여 데이터를 바이트 단위로 로드하고 워드 단위로 저장하는 방법에 있어서,(a) 상기 메모리의, 워드로 정렬되어 있지 않고 순차적으로 증가하는 다수의 원천지 주소들을 갖는 원천지 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 원천지 주소 저장 장소로부터 상기 레지스터로 로드하는 단계; 및(b) 상기 레지스터에 로드된 한 워드의 데이터를 상기 메모리의, 워드로 정렬되어 있고 순차적으로 증가하는 다수의 목적지 주소들을 갖는 목적지 저장 장소에 상기 레지스터에 로드된 데이터를 워드 단위로 저장하는 단계를 포함하고,상기 (a) 단계는 상기 원천지 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 원천지 저장 장소로부터 상기 레지스터로 로드하고,상기 (b) 단계는 상기 레지스터로 로드된 한 바이트의 데이터를 상기 목적지 저장 장소에 바이트 단위로 저장하는 것을 특징으로 하는 방법.
- 삭제
- 상기 제 13 항에 있어서, 상기 워드는 4 바이트, 8 바이트, 또는 하프 워드인 것을 특징으로 하는 방법.
- 상기 제 13 항에 있어서, 상기 (a) 단계는 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소에 한 워드 이상의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소부터 상기 레지스터로 로드하는 것을 특징으로 하는 방법.
- 상기 제 16 항에 있어서,상기 (a) 단계는 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소에 한 워드 미만의 데이터가 저장되어 있는 경우, 상기 데이터를 바이트 단위로 상기 순차적으로 증가하지 않는 다수의 원천지 주소들을 갖는 저장 장소로부터 상기 레지스터로 로드하고,상기 (b) 단계는 상기 레지스터로 로드된 한 바이트의 데이터를 상기 목적지 저장 장소에 바이트 단위로 저장하는 것을 특징으로 하는 방법.
- 상기 제 17 항에 있어서, 상기 워드는 4 바이트, 8 바이트, 또는 하프 워드인 것을 특징으로 하는 저장하는 방법.
- 제 10 항 내지 제 18 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0055641A KR100484161B1 (ko) | 2002-09-13 | 2002-09-13 | 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드단위로 저장하는 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0055641A KR100484161B1 (ko) | 2002-09-13 | 2002-09-13 | 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드단위로 저장하는 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040024126A KR20040024126A (ko) | 2004-03-20 |
KR100484161B1 true KR100484161B1 (ko) | 2005-04-19 |
Family
ID=37327401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2002-0055641A KR100484161B1 (ko) | 2002-09-13 | 2002-09-13 | 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드단위로 저장하는 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100484161B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101501717B1 (ko) * | 2014-10-29 | 2015-03-12 | 삼성전자주식회사 | 메모리 장치 및 메모리 장치의 관리 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5594923A (en) * | 1991-12-24 | 1997-01-14 | Kabushiki Kaisha Toshiba | Direct memory access controller comprising a multi-word data register for high speed continuous data transfer |
KR0124172B1 (ko) * | 1994-07-30 | 1997-12-01 | 배순훈 | 광대역 통신의 바이트/워드 변환 장치 |
KR980004967A (ko) * | 1996-06-26 | 1998-03-30 | 김광호 | 입출력 데이타의 길이 선택이 가능한 스태틱 램 장치 |
JPH10260786A (ja) * | 1997-03-21 | 1998-09-29 | Matsushita Electric Ind Co Ltd | 記憶ディスクのデータ転送回路 |
US6345334B1 (en) * | 1998-01-07 | 2002-02-05 | Nec Corporation | High speed semiconductor memory device capable of changing data sequence for burst transmission |
-
2002
- 2002-09-13 KR KR10-2002-0055641A patent/KR100484161B1/ko not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5594923A (en) * | 1991-12-24 | 1997-01-14 | Kabushiki Kaisha Toshiba | Direct memory access controller comprising a multi-word data register for high speed continuous data transfer |
KR0124172B1 (ko) * | 1994-07-30 | 1997-12-01 | 배순훈 | 광대역 통신의 바이트/워드 변환 장치 |
KR980004967A (ko) * | 1996-06-26 | 1998-03-30 | 김광호 | 입출력 데이타의 길이 선택이 가능한 스태틱 램 장치 |
KR100188123B1 (ko) * | 1996-06-26 | 1999-06-01 | 김광호 | 입출력 데이타의 길이 선택이 가능한 스태틱 램 장치 |
JPH10260786A (ja) * | 1997-03-21 | 1998-09-29 | Matsushita Electric Ind Co Ltd | 記憶ディスクのデータ転送回路 |
US6345334B1 (en) * | 1998-01-07 | 2002-02-05 | Nec Corporation | High speed semiconductor memory device capable of changing data sequence for burst transmission |
Also Published As
Publication number | Publication date |
---|---|
KR20040024126A (ko) | 2004-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11183225B2 (en) | Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size | |
KR100956970B1 (ko) | 프로세서에서의 마스킹된 저장 동작들을 위한 시스템 및방법 | |
US20080082755A1 (en) | Administering An Access Conflict In A Computer Memory Cache | |
US8046568B2 (en) | Microprocessor with integrated high speed memory | |
JP3756409B2 (ja) | データハザード検出システム | |
US7162607B2 (en) | Apparatus and method for a data storage device with a plurality of randomly located data | |
US8327122B2 (en) | Method and system for providing context switch using multiple register file | |
KR100484161B1 (ko) | 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드단위로 저장하는 장치 및 방법 | |
US6829691B2 (en) | System for compressing/decompressing data | |
US5978898A (en) | Allocating registers in a superscalar machine | |
US7577824B2 (en) | Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution | |
JP2004030224A (ja) | プロセッサ、レジスタ退避方法およびレジスタ指定方法 | |
JP2005322240A (ja) | インデックス付きレジスタアクセス用の方法および装置 | |
JP2005182538A (ja) | データ転送装置 | |
JPS62156742A (ja) | デ−タ書込み制御方式 | |
EP1163596A1 (en) | Methods and apparatus for facilitating direct memory access | |
JP2005537580A (ja) | スタックタイプのスナップショットバッファがネスト化されたインタラプトを処理すること | |
US7500088B2 (en) | Methods and apparatus for updating of a branch history table | |
US20070226453A1 (en) | Method for improving processing of relatively aligned memory references for increased reuse opportunities | |
JP7078380B2 (ja) | 命令制御装置、命令制御方法およびプログラム | |
US7080187B2 (en) | Bug segment decoder | |
JP2594140B2 (ja) | データ駆動型データ処理装置 | |
JP3522150B2 (ja) | データ処理装置およびそのデータ処理方法 | |
JPH09231347A (ja) | 画像処理装置 | |
JP2594091B2 (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 | ||
FPAY | Annual fee payment |
Payment date: 20080328 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |