KR20020060547A - 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬 - Google Patents

컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬 Download PDF

Info

Publication number
KR20020060547A
KR20020060547A KR1020010003728A KR20010003728A KR20020060547A KR 20020060547 A KR20020060547 A KR 20020060547A KR 1020010003728 A KR1020010003728 A KR 1020010003728A KR 20010003728 A KR20010003728 A KR 20010003728A KR 20020060547 A KR20020060547 A KR 20020060547A
Authority
KR
South Korea
Prior art keywords
result
operand
cache
partial
square root
Prior art date
Application number
KR1020010003728A
Other languages
English (en)
Other versions
KR100423893B1 (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 윤종용
Publication of KR20020060547A publication Critical patent/KR20020060547A/ko
Application granted granted Critical
Publication of KR100423893B1 publication Critical patent/KR100423893B1/ko

Links

Classifications

    • 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
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

Abstract

여기에 개시된 연산 장치는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬를 포함한다. 상기 캐쉬는 이전에 수행된 결과 데이터와 산술 연산을 수행하기 위한 오퍼랜드를 저장하고, 동일한 오퍼랜드가 수행되어질 경우, 해당되는 결과를 출력하고, 프로세서에 의한 처리 및 연산을 바이패스한다. 그리고, 상기 캐쉬를 구비한 상기 장치는 부분적으로 일치되는 오퍼랜드를 위해 부분적으로 결과를 출력할 수 있도록 구성된다.

Description

컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬{PARTIAL MATCHING PARTIAL OUTPUT CACHE FOR COMPUTER ARITHMETIC OPERATIONS}
본 발명은 캐쉬 메모리와 더불어 컴퓨터 산술 연산 수행하는 장치 및 방법에 관한 것으로, 좀 더 구체적으로는 부분 출력이 가능한 캐쉬 메모리를 구비한 장치 및 방법에 관한 것이다.
컴퓨터는, 곱셈, 되풀이되는 쉬프트(shift)를 통한 데이터의 조작에 의한 나눗셈, 덧셈, 그리고 뺄셈과 같은 산술 연산(arithmetic operations)을 수행한다. 결과를 도출하는 데에는 데이터의 빈번한 억세스 및 조작상의 사이클들(operational cycles)이 필요로 한다. 제곱근(square root) 연산과 같이 복잡한 연산 기능과, 삼각 함수들(trigonometry functions)을 수행하기 위한 통상적인 컴퓨팅 프로세서는, 대단히 시간 소비적인 특징을 가진다. 그리고, 상기 컴퓨팅 프로세스는 몇몇 어플리케이션들에서 적용이 용이하지 않은 문제점을 가지고 있다.
더욱 복잡한 산술 연산들 중 일부는 룩-업 테이블(look-up table)을 사용할 수 있으나, 다양한 연산들에 상기 테이블 적용하기 위해서는 상기 테이블의 크기가 충분히 커져야만 한다. 만약 수행될 연산에서 한 비트만 다르더라도, 상기 룩-업 테이블은 제 기능을 수행하지 못하게 되고, 상기 룩-업 테이블로부터 도출되는 데이터는 잘못된 것이 된다. 따라서, 정확한 결과를 얻기 위해서는 상기 연산의 모든 자리수에 대한 전체 계산이 다시 수행되어야만 한다.
복잡한 산술 연산을 수행하는 다른 방법으로는, 예를 들면, Sutcliffe에 의해 취득된 미국 특허(U. S. Pat. No. 4,734,878), "CIRCUIT FOR PERFORMING SQUARE ROOT FUNCTIONS"과 같이 전용 회로(dedicated circuitry)를 사용하는 방법이 있을 수 있다. 그러나, 전용 회로는 적은 시간을 소비하긴 하지만 추가적인 하드웨어를 필요로 할뿐만 아니라, 특정 함수를 위해서만 사용된다. Sutcliffe에 의한 상기 전용 회로는 단지 제곱근 연산만을 수행할 수 있고, 곱셈기(multiplier)는 단지 곱셈 연산 등을 위해서만 사용될 수 있다.
캐쉬 메모리(cache memory)는 고속 RAM(Random Access Memory)으로서, CPU(Central Processing Unit)는 통상의 메모리보다 캐쉬 메모리를 더 빠르게 억세스 할 수 있다. 일반적으로, 캐쉬 메모리는 CPU에 의해 빈번히 억세스 되는 데이터를 저장하는데 사용되는 메모리이다. CPU는 캐쉬 메모리로부터 억세스된 데이터를 가지고 더 많은 연산을 수행할 수 있으며, 상기 연산은 통상의 메모리로부터 억세스된 데이터를 가지고 수행되는 연산보다 더욱 빠르게 수행될 수 있다.
상기 캐쉬 메모리는 CPU에 의해 직접 억세스 되며(예컨대, 외부 메모리 관리 유닛(external memory management unit)을 거치지 않고), CPU와 캐쉬 메모리 사이의 신호 전달 시간을 줄이기 위해 물리적으로 CPU 가까운 곳에 위치한다. Alpha AXP 21064 마이크로프로세서 내의 데이터 캐쉬의 동작 설명은, 1996년, David A. Paterns와 John L. Hennessy에 의해 Morgan Kaufmann Publishers Inc.에서 출판된 "Computer Architecture A Quantitive Approach"의 380-383쪽에서 찾아볼 수 있다.CPU가 독출 또는 페치(fetch) 동작을 수행하면, 데이터(data) 또는 명령어들(instructions)이 캐쉬 내에 있는지 여부가 판별될 것이다. 데이터 또는 명령어들이 만약 캐쉬 내에 존재한다면 이들은 빠른 속도로 억세스 되고, 만약 그렇지 않다면, 데이터 또는 명령어들은 통상의 메모리(예컨대, DRAM 또는 ROM)로부터 페치되고, 더 많은 시간을 소비할 것임에 틀림없다.
도 1에는 일반적인 캐쉬가 도시되어 있다. 캐쉬 메모리(10)는, 프로세서에 의해 최근 또는 자주 억세스 된 데이터, 어드레스(address), 또는 화일들(files)을 저장하기 위한 다수 개의 버퍼들(buffers)을 구비한 캐쉬 태그(11)를 포함한다. 캐쉬 메모리(10)는, 상기 태그에 저장된 데이터와 가장 최근에 입력된 데이터를 비교하기 위한 회로를 포함한다. 도 1에 도시된 바와 같이, XOR(exclusive OR) 게이트는 캐쉬 태그(11) 내에 구비된 각 버퍼의 각각의 비트에 연관된다. 새로이 입력된 데이터가 캐쉬 태그(11) 내 버퍼들 중 하나에 저장된 데이터와 일치되는 것으로 판명되면, 실제 비교 결과(true comparison)가 15, 16 내지 19 게이트들에서 출력된다. 캐쉬 데이터(12)는 캐쉬 태그(11) 내의 각 버퍼에 대응되는 데이터를 저장하는 파일(file)이다. 대응되는 게이트들(15, 16, …, 19)로부터 받아들인 실제 비교 결과는 캐쉬 데이터(12)의 해당 위치에 있는 q4, q3, q2, …, q0으로서 출력된다. 도 1에 도시된 캐쉬는 5 비트 폭을 가진다.
캐쉬 메모리의 특성들은 고속 연산을 수행하는 연산 장치를 위한 데이터 저장 장치(data storing device)로서 유용할 것이다. 예를 들어, 도 1에 도시된 것과 같은 캐쉬 메모리는 캐쉬 태그(11)에 오퍼랜드(operands)를 저장하고, 캐쉬데이터(12)에 대응되는 연산 결과를 저장한다. 만약 앞으로 수행될 동일한 산술 연산에 관한 오퍼랜드가 캐쉬 태그(11) 내에서 발견된다면, 그 산술 연산은 바이패스(bypass)된다. 이와 같은 경우, 캐쉬는 록-업 테이블로서 사용되고, 억세스 시간은 룩-업 테이블 ROM과 비교될 만큼 줄어든다. 그러나, 룩-업 테이블 ROM의 경우에 있어서 룩-업 테이블모드에서의 캐쉬의 사용은, 오퍼랜드가 캐쉬 태그에 저장된 데이터와 정확히 일치되는 경우에만 전체 처리량을 감소시킬 수 있을 것이다. 따라서, 부분적으로 일치되는 오퍼랜드에 대한 연산 결과를 부분적으로 출력할 수 있는 연산 장치에 사용되는 캐쉬 메모리를 구비한 장치가 요구된다.
따라서, 본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로, TAG 레지스터 및 캐쉬 데이터 메모리를 구비한 캐쉬 구조 및 이를 이용한 산술 연산 수행 방법을 제공하는데 있다.
도 1은 일반적인 캐쉬 메모리를 보여주기 위한 도면;
도 2는 본 발명의 일 실시예에 의한 연산 장치를 보여주기 위한 도면;
도 3은 도 2에 도시된 장치를 이용하여 제곱근 연산을 수행하기 위한 수순을 보여주기 위한 흐름도;
도 4는 도 2에 도시된 캐쉬 메모리 내의 검출 로직의 입출력 데이터를 보여주기 위한 테이블;
도 5는 본 발명의 일 실시예에 의한 입출력 데이터에 대한 마스킹 동작을 보여주기 위한 테이블; 그리고
도 6은 본 발명의 다른 실시예에 의한 연산 장치를 보여주기 위한 도면.
*도면의 주요 부분에 대한 부호의 설명*
100 : PMPO 캐쉬 메모리21 : 캐쉬 태그
22 : 캐쉬 데이터27 : 프로세스 모듈
29 : Q' 버퍼42 : 검출 로직
43 : 선택 및 마스크 로직45 : 마스크 레지스터
48 : 버퍼61 : 피제곱근 수 분할 유닛
62, 63 : 멀티플렉서
상술한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 특징에 의하면, TAG 레지스터 및 캐쉬 데이터 메모리를 구비한 캐쉬 구조를 이용한 산술 연산 수행 방법은, 다수 개의 알려져 있는 오퍼랜드들을 TAG 레지스터에 저장하되, 상기 오퍼랜드 각각은 산술 연산으로부터 유도된 결과를 가지며, 상기 결과는 캐쉬 데이터 메모리 내의 해당 위치에 저장되는 단계와; 수행될 산술 연산에 대한 새로운 오퍼랜드를 TAG 레지스터로 입력하는 단계와; 알려져 있는 다수 개의 오퍼랜드들과 새로운 오퍼랜드를 비교하는 단계; 그리고 만약 알려져 있는 오퍼랜드들 중 새로이입력된 오퍼랜드와 일치되는 것이 있는지 여부를 판별하고, 판별 결과 일치되는 것이 있으면 새로운 오퍼랜드와 일치되는 오퍼랜드에 대응되는 결과를 캐쉬 데이터 메모리로부터 출력하는 단계를 포함한다.
바람직한 실시예에 있어서, 상기 방법은 만약 상기 판별 단계에서 일치되는 오퍼랜드가 존재하지 않으면, 알려져 있는 오퍼랜드와 새로운 오퍼랜드가 부분적으로 일치되는 것이 있는지를 판별하는 단계와; 알려져 있는 오퍼랜드 중 새로운 오퍼랜드와 일치되는 상위 비트들(MSBs)을 가진 오퍼랜드를 선택하는 단계와; 가장 많이 일치되는 상위 비트들(MSBs)을 가진 오퍼랜드에 대응되는 결과를 캐쉬 데이터 메모리로부터 억세스하는 단계와; 알려져 있는 오퍼랜드의 일치된 상위 비트들로부터 도출되어 억세스된 결과의 제 1 부분을 결정하는 단계와; 상기 제 1 부분 이외에 억세스된 결과인 제 2 부분을 마스킹하는 단계; 그리고 마스크된 결과를 제 1 부분 결과로서 제공하는 단계를 포함한다.
바람직한 실시예에 있어서, 상기 방법은 제 2 부분 결과를 발생하기 위해서, 일치된 상위 비트들 이외에 해당되는 상기 새로운 오퍼랜드의 비트에 대한 산술 연산을 수행하는 단계; 그리고 상기 제 1 부분 결과와 상기 제 2 부분 결과를 결합하여 최종 결과를 출력하는 단계를 더욱 포함한다.
바람직하게, 전술한 바와 같은 본 발명에 의한 상기 방법은 제곱근 또는 곱셈 연산과 같은 산술 연산을 수행하는 것을 특징으로 한다.
산술 연산을 수행하기 위해 제공되는 캐쉬 장치는, 각각이 산술 연산으로부터 도출된 해당 결과를 가지는, 알려져 있는 다수 개의 오퍼랜드들을 저장하기 위한 태그 레지스터들과; 상기 알려져 있는 오퍼랜드들에 대응되는 결과를 저장하기 위한 캐쉬 데이터 메모리; 그리고 수행되어질 산술 연산을 위한 새로운 오퍼랜드를 상기 알려진 다수 개의 오퍼랜드들과 비교하기 위한, 태그 레지스터 내에 구비된 비교 로직을 포함한다. 여기서, 상기 알려져 있는 오퍼랜드들 가운데 하나가 상기 새로운 오퍼랜드와 일치하면, 상기 캐쉬 데이터 메모리는 상기 새로운 오퍼랜드와 일치되는, 알려져 있는 오퍼랜드에 대응되는 알려져 있는 결과를 출력한다.
상기 캐쉬 장치는, 공통 로직 레벨(common logic level)을 가진 데이터 그룹을 검출하되, 상기 새로운 오퍼랜드의 상위 비트들(MSBs)과 일치되는 가장 많은 수의 상위 비트들(MSBs)을 가진, 알려져 있는 오퍼랜드를 검출하기 위한 로직 그룹 검출기(logic group detector)와; 가장 많이 일치된 상위 비트들(MSBs)을 가진, 알려져 있는 오퍼랜드에 대응되는 결과를 부분적으로 마스킹하되, 상기 알려져 있는 오퍼랜드의 일치된 상위 비트들(MSBs)로부터 도출된 해당 결과의 제 1 부분을 통과시키고, 상기 제 1 부분을 제외한 상기 해당 결과의 제 2 부분을 마스킹하기 위한 마스킹 로직(masking logic); 그리고 산술 유닛(arithmetic unit)으로 상기 해당 결과의 상기 제 1 부분을 멀티플렉싱하기 위한 멀티플렉서를 더욱 포함한다.
바람직한 실시예에 있어서, 본 발명에 의한 상기 캐쉬는 제 2 멀티플렉서를 더욱 포함한다. 여기서, 상기 연산 유닛은 제 2 부분 결과를 발생하기 위해서 상기 일치된 상위 비트들(MSBs)을 제외한 상기 새로운 오퍼랜드의 비트들에 대한 산술 연산을 수행하며, 상기 제 2 멀티플렉서는 상기 제 2 부분 결과를 상기 연산 유닛으로 멀티플렉싱한다. 상기 제 2 부분 결과는 상기 제 1 부분 결과와 결합되어 최종 결과를 형성한다.
(실시예)
이하 본 발명에 따른 실시예를 첨부된 도면 도 2 내지 도 6을 참조하여 상세히 설명한다.
만약 현재의 오퍼랜드(current operand)가 동일한 산술 연산이 수행되는 이전의 오퍼랜드(previous operand)와 동일하다면, 본 발명의 신규한 연산용 캐쉬(operational cache)는 이전에 수행된 산술 연산 결과를 저장하고 결과 데이터(resultant data)를 출력한다. 만일 현재 오퍼랜드가 연산용 캐시에 저장된 이전의 오퍼랜드와 부분적으로 일치한다면, 본 발명의 연산용 캐쉬는 부분적인 연산 결과 데이터를 출력한다. 본 발명에 따른 연산용 캐시를 사용한 연산 유닛의 구조 및 동작이 이하 설명된다.
도 2는 제곱근 연산을 수행하는 연산 유닛을 보여주는 도면이다. 도 2에 도시된 연산 유닛은 본 발명에 따른 부분 일치 부분 출력(partial match partial output; 이하, PMPO라 칭함) 캐쉬를 보여주고 있다. 예시된 본 발명에 따른 연산 장치는 PMPO 캐시 태그(21)와 PMPO 캐쉬 데이터(22)로 구성된 PMPO 캐쉬(100)를 포함한다. 제곱근 모듈(27)은 피제곱근 수(X)의 제곱근을 계산하기 위한 소프트웨어 또는 하드웨어이다. 이 제곱근 모듈(27)은 제곱근 연산을 수행하기 위한 프로그래밍 단계들 또는 알고리즘으로 구성된다. 제곱근 연산은 1993년, Israel Koren에 의해서 ISBN D-13-151952-2에 개재된 "Computer Arithmetic Algorithms", Chapter 7의 "Restoring Division Scheme'과 개념적으로 동일하게 제곱근을 계산하는 "완전제곱(completing the square)" 방법 등으로 수행된다. 또한, 상기 제곱근 모듈(27)은 전통적인 나눗셈 및 나머지 계산 방법에 의해 입력된 피제곱근 수의 제곱근을 계산하기 위한 회로 또는 프로그램 단계들을 포함한다. 일 예로서, 8-비트 오퍼랜드의 '나눗셈 및 나머지' 제곱근 연산을 수행하는 프로세서는 제곱근 결과를 도출하기 위해 8 사이클을 요구한다. 제곱근 결과 데이터는 Q'버퍼(29)에 집합된다. 제곱근 연산이 완료되면, 제곱근 연산 결과는 저장하기 위하여 Q'버퍼(29)에서 PMPO 캐쉬 데이터(22) 내의 D1, D2... Dn 가운데 하나로 전달된다. 피제곱근 수 X는 PMPO 캐쉬 태그(21) 내의 대응하는 버퍼(T1, T2 ... Tn)에 저장된다. 여기서, 도 2에 도시된 산술 유닛은 제곱근 연산이 수행될 새로운 입력인 피제곱근 수(X')가 PMPO 캐쉬 태그(21) 내의 대응하는 버퍼 내의 피제곱근 수(X')와 일치하는 지의 여부가 결정되면, PMPO 캐쉬 데이터(22)로부터 제곱근 Q'를 출력할 것이다. 새로운 제곱근 수의 일치 여부 판별은 캐쉬 태그(21) 내의 익스클루시브 NOR 게이트들에 의해 수행된다. 상기 익스클루시브 NOR 게이트는 새롭게 입력된 피제곱근 수(X')의 각 비트들과 완전하게 일치하는 비트들(X)을 저장하는 버퍼에 대해서 모두 '1'을 출력한다. 피제곱근 수(X')와 완전히 일치하는 피제곱근(X)을 저장한 버퍼(T1, T2, ... Tn)와 대응하는 캐쉬 데이터(22)에 저장된 데이터가 제곱근 결과(Q')로서 출력된다. 이 경우, 제곱근 결과(Q')는 캐시 데이터(22)로부터 멀티플렉서(63)를 통하여 Q'버퍼(29)로 바로 출력된다. 이와 같은 피제곱근 일치 및 Q'버퍼(29)로의 제곱근 결과(Q') 출력은 제곱근 모듈(27)의 처리를 바이패스(bypass)시킨다.
또한, 도 2에 도시된 본 발명에 따른 PMPO 캐쉬를 구비한 연산 장치는, 새로 입력된 오퍼랜드(X')와 버퍼들(T1, T2,...Tn)에 저장된 복수의 오퍼랜드(Xs)가 부분적으로 일치하는 경우, 부분 제곱근 결과를 출력할 수 있는 구성을 갖는다. 부분 출력 부분 일치(PMPO) 동작의 실시예가 도 2 내지 도 5를 참조하여 설명된다. 제곱근 연산이 수행될 새로운 오퍼랜드(X')가 입력되면(단계 410), 오퍼랜드(X')는 PMPO 캐쉬 태그(21) 내의 버퍼들(T1, T2,...Tn)에 저장된 오퍼랜드들(Xs)과 비교된다(단계 412). 이 실시예에서, 오퍼랜드와 제곱근 데이터는 각각 8 비트 즉, X'[7:0] 및 Q'[7:0]이다. 도 2에 도시된 PMPO 캐쉬는 한 실시예에 따라 도시되었지만, 이 분야에 대한 통상의 기술자들에게 있어서 오퍼랜드들의 비트 폭은 다양하게 변경될 수 있음이 자명하다. 상기 캐쉬 태그(21)의 하나의 버퍼(Tx)에 대한 익스클루시브 NOR 게이트들은 58 비트 버퍼로 구현된 검출 로직(42)과 연결된다. 상기 검출 로직(42)은 익스클루시브 NOR 버퍼 그룹 각각으로부터 출력되는 58 비트를 저장한다. 그러므로, 오퍼랜드(X')와 캐쉬 태그(21) 내의 버퍼들 가운데 어느 하나에 저장된 오퍼랜드(X)가 완전히 일치하면, 검출 로직(42)의 대응하는 회로는 58 비트 버퍼에 모두 1을 저장할 것이다. 한편, 캐쉬 태그(21)에 익스클루시브 OR 게이트들이 사용될 경우, 오퍼랜드(X')와 캐쉬 태그(21) 내의 버퍼들 가운데 어느 하나에 저장된 오퍼랜드(X)가 완전히 일치하면, 상기 검출 로직에는 모두 0이 저장되는 것은 통상의 기술자들에게 있어 자명하다. 부분적으로 일치하는 경우, 상기 검출 로직(42)은 오퍼랜드(X')의 비트들과 일치하는 캐쉬 태그(21) 내의 오퍼랜드(Xn)의 비트들에 논리 '1'을 표시한다. 단계 414에서는, 새로 입력된 오퍼랜드(X')가 캐쉬 태그(21)의 버퍼들에 저장된 복수의 오퍼랜드들(X) 가운데 하나와 완전하게 또는 부분적으로 일치하는 지의 여부가 판별된다. 선택 및 마스크 로직(43)은 검출 로직(42)으로부터의 출력 신호들(Det_1, Det_2,...Det_n)을 디코딩하기 위한 로직 회로와 완전하게 혹은 부분적으로 일치하는 지의 여부를 판단하기 위한 로직 회로를 포함한다. 부분적으로 일치하는 경우, 매치된 길이가 판별된다. 선택 및 마스크 로직(43)은 캐쉬 데이터(22)와 마스크 레지스터(45)로 인에이블 신호들을 출력한다. 검출 로직(42)으로부터의 검출 신호들(Det_1, Det_2,...Det_n) 가운데 어느 하나가 모두 1을 포함하는 경우, 오퍼랜드(X')의 완전 일치가 판별된다. 만일 완전히 또는 부분적으로도 일치하지 않다면, PMPO 캐쉬(100)는 제곱근 데이터가 없다는 것을 나타내는 신호를 출력한다. 불일치 신호는 멀티플렉서들(62, 63)로 전송되어, 새로 입력된 피제곱근 수(X')가 제곱근 모듈(27)로 입력되도록 하여, 제곱근 모듈(27)에서 피제곱근 수(X')의 노멀 제곱근 연산이 수행되도록 한다(단계 416). 제곱근 모듈(27)로부터 유도된 결과 데이터는 오퍼랜드(X')를 저장하기 위해 사용되는 캐쉬 태그(21)의 버퍼(Tx)와 대응하는 위치에 저장하기 위해서 캐쉬 데이터(22)로 전달된다(단계 418).
부분적 또는 완전히 일치하는 것으로 판별된 경우에는 완전히 일치하는 지의 여부를 알기 위해 검출 로직(42)으로부터의 검출 신호들(Det_1, Det_2,...Det_n)이 검사된다(단계 420). 완전히 일치한다면, 선택 및 마스크 로직(43)은 캐쉬 태그(21)에서 완전히 일치하는 버퍼와 대응하는 위치의 캐쉬 데이터(22)로 신호를 출력한다. 이 경우, 캐쉬 데이터(22)로부터의 출력 데이터가 마스크 레지스터(45)를 통해 제곱근 버퍼(48)로 출력되고, 이 데이터는 제곱근 연산의 결과로서 멀티플렉서(63)를 통해 Q'버퍼(29)로 전달된다(단계 422).
오퍼랜드(X')가 부분적으로 일치되는 경우, 상기 선택 및 마스크 로직(43)은 최상위 비트(MSB)부터 가장 많이 연속적으로 일치되는 검출 신호들(Det_1, Det_2,...Det_n)을 선택한다(단계 424). 상기 검출 로직(42)은 데이터(M1 ~ Mn) 가운데 가장 먼저 0이 된 다음의 데이터는 'don't care'로 한다. 도 4는 검출 로직(42)으로부터의 출력(Det_1 ~ Det_n)에 대응하는 M1 ~ Mn을 보여주고 있다. 상기 선택 및 마스크 로직(43)은 상기 신호들(Det_1, Det_2,...Det_n)을 받아들이고, 검출 로직(42)으로부터 출력되는 신호들(Det_1 ~ Det_n) 가운데 연속적으로 논리 1이 두 개인 것마다 통과(pass-through) 신호를 발생하는 마스킹 연산을 수행한다. 신호들(Det_1 ~ Det_n)의 마스크 테이블은 선택 및 마스크 로직(43)으로부터의 대응하는 마스크 입력을 입력한다. 도 4는 8 비트 마스크 데이터(Mask[7:0])를 보여주고 있다. 선택 및 마스크 로직(43)은 캐시 데이터(22)에서 가장 유사한 패턴(Det_max)에 대응하는 위치를 억세스하기 위한 인에이블 신호(En)를 출력한다. 이 패턴(Det_max)에 대응하는 마스크 데이터(Mask[7:0])는 부분 출력 유닛(45)으로 입력되어, 패턴(Det_max)에 대응하는 마스크 데이터와 캐쉬 데이터(22)로부터 독출된 데이터 출력(Qi)에 대한 AND 연산이 수행된다(단계 426).
상술한 바와 같은 프로세스가 적용된 일 예는 다음과 같다. 오퍼랜드들(100000002, 100011112, 및 101011112)은 캐쉬 태그(21)의 T1~Tn에 저장되고, 상기 오퍼랜드들에 대응하는 제곱근 결과 데이터는 캐쉬 데이터 메모리(22)의 대응되는 위치에 저장된다. 피제곱근 수(X') 100000012는 산술 장치로 입력되어 제곱근 연산이 수행된다. 상기 검출 로직(42)은 오퍼랜드들에 대응하는 신호들(11111110, 11110xxx, 및 1110XXXX)을 입력 신호들(M1~Mn)로 각각 받아들이고, 비교 결과들에 대응하는 패턴들(Det_1 ~ Det_n)로서 (11111110, 1111000, 및 11000000)을 각각 출력한다. 그러므로, 논리 '1'은 T1~Tn에 저장된 오퍼랜드와 피제곱근 수(X')의 대응하는 비트들이 일치됨을 나타내고, 논리 '0'은 대응하는 비트들이 불일치 됨을 각각 나타낸다. 여기서, 'x'는 'don't care'를 의미한다.
검출 로직(42)으로부터 발생된 패턴들(Det_1=11111110, Det_2=11110000, 및 Det_3=11000000)은 상기 선택 및 마스크 로직(43)으로 입력되고, 상기 패턴(Det_1=11111110)은 가장 유사한 패턴(Det_max)으로 선택된다. 이 패턴(11111110)은 피제곱근 수(X')의 대응하는 비트들과 최상위 비트(MSB)부터 연속적으로 가장 많이 일치하는 것이다. 도 4에 도시된 진리표를 참조하면, 선택 및 마스크 로직(43)은 패턴(11111110)에 대응하는 마스크 패턴(11100000)을 발생한다. 유사한 패턴(Dex_max) 즉, 데이터가 11111110인 패턴(Det_1)에 대응하는 결과 데이터(Qi)를 출력하기 위해 출력 인에이블 신호(En)는 데이터 캐쉬 메모리(22)로 전송된다.
부분 출력 유닛(45)은 결과 데이터(Qi)와 마스크 데이터(11100000)를 앤드 연산하고, 그 결과인 q[x:0]를 버퍼(48)에 저장한다. 앞서 설명한 바와 같이, 만일 상기 검출 로직(42)으로부터의 검출 신호들(Det_1~Det_n) 모두가 0xxxxxxx2이면, 0이 Q'버퍼(29)의 초기값으로 입력되고, 오퍼랜드(X')는 제곱근 모듈(27)로 입력된다. 이 실시예와 같은 산술 연산에서, 오퍼랜드(X')의 모든 자리들에 대한 제곱근 계산은 산술 모듈(27, 이실시예에서는 제곱근 모듈)에서 수행된다. 그리고, 만일 캐쉬 태그(21)에 저장된 오퍼랜드들(T1 ~ Tn) 가운데 하나가 피제곱근(X')과 동일하면, 즉, 검출 로직(42)으로부터 출력되는 검출 신호들(Det_1 ~ Det_n)이 (11111111)이면, 검출 신호(11111111)에 대응하는 데이터(Qi)가 캐쉬 데이터(22)로부터 결과 데이터(Q')로 출력되고, 모듈(27)은 어떤 연산이나 처리를 수행하지 않는다.
연산자 분할 유닛(61)과 제 1 및 제 2 멀티플렉서들(62, 63)을 포함하는 매개 회로는 선택 및 마스크 로직(43)에 의해 제어된다. 상기 매게 회로는 데이터를 모듈(27)과 Q'버퍼(29)로 전달한다. 상기 연산자 분할 유닛(61)은 피제곱근 수(X')의 매우 큰 불일치된 부분으로부터 부분 오퍼랜드 X''를 추출하기 위해 사용된다. 제곱근 계산에 있어서, 제곱근 결과 데이터(q[x:0])는 부분 피제곱근 수(X'')를 얻기 위해 제곱 연산된 후 입력 피제곱근 수(X')로부터 감산된 것이다(X''=X2-q2). 부분 피제곱근 수(X'')는 제곱근 연산을 수행하기 위해 모듈(27)로 입력된다. 상기 부분 결과 출력(q[X:0])은 부분 결과 데이터로서 Q'버퍼(29)로 입력된다(단계 428). 부분 피제곱근 수(X'')와 데이터(q[x:0])는 각각이 선택 마스크 로직에 의해 제어되는 멀티플렉서들(62, 63)을 통해 선택된다.
모듈(27)이 부분 입력 (X'')에 대한 제곱근 프로세스를 완료하면, 결과 데이터는 Q'버퍼(29)에 저장된 부분 결과 데이터와 결합되어 최종 제곱근 결과 데이터를 형성한다.
본 발명에 따른 부분 일치 부분 출력의 장점은 산술 연산이 빈번하게 수행되는 경우 시스템 처리량을 현저하게 감소시킬 수 있다는 것이다.
비록 이 실시예에서는 제곱근 연산을 도시하고 설명하였으나, 도 2에 도시된 장치는 이 분야에 대한 기술을 습득한 자라면 최소한의 변경을 통해 제곱근, 나눗셈, 곱셈, 삼각법 기능들 등과 같은 다른 산술 연산에도 적용될 수 있다. 제곱근 계산은 다음과 같다.
나눗셈 계산은 다음과 같다.
여기서, X=11101001, Y=K일 때, 새로운 오퍼랜드 X'가 11111011이고, Y'=K이면, 나눗셈 연산은 두 개의 연산자(X, Y)가 필요하다는 것을 제외하고는 제곱근 연산과 동일하다. 만일 새로운 오퍼랜드(Y')가 이전 오퍼랜드(Y)와 완전하게 일치하면, 상기 나눗셈은 단항 연산이므로, 나눗셈은 PMPO 캐쉬(100)에서 수행될 수 있다.
곱셈에서, Q=X*Y이고, X=11101001, Y=K, 그리고 X'=11111011, Y'=K이면, 부분 곱셈은 본 발명에 따른 PMPO 캐쉬에서 수행될 수 있다. 도 5에서 마스킹 동작은 (X xor X') 그리고 X=0000_0000인 경우에만 유효하다. 도 6은, 도 2에 도시된 장치를 변형한 것으로, 도 2에 도시된 구성 요소들과 동일한 인출 번호를 갖는 것은 동일한 동작을 수행한다. 역함수(inverse function; 61)는 부분 오퍼랜드를 추출하기 위해 X''=X'-X를 수행하고자 변형된 것이다.
이상에서, 본 발명에 따른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
이상과 같은 본 발명에 의하면, 산술 연산이 빈번하게 수행되는 경우 시스템 처리량을 현저하게 감소시킬 수 있다.

Claims (9)

  1. TAG 레지스터 및 캐쉬 데이터 메모리를 구비한 캐쉬 구조를 이용한 산술 연산 수행 방법에 있어서:
    다수 개의 알려져 있는 오퍼랜드들을 상기 TAG 레지스터에 저장하되, 상기 오퍼랜드 각각은 산술 연산으로부터 유도된 결과를 가지며, 상기 결과는 상기 캐쉬 데이터 메모리 내의 해당 위치에 저장되는 단계와;
    수행될 산술 연산에 대한 새로운 오퍼랜드를 상기 TAG 레지스터로 입력하는 단계와;
    상기 알려져 있는 다수 개의 오퍼랜드들과 상기 새로운 오퍼랜드를 비교하는 단계; 그리고
    만약 상기 알려져 있는 오퍼랜드들 중 상기 새로이 입력된 오퍼랜드와 일치되는 것이 있는지 여부를 판별하고, 판별 결과 일치되는 것이 있으면 상기 새로운 오퍼랜드와 일치되는 오퍼랜드에 대응되는 결과를 상기 캐쉬 데이터 메모리로부터 출력하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬의 산술 연산 방법.
  2. 제 1 항에 있어서,
    만약 상기 판별 단계에서 일치되는 오퍼랜드가 존재하지 않으면,
    상기 알려져 있는 오퍼랜드들과 상기 새로운 오퍼랜드가 부분적으로 일치되는 지를 판별하는 단계와;
    상기 알려져 있는 오퍼랜드 중 상기 새로운 오퍼랜드와 일치되는 상위 비트들을 가진 오퍼랜드를 선택하는 단계와;
    가장 많이 일치되는 상위 비트들을 가진 오퍼랜드에 대응되는 결과를 상기 캐쉬 데이터 메모리로부터 억세스하는 단계와;
    상기 알려져 있는 오퍼랜드의 일치된 상위 비트들로부터 도출되어 억세스된 결과의 제 1 부분을 결정하는 단계와;
    상기 제 1 부분 이외에 억세스된 결과인 제 2 부분을 마스킹 하는 단계; 그리고
    마스크된 상기 결과를 제 1 부분 결과로서 제공하는 단계를 더욱 포함하는 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬의 산술 연산 방법.
  3. 제 2 항에 있어서,
    제 2 부분 결과를 발생하기 위해서, 일치된 상기 상위 비트들 이외에 해당되는 상기 새로운 오퍼랜드의 비트에 대한 산술 연산을 수행하는 단계; 그리고
    상기 제 1 부분 결과와 상기 제 2 부분 결과를 결합하여 최종 결과를 출력하는 단계를 더욱 포함하는 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬의 산술 연산 방법.
  4. 제 1 항에 있어서,
    상기 산술 연산은 상기 새로운 오퍼랜드의 제곱근 연산인 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬의 산술 연산 방법.
  5. 제 1 항에 있어서,
    상기 산술 연산은 나눗셈이며, 여기서 상기 새로운 오퍼랜드는 제수인 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬의 산술 연산 방법.
  6. 제 1 항에 있어서,
    상기 산술 연산은 곱셈이며, 여기서 상기 새로운 오퍼랜드는 피승수인 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬의 산술 연산 방법.
  7. 제 1 항에 있어서,
    산술 연산을 수행하기 위한 캐쉬 장치에 있어서:
    각각이 산술 연산으로부터 도출된 해당 결과를 가지는, 알려져 있는 다수 개의 오퍼랜드들을 저장하기 위한 태그 레지스터들과;
    상기 알려져 있는 오퍼랜드들에 대응되는 결과를 저장하기 위한 캐쉬 데이터 메모리; 그리고
    수행되어질 산술 연산을 위한 새로운 오퍼랜드를 상기 알려진 다수 개의 오퍼랜드들과 비교하기 위한, 상기 태그 레지스터 내에 구비된 비교 로직을 포함하되,
    상기 알려져 있는 오퍼랜드들 가운데 하나가 상기 새로운 오퍼랜드와 일치하면, 상기 캐쉬 데이터 메모리는 상기 새로운 오퍼랜드와 일치되는, 알려져 있는 오퍼랜드에 대응되는 알려져 있는 결과를 출력하는 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬.
  8. 제 7 항에 있어서,
    상기 캐쉬 장치는,
    공통 로직 레벨을 가진 데이터 그룹을 검출하되, 상기 새로운 오퍼랜드의 상위 비트들과 일치되는 가장 많은 수의 상위 비트들을 가진, 알려져 있는 오퍼랜드를 검출하기 위한 로직 그룹 검출기와;
    가장 많이 일치된 상위 비트들을 가진, 알려져 있는 오퍼랜드에 대응되는 결과를 부분적으로 마스킹하되, 상기 알려져 있는 오퍼랜드의 일치된 상위 비트들로부터 도출된 해당 결과의 제 1 부분을 통과시키고, 상기 제 1 부분을 제외한 상기 해당 결과의 제 2 부분을 마스킹하기 위한 마스킹 로직; 그리고
    산술 유닛으로 상기 해당 결과의 상기 제 1 부분을 멀티플렉싱하기 위한 멀티플렉서를 더욱 포함하는 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬.
  9. 제 8 항에 있어서,
    상기 캐쉬는 제 2 멀티플렉서를 더욱 포함하되,
    상기 연산 유닛은 제 2 부분 결과를 발생하기 위해서 상기 일치된 상위 비트들을 제외한 상기 새로운 오퍼랜드의 비트들에 대한 산술 연산을 수행하며, 상기 제 2 멀티플렉서는 상기 제 2 부분 결과를 상기 연살 유닛으로 멀티플렉싱하고, 상기 제 2 부분 결과는 상기 제 1 부분 결과와 결합되어 최종 결과를 형성하는 것을 특징으로 하는 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬.
KR10-2001-0003728A 2001-01-10 2001-01-26 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬 KR100423893B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/757,789 2001-01-10
US09/757,789 US6542963B2 (en) 2001-01-10 2001-01-10 Partial match partial output cache for computer arithmetic operations

Publications (2)

Publication Number Publication Date
KR20020060547A true KR20020060547A (ko) 2002-07-18
KR100423893B1 KR100423893B1 (ko) 2004-03-24

Family

ID=25049225

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0003728A KR100423893B1 (ko) 2001-01-10 2001-01-26 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬

Country Status (7)

Country Link
US (1) US6542963B2 (ko)
EP (1) EP1223505B1 (ko)
JP (1) JP4574030B2 (ko)
KR (1) KR100423893B1 (ko)
CN (1) CN1194301C (ko)
DE (1) DE60127524T2 (ko)
TW (1) TW501026B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160012916A (ko) * 2014-07-24 2016-02-03 에이알엠 리미티드 부동 소수점 제곱근 연산 장치 및 방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108368A1 (en) * 2003-10-30 2005-05-19 Aditya Mohan Method and apparatus for representing data available in a peer-to-peer network using bloom-filters
DE102004019967B4 (de) * 2004-04-23 2014-02-13 Rohde & Schwarz Gmbh & Co. Kg Signalverarbeitungseinrichtung mit Nachverarbeitung
US9189412B2 (en) * 2013-03-07 2015-11-17 Mips Technologies, Inc. Apparatus and method for operating a processor with an operation cache
US9933841B2 (en) 2014-04-17 2018-04-03 Arm Limited Reuse of results of back-to-back micro-operations
GB2525263B (en) * 2014-04-17 2021-06-02 Advanced Risc Mach Ltd Reuse of results of back-to-back micro-operations
US10514928B2 (en) 2014-04-17 2019-12-24 Arm Limited Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result
US9817466B2 (en) 2014-04-17 2017-11-14 Arm Limited Power saving by reusing results of identical micro-operations
US9946331B2 (en) * 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. System and method to process signals having a common component
US10261911B2 (en) * 2016-09-08 2019-04-16 The Johns Hopkins University Apparatus and method for computational workflow management
US11269643B2 (en) * 2017-04-09 2022-03-08 Intel Corporation Data operations and finite state machine for machine learning via bypass of computational tasks based on frequently-used data values
JP7143866B2 (ja) 2020-03-25 2022-09-29 カシオ計算機株式会社 キャッシュ管理プログラム、サーバ、キャッシュ管理方法、および情報処理装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4734878A (en) 1985-10-31 1988-03-29 General Electric Company Circuit for performing square root functions
JP2613223B2 (ja) * 1987-09-10 1997-05-21 株式会社日立製作所 演算装置
CA2074769C (en) * 1991-08-09 2001-03-20 International Business Machines Corporation Formula processor
US5260898A (en) * 1992-03-13 1993-11-09 Sun Microsystems, Inc. Result cache for complex arithmetic units
US5828591A (en) * 1992-11-02 1998-10-27 Intel Corporation Method and apparatus for using a cache memory to store and retrieve intermediate and final results
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5845103A (en) * 1997-06-13 1998-12-01 Wisconsin Alumni Research Foundation Computer with dynamic instruction reuse
US6810474B1 (en) * 1998-03-04 2004-10-26 Hitachi, Ltd. Information processor
US6253287B1 (en) * 1998-09-09 2001-06-26 Advanced Micro Devices, Inc. Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions
US6298369B1 (en) * 1998-09-30 2001-10-02 Stmicroelectronics, Inc. High speed multiplier
US6343359B1 (en) * 1999-05-18 2002-01-29 Ip-First, L.L.C. Result forwarding cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160012916A (ko) * 2014-07-24 2016-02-03 에이알엠 리미티드 부동 소수점 제곱근 연산 장치 및 방법

Also Published As

Publication number Publication date
EP1223505A2 (en) 2002-07-17
CN1194301C (zh) 2005-03-23
JP4574030B2 (ja) 2010-11-04
US6542963B2 (en) 2003-04-01
TW501026B (en) 2002-09-01
CN1365049A (zh) 2002-08-21
KR100423893B1 (ko) 2004-03-24
JP2002229775A (ja) 2002-08-16
DE60127524T2 (de) 2008-01-31
EP1223505B1 (en) 2007-03-28
US20020120814A1 (en) 2002-08-29
EP1223505A3 (en) 2004-06-16
DE60127524D1 (de) 2007-05-10

Similar Documents

Publication Publication Date Title
US5408626A (en) One clock address pipelining in segmentation unit
JP3573755B2 (ja) 画像処理プロセッサ
US5001662A (en) Method and apparatus for multi-gauge computation
EP0754998B1 (en) An arithmetic unit
EP0755015B1 (en) Combining data values
US5381360A (en) Modulo arithmetic addressing circuit
US4466077A (en) Method and apparatus for division employing associative memory
KR100423893B1 (ko) 컴퓨터 산술 연산을 위한 부분 일치 부분 출력 캐쉬
US20050228846A1 (en) Magnitude comparator
JPH04230575A (ja) データプロセッサにおいてキーハッシングを行う方法およびその装置
JP3418460B2 (ja) 倍精度除算回路および方法
US7725522B2 (en) High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area
US4954947A (en) Instruction processor for processing branch instruction at high speed
US6941334B2 (en) Higher precision divide and square root approximations
US4837738A (en) Address boundary detector
US5867413A (en) Fast method of floating-point multiplication and accumulation
US5317531A (en) Apparatus for reducing the size of an arithmetic and logic unit necessary to practice non-restore division
Eisig et al. The design of a 64-bit integer multiplier/divider unit
US5787492A (en) Address limit check apparatus with conditional carry logic
US4870606A (en) Trigonometric function preprocessing system
US5754460A (en) Method for performing signed division
EP0772817A1 (en) EXECUTION UNIT ARCHITECTECTURE TO SUPPORT x86 INSTRUCTION SET AND x86 SEGMENTED ADDRESSING
US5644521A (en) Comparator scheme
EP0704793B1 (en) Method and circuit to compare the sum of two numbers to a third number
Delp et al. The use of the DeAnza IP6400 image processor for local window operations

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: 20130228

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140228

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150302

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170228

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180228

Year of fee payment: 15