KR102651957B1 - 숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진 - Google Patents

숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진 Download PDF

Info

Publication number
KR102651957B1
KR102651957B1 KR1020160081010A KR20160081010A KR102651957B1 KR 102651957 B1 KR102651957 B1 KR 102651957B1 KR 1020160081010 A KR1020160081010 A KR 1020160081010A KR 20160081010 A KR20160081010 A KR 20160081010A KR 102651957 B1 KR102651957 B1 KR 102651957B1
Authority
KR
South Korea
Prior art keywords
post
fine
pipe
abnormal
floating point
Prior art date
Application number
KR1020160081010A
Other languages
English (en)
Other versions
KR20170024526A (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 KR20170024526A publication Critical patent/KR20170024526A/ko
Application granted granted Critical
Publication of KR102651957B1 publication Critical patent/KR102651957B1/ko

Links

Images

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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Nonlinear Science (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)

Abstract

본 발명의 일 실시예들은 정상 범위의 경우를 핸들링 하기 위한 데이터 경로를 간소화 하는 동안, 숫자 언더플로우를 핸들링하기 위한 미세 예측 및 핸들러 엔진(handler engine)을 포함할 수 있다. 그렇게 하여, 플러쉬들(flushes)을 피하고, 의존적인 동작들이 어떻게 핸들링 되는지에 관한 스케줄러의 복잡성을 감소시킨다. 선제 미세 감지 로직부(preemptive tiny detection logic section)는 수행되는 기능 또는 동작들의 잠재적인 미세 결과를 감지할 수 있고, 부정적인 미세 지시자를 생성할 수 있다. 상기 미세 예측 및 핸들러 엔진은 후처리 모드 동안 하나 이상의 비정상 동작들을 비정규화하고 반올림할 수 있는 비정상 후처리 파이프를 더 포함할 수 있다. 스케줄 수정 로직부는 기내 동작들을 리스케줄링할 수 있다. 스케줄 수정 로직부는, 생성 동작이 미세 결과를 생성하지 않고 상기 후처리 파이프에서 미세 결과를 고정하는 것과 관련된 나머지 대기 시간을 발생하지 않을 것이라는 전제하에, 의존적인 동작들을 낙관적으로 만들 수 있다.

Description

숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진{TININESS PREDICTION AND HANDLER ENGINE FOR SMOOTH HANDLING OF NUMERIC UNDERFLOW}
본 발명은 디지털 회로에 관한 것으로, 좀 더 구체적으로, 숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진에 관한 것이다.
본 발명은 디지털 회로, 특히 부동 소수점 유닛에서 숫자 언더플로우(numeric underflow)을 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진(handler engine)에 관한 발명이다. 부동 소수점 유닛(FPUs, Floating-points units)은 다양한 수학적인 동작이 부동 소수점 숫자상에서 동작되도록 설계된다. 예를 들어 FPUs는 부동 소수점 가산기, 멀티플라이어(multiplier), 곱셈-적산 함수(multiply-accumulate function) 등을 포함할 수 있다. FPUs는 숫자 언더플로우의 문제를 처리해야 할 필요가 있다. 예를 들어, 숫자 언더플로우는 IEEE754와 같은 표준에 의해서 정의되는 일반적인 숫자 범위에 포함되지 않을 정도로 작은 결과 값이 있는 경우에 발생한다. 숫자 언더플로우가 감지되는 경우, 추가적인 단계가 일반적으로 최종 결과를 연산하기 위해서 요구된다. 또한 언더플로우는 일반적인 연산 파이프라인(typical computational pipeline)에서 상대적으로 늦게 감지될 수 있으며, 그렇게 됨에 따라 상기한 경우들을 효과적으로 핸들링하는 것이 제기된다. 언더플로우를 다루기 위해서 필요한 상기 추가적인 단계들은 중간 결과를 비정규화(denormalizing) 하는 것, 값을 반올림(rounding) 하는 것, 및 일부 마이크로 아키텍처에서의 경우 또 다시 정규화 하는 것을 수반한다. 점증적으로, 상기 단계들은 높은 주파수의 파이프라인에서 하나 이상의 단계들을 포함하는 상당히 심도있는 로직을 요구한다. 예를 들어, 미세한 것이 감지되는 경우 추가적인 프로세싱(processing)이 비정규화 및 반올림을 수행하기 위해서 필요하다. 전형적으로 미세함은 파이프 라인에서 매우 늦게 서야 정확히 결정될 수 있다.
미세함 문제가 감지되는 경우, 종속적인 동작들이 이미 스케줄되었거나 이미 진행중일 수 있다. 일반적으로 상기 종속적인 동작들은 보통의 방식으로 실행을 시작할 수 없다. 왜냐하면, 상기 종속적인 동작들은 프로듀서들이 그것들의 나머지 연산 과정들을 끝내는 것을 기다려야 하기 때문이다. 이 문제를 더 악화시키는 것은 종속의 종속(즉 손자 종속적인 동작들(grandchild dependent operations))이 또한 스케줄링되고 있는 과정에 있다는 것이다.
이 미세함 문제를 다루기 위한 하나의 접근법은 미세함을 발생시키는는 동작보다 신생인(younger)모든 동작들의 머신(machine)을 프러쉬(flush)하는 것이다. 그러나 이 접근법은 퍼포먼스 측면에서 비경제적이다. 또 다른 접근법은 복잡성을 스케줄링하는 관점에서 사소한 것이 아님에도 불구하고, 의존적 및 의존의 의존적 동작들만을 확인하여 제거하는 것이다. 또 다른 접근법은 파이프(pipe)에서 비정상적(문제가 되는)인 동작들을 다루는 데이터 경로를 가지는 것이다. 상기 접근법의 문제는 추가적인 게이트 뎁스(gate depth)가 필요하다는 것이고, 이는 미세함을 발생하는 경우들 뿐만이 아니라, 모든 숫자 상에 관한 경우에도 영향을 준다.
본 발명은 디지털 회로에 관한 것으로, 좀 더 구체적으로, 숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진에 관한 것이다.
본 발명의 실시예들은 미세 예측 및 핸들러 엔진(handler engine)을 포함할 수 있다. 미세 예측 및 핸들러 엔진은 스케줄러를 포함할 수 있다. 상기 스케줄러는 적어도 하나 이상의 부동 소수점 동작들 및 스케줄러에 결합된 기능적인 파이프를 선택하고, 선택된 적어도 하나 이상의 부동 소수점 동작들을 수신하는 스케줄 수정 로직부를 포함한다. 기능적 파이프는 적어도 하나 이상의 부동 소수점 동작들에 관련된 비정상적인 결과를 예측하는 선제 미세 감지 로직부를 포함할 수 있다. 미세 예측 및 핸들러 엔진은 기능적 파이프에 결합된 비정상 트롬본 후처리 파이프(subnormal trombone post-processing pipe)를 포함하고, 비정상 트롬본 후처리 파이프는 후처리 동안, 적어도 하나 이상의 부동 소수점 동작들을 수신한다.
본 발명의 실시예들은 숫자 언더플로우를 미세 예측 및 핸들러 엔진을 이용하여 핸들링하는 방법을 포함할 수 있다. 상기 방법은 스케줄러의 스케줄 수정 로직부에 의해서 적어도 하나 이상의 부동 소수점 동작들을 선택하는 단계를 포함할 수 있다. 상기 방법은 기능적 파이프를 이용하여, 선택된 적어도 하나 이상의 부동 소수점 동작들을 수신하는 단계를 포함할 수 있다. 상기 단계는 기능적 파이프의 선제 미세 감지 로직부에 의해서 적어도 하나 이상의 부동 소수점 동작들에 연관된 비정상적인 결과를 예측하는 단계를 포함할 수 있다. 상기 방법은 후처리 동안 비정상 트롬본 후처리 파이프에 의해서 적어도 하나 이상의 부동 소수점 동작들을 수신하는 단계를 포함할 수 있다.
본 발명의 실시예들은 모바일 장치를 포함할 수 있다. 상기 모바일 장치는 프로세서, 상기 프로세서에 결합된 디스플레이, 디스플레이 상에 표시되도록 하는 유저 인터페이스, 상기 프로세서에 결합된 미세 예측과 핸들러 엔진을 포함할 수 있다.
본 발명의 일 실시예에 따라, 미세 발생 동작들의 의존적 동작들은 정확하게 선택되고, 그에 따라 그들의 잘못된 웨이크업(incorrect wakeup)을 관리하기 위한 필요성이 제거된다. 그리고 기기 플러쉬(machine flushes)를 피하게 되고, 이는 성능 및 에너지 비용 측면에서 모두 이점을 제공한다. 추가하여, 기능적 파이프는 단순하게 유지될 수 있고, 미세 발생 동작들을 관리하기 위한 특별한 로직을 가질 필요가 없다.
본 발명의 특정 실시예의 상기한 내용 및 다른 내용들, 특징들, 및 이점들은 첨부 도면을 참조하여, 후술할 상세한 설명에서 더 명확하게 설명될 것이다. 상기 첨부 도면에서
도 1은 본 발명의 일 실시예에 따른 숫자 언더플로우를 핸들링 하기 위한 미세 예측 및 핸들러 엔진의 예시적인 블록도이다.
도 2는 본 발명의 일 실시예에 따른 숫자 언더플로우를 핸들링 하기 위한 예시적인 타이밍도이다.
도 3은 본 발명의 일 실시예에 따른 부동 소수점 유닛에서 숫자 언더플로우를 핸들링 하기 위한 기술을 설명하는 예시적인 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 부동 소수점 유닛에서 숫자 언더플로우를 핸들링 하기 위한 기술을 설명하기 위한 또 다른 예시적인 흐름도이다.
도 5 내지 도 10은 본 발명의 일 실시예에 따른 도 1의 미세 예측 및 핸들러 엔진이 포함될 수 있는 다양한 장치들의 개략도이다.
도 11은 도 1의 미세 예측 및 핸들러 엔진을 포함하는 마이크로 프로세서의 블록도이다.
이하, 본 명세서의 실시예들은 첨부된 도면들을 참조하여 상세히 설명한다. 동일한 구성들이 다른 도면에 도시되어 있더라도 동일한 참조 번호로 지정된다. 이하 설명에서는 구체적인 구성 및 구성요소는 단지 본 발명의 실시예들의 전반적인 이해를 돕기 위하여 제공된다. 따라서, 본 명세서에서 설명되고 있는 실시예들의 다양한 변형 및 수정이 본 발명의 사상과 범위를 벗어나지 않고 이루어질 수 있다는 것은 당업자에게 자명할 것이다. 또한 공지 기능 및 구성에 대한 설명은 명확성 및 간결성을 위해 생략한다. 후술되는 용어들은 본 발명에서 기능을 고려하여 정의된 용어이고 사용자, 사용자의 의도, 또는 관습과 상이할 수 있다. 따라서, 용어의 정의는 명세서의 내용에 기초하여 결정되어야 한다.
본 발명은 이하 첨부된 도면들을 참조하여 상세히 설명되는 다양한 변형 및 실시예를 가질 수 있다. 그러나 본 발명은 실시예에 한정되지 않고, 본 발명의 기술 사상 및 범위 내 모든 변경, 균등, 대체 실시예를 포함할 수 있다. 첫째, 둘째 등과 같은 서수를 포함하는 용어가 다양한 구성을 설명하기 위해 사용됨에도 불구하고, 구성 요소들은 상기 용어들에 의해서 제한되지 않는다. 예를 들어, 본 발명의 범위를 벗어나지 않으면서, 제1 구성 요소는 제2 구성 요소라고도 할 수 있다. 마찬가지로, 제2 구성 요소도 제1 구성 요소라고 할 수 있다. 본원에서 사용되는 것처럼 “및/또는”은 하나 이상이 연관된 임의의 모든 조합을 포함한다.
본 명세서에서 사용되는 용어들은 단지 다양한 실시 예를 설명하기 위해 사용되지만, 본 발명에 한정되는 것은 아니다. 단수형의 경우에는 명백하게 의도되는 경우가 아니라면, 복수형을 포함한다. 본 명세서에서 용어 “포함하다” 또는 “가지다” 특징, 숫자, 단계, 동작, 구성 요소, 부품, 또는 이들의 조합의 존재를 지칭하는 것으로 이해될 수 있고, 하나 또는 그 이상의 특징, 숫자들, 단계들, 동작들, 구성 요소들, 부품, 또는 이들의 조합들을 부가하는 가능성을 배제하는 것이 아니다.
본 명세서에서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야의 당업자에 의해서 일반적으로 이해되는 것과 동일한 의미를 갖는다.
일반적으로 사용되고 있는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술에서 문맥상 가지는 의미와 동일하게 해석되어야 하며, 이상적이거나 과도하게 형식적인 의미로 해석되지 않아야 한다.
본 발명의 일 실시예들은 정상 범위의 경우를 핸들링 하기 위한 데이터 경로를 간소화 하면서도, 숫자 언더플로우를 핸들링하기 위한 미세 예측 및 핸들러 엔진(handler engine)을 포함할 수 있다. 그렇게 하여, 플러쉬(flushes)를 피하고, 의존적인 동작들이 어떻게 핸들링 되는지에 관한 스케줄러의 복잡성을 감소시킨다. 선제 미세 감지 로직부(preemptive tiny detection logic section)는 수행중인 기능 또는 동작의 잠재적인 미세 결과를 감지할 수 있고, 부정적인 미세 지시자를 생성할 수 있다. 상기 비관부정적인 미세 지시자는 정상적인 숫자 범위 내에 피팅(fitting) 되지 않을 정도의 충분히 미세한(즉, 숫자 언더플로우) 결과를 지시한다. 상기 선제 미세 감지는 데이터 경로상에서 상대적으로 이른 시간에 발생할 수 있다. 즉, 상기 선제 미세 감지는 데이터 경로 상에서 늦게 발생하는 매우 정확한(fully accurate) 미세 감지에 비해서 상대적으로 더 이른 시간에 발생할 수 있다.
본 발명의 일 실시예에 따른, 미세 예측 및 핸들러 엔진은 비정상적인 “트롬본(trombone)” 후처리 파이프(post-processing pipe)를 더 포함할 수 있다. 예를 들어 상기 후처리 파이프는 내부 포맷(internal-format)의 미세 숫자들을 수용하고, 정확하게 반올림된 IEEE754를 따르는 결과를 생성할 수 있다. 예를 들어, 상기 후처리 파이프는 비정규화 함수 그리고 뒤따르는 반올림 함수를 지원할 수 있다. 게다가, 상기 후처리 파이프는 포맷 변화가 마이크로 아키텍쳐(micro-architecture)에 의해서 요구되지 않을 때, 숫자들을 통과시키는 기능을 수행할 수 있다. 또한 상기 후처리 파이프는 값의 수정 변경 없이, 내부 포맷의 숫자를 IEEE754 숫자로 변환할 수 있다.
본 발명의 실시예에 따른 스케줄러는 스케줄 수정 로직부를 포함할 수 있다. 상기 스케줄 수정 로직부는 선제 미세 감지 로직부에 의해서 제공되는 상기 부정적인 미세 지시자(pessimistic tiny indicator)에 반응할 수 있다. 스케줄 수정 로직부는 진행중인 동작들을 보상하기 위해 재스케줄링할 수 있다. 스케줄 수정 로직부는, 생성 동작이 미세 결과를 생성하지 않고 그리하여 상기 후처리 파이프에서 미세 결과를 교정하는 것과 관련된 추가 대기 시간(latency)을 발생하지 않을 것이라는 전제하에, 종속적인 동작들을 긍정적으로 실행할 수 있다.
도 1은 본 발명의 일 실시예에 따른 숫자 언더플로우를 핸들링 하기 위한 미세 예측 및 핸들러 엔진(100)의 예시적인 블록도이다. 미세 예측 및 핸들러 엔진(100)은 회로, 펌웨어, 하드웨어, 소프트 웨어, 또는 이들의 조합 등에 의해서 구현될 수 있다. 미세 예측 및 핸들러 엔진(100)은 스케줄러(105), 기능적 파이프(115), 비정상 트롬본 후처리 파이프(125), 및 멀티플렉서(135)와 같은 셀렉터를 포함할 수 있다. 스케줄러(105)는 스케줄 수정 로직부(110)를 포함할 수 있다. 스케줄러(105)는 기능적 파이프(115)에 결합될 수 있다. 기능적 파이프(115)는 선제 미세 감지 로직부(120)를 포함할 수 있다.
선제 미세 감지 로직부(120)는 부정적인 미세 지시자(155)를 생성하고, 상기 부정적인 미세 지시자(155)를 이하 설명할 스케줄러(105)의 스케줄 수정 로직부(110)로 전송할 수 있다. 부정적인 미세 지시자(155)는 정상적인 숫자 범위 내에 있지 않도록숫자 언더플로우 충분하게 미세한(즉, 숫자 언더플로우) 결과를 지시할 수 있다. 기능적 파이프(115)는 비정상 트롬본 후처리 파이프(125)에 결합될 수 있다. 멀티플렉서(135)는 제어 신호(145)에 응답하여, 라인(175)을 통한 기능적 파이프(115)의 출력 및 라인(170)을 통한 비정상적 트롬본 후처리 파이프(125)의 출력 중에서 하나의 출력을 선택할 수 있다.
부정적인 미세 지시자(155)는 부정적(“pessimistic”)으로 지칭될 수 있다. 왜냐하면, 잠재적인 미세 결과를 결정하는 것은 작은 양의 부정성(pessimism)을 포함하기 때문이다. 다시 말하면, 부정적인 미세 지시자(155)는 모든 미세를 발생하는 경우에서 적용될 뿐만 아니라, 추가적으로 작은 수의 미세를 발생하지 않는(non-tiny-generating) 경우에도 적용될 수 있다. 상기 부정성에 대한 페널티(penalty)는 상당히 작은 부분이다. 상기 부정적인 미세 지시자(155)가 적용되는 상기 미세를 발생하지 않는 경우는 타이밍의 함수(function of timing)로 최소화되어질 수 있다. 예를 들어, 상기 부정적인 미세 지시자(155)는, 스케줄러(105)의 스케줄 수정 로직부(110)로 주어진 시간 내에 충분하게 들어오게끔 생성되어, 스케줄 수정 로직부(110)는 종속적인 동작들의 스케줄링 결정들을 업데이트하거나 수정할 수 있다.
선제 미세 감지 로직부(120)에 관하여, 잠재적인 미세 결과는 수행중인 동작을 위해서 감지될 수 있다. 예를 들어, 부동 소수점 곱셈(multiplication) 동작에서, 선제 미세 감지 로직부(120)는 입력 피연산자(즉, opA_exp + opB_exp)의 지수들의 합을 결정한다. 만약 상기 지수들의 합이 예를 들어, IEEE754 표준에 의해 정의된 것처럼 기설정된 미세 범위 내이거나 근접한 경우, 부정적인 미세 지시자(155)는 스케줄러(105)의 스케줄 수정 로직부(110)로 전송될 수 있다.
부정적인 미세 지시자(155)가 더 정확해지기 위해서, 선제 미세 감지 로직부(120)는 합계 벡터 및 케리 벡터 의 곱(product sum vector and carry vector)의 적어도 하나 이상의 탑(가장 중요한) 비트들(최상위 비트, most significant bits)를 검사할 수 있다. 예를 들어, 3개 또는 4개의 탑 비트들이 검사될 수 있고, 이는 결과가 1에서 2 사이에 있는지, 또는 2에서 4 사이에 있는지 여부에 대해서, 높은 신뢰도로 예측을 할 수 있다. 좀 더 상세하게, 결과가 1에서 2 사이에 있는 것으로 예측되는 경우(즉, 1<= 예측된 결과<2), 지수들의 합계는 매우 정확하게 측정되었다고 볼 수 있다. 결과가 2에서 4 사이에 있는 것으로 예측되는 경우(즉, 2<= 예측된 결과<4) 더 정확한 지수들의 합계는 지수들의 합에 1을 더하는 것으로 고려될 수 있다. 둘 중 어느 하나의 경우에서도, 모두를 더하는 것(full add)을 기다릴 필요가 없으므로 연산 대기 시간은 감소될 수 있다. 이러한 보다 추측에 근거한 접근법은 스케줄러(105)가 조기에 시그널링(전송, signaling)하는 것을 허용하며, 정확한 조치가미세함 문제들을 교정하는데 선제적으로 취해질 수다. 부정적인 미세 지시자(155)는 다른 함수들 예를 들어, 곱셈-덧셈 함수들이 융합된 부동 소수점, 부동 소수점 덧셈 함수 등을 위해서 전송될 수 있다.
기능적인 파이프(115)는 라인(175)을 통한 정상적인(즉, 미세하지 않은) 동작에 관련된 정상적인 결과(130) 및/또는 라인(160)을 통한 비정상적인(미세한) 결과와 관련된 내부 포맷 결과(132)를 출력할 수 있다. 부정부정적인 미세 지시자(155)가 전송되는 경우, 후처리 모드(post-processing mode)는 시작될 수 있고(즉 스케줄러(105)가 후처리 모드를 시작하게 할 수 있다.), 스케줄러(105)의 스케줄 수정 로직부(110)는 종속적인 동작들에 대한 준비된 상태 및/또는 “선택”을 하는 것을 억제할 수 있다. 다시 말하면, 결과가 미세할 것 같다는 충분히 이른 지시자를 통해, 스케줄 수정 로직부(110)는 종속적인 동작을 선택하지 않을 것이고, 오히려 적어도 후처리 파이프(125)의 길이에 걸친 종속적인 동작을 억제할 수 있다. 추가적으로, 스케줄 수정 로직부(110)는 정상적인 결과(130)가 멀티플렉서(135)를 통과하게 하여, 라이트백(writeback) 및/또는 포워딩 스테이지(150)로 진행하게 하는 대신에, 리-라우터부(re-router)(180)가 정상적인 결과(130)를 후처리 모드에서, 라인(165)를 통해, 비정상적 트롬본 후처리 파이프(125)로 리-라우팅(re-routing)하도록 할 수 있다. 후처리 모드동안 상기 정상적 및 비정상적인 동작들의 리-라우팅은 더 간단한 제어 메커니즘을 제공하고, 상기 동작들이 질서가 있고, 시간 연관성을 갖도록 유지한다. 게다가 부정부정적인 미세 지시자(155)가 전송되는 경우, 후처리 모드가 시작되고, 비정상적 트롬본 후처리 파이프(125)는 기능적 파이프(115)로부터 직접적으로 내부 포맷 결과들(132)을 수신할 수 있다.
본 발명의 실시예에서, 존재하는 모든 동작들, 예를 들어, 정상적인 결과들(130) 및 내부 포맷 결과들(132)을 가지는 동작들이 후처리 모드 동안에 비정상적 트롬본 후처리 파이프(125)에 진입하도록 강제될 수 있다. 상기 동작들의 일부(즉, 내부 포맷 결과들(132))는 그들 자체로 후처리가 필요할 수 있다. 상기 일부를 제외한 나머지 동작들(즉 정상적인 결과들(130))은 통과 방식으로 후처리 파이프(125)를 단순히 통과할 수 있다.
이는 포워딩 및 결과-버스(result-bus) 중재 관점에서 상기 동작들 모두의 상대적인 파이프 종료 시간을 유지한다. 다시 말해서, 이는 라이트백의 재중재(re-arbitration)를 위한 필요성(need)을 막을 수 있다. 다르게 설명하면, 후처리 파이프(125)로부터 나오는 동작들은 서로 들간에 동일한 상대적인 타이밍들을 가지며, 상대적인 타이밍은 포워딩 관계들뿐만 아니라 라이트 백 관계들을 유지시킨다. 따라서, 충돌들이 일어나지 않게 보장하며, 또한 각 동작이 라이트 백 및/또는 포워딩 스테이지(150)에서 라이트 백 끼워 넣기(slot)가 보장되는 것을 보장한다. 만약 그렇지 않다면, 고립되게 빠져 나와 문제가 되는 동작은 제 때에 빠져 나올 필요가 없었던 다른 동작과 충돌할 수도 있다.
후처리 모드에서 미세-발생 동작 근처에서의 모든 동작들이 비정상 트롬본 후처리 파이프(125)를 통과하도록 요구되는 경우에는, 모든 동작들은 확장된 동작 대기 시간을 가질 것이다. 정상적인 동작들 근처에서 미세 발생 동작이 없는 경우에는(즉 후처리 모드가 아닌 경우) 상기 정상 동작은 대기 시간 페널티을 가지지 않으며, 라이트 백 및/또는 라인(175)를 통한 포워딩 스테이지(150)를 멀티플렉서(135)를 통해서 직접적으로 통과하지 않는다. 또한 후처리 모드가 보통 기기 세척보다 매우 작은 경우에는 일시적인 페널티가 발생한다.
후처리 모드에서 결과들(즉 130 및 132)을 후처리 파이프(125)로 라우팅하는 것은 미세 발생 동작이, 예를 들어 비정규화 및 반올림을 포함하는, 상기 미세 발생 동작의 후처리 단계들을 실행 가능하도록 한다. 본 발명의 일 실시예에서, 후처리 파이프(125)는 내부 포맷 미세 결과(132)에 대한 비정규화 및 반올림을 수행한다. 본 발명의 일 실시예에서는, 스케줄러(105)의 스케줄 수정 로직부(110)는 본래의 완료 주기에 맞추기 위해서 미세 발생 동작의 어떠한 종속적인 동작들도 선택하지 않는다. 그러나, 스케줄러(105)의 스케줄 수정 로직부(110)는 가까운 미래의 새로운 완료 주기(new completion cycle)에서 미세 발생 동작을 만족하기 위한 종속적인 동작들을 선택할 수 있다.
미세 예측 및 핸들러 엔진(110)은 후처리 모드로부터 자동적으로 회복할 수 있다. 반대로 회복 없이, 모든 미래의 동작들을 수행하는 것은 후처리 파이프(125)의 추가적인 대기 시간을 가질 수 있다. 본 발명의 다양한 실시예에 따른 서로 다른 접근법들은 후처리 모드로부터의 회복을 위해 고려될 수 있다.
본 발명의 일 실시예에서, 스케줄러(105)의 스케줄 수정 로직부(110)는 적용된 부정부정적인 미세 지시자(155)(규칙적인 라이트백을 턴오프하는 것)에 응답하여 후처리 모드 동안 동작들 모두를 선택하는 것을 중단하고, 기능적 파이프(115) 및 비정상 트롬본 포스트 파이프(125)가 모든 진행중인 (in-flight) 동작들(모든 정상 동작들 및 미세 발생 동작들)을 비울 수 있도록 기다리고, 그리고 규칙적인 라이트 백을 동작시킨 후, 비후처리 모드(non-post-processing mode)에서 기능적 파이프(115)에 맞서는 동작들의 스케줄링을 시작할 수 있다.
본 발명의 다른 일 실시예에서, 스케줄러(105)의 스케줄 수정 로직부(110)는, 동작 실행에 있어서 충분한 소강 상태(lull)(적어도 하나 이상의 버블들)가 스케줄러(105)가 후처리 파이프(125)으로부터 정상적인 라이트 백 및/또는 포워딩 스테이지(150)로 파이프 출구 라우팅을 스위칭하는 것을 허용할 때까지, 기능적 파이프(115)에 대한 동작들을 선택하는 것을 계속할 수 있고, 정상적인 결과들(130) 및 내부 포맷 결과들(132)을 가지는 동작들을 포함하는 기능적 파이프(115)로부터의 모든 결과를 비정상 트롬본 후처리 파이프(125)에 라우팅하는 것을 계속할 수 있다. 본 발명의 일 실시예에서, 상기 소강 상태는 자연스럽게 발생하는 적어도 하나 이상의 타임 버블(time bubbles)에 연관될 수 있다. 자연스러운 버블이 자주 일어나는 동안, 더 긴 대기시간을 갖는 후처리 모드(post-processing higher-latency mode)에서 더 긴 시간 동안 동작해야 하는 일부 위험이 존재하기 때문에 기간이 길어질수록, 상기 타임 버블은 더 공격적이다. 본 발명의 실시예에서, 상기 소강 상태는 인위적으로 소강 상태를 생성하기 위한 하나 이상의 포스드 타임 버블(forced time bubbles)에 연관될 수 있고, 상기 포스드(forced) 타임 버블은 곧바로 후처리 모드로부터 잠재적으로 벗어날 수 있다는 장점을 가진다. 다시 말해서, 스케줄 수정 로직부(110)은 의도적으로 타임 버블을 투입할 수 있다.
본 발명의 실시예에서, 버블은 주어진 기간동안 동작이 없는 것을 의미할 수 있다. 버블은 미세 문제가 감지되었거나 예견되기 전에 기내에 이미 존재하였던 동작들 및 상기 미세 문제가 해결된 후(즉 후처리 모드에서 비후처리 모드로 되돌아간 후)에 일어날 동작들을 분리할 수 있다. 소강 상태 후(즉 더 이상이 동작들이 기능적 파이프(115) 및 후처리 파이프(125)에 남아있지 않는 경우), 미세 예측 및 핸들러 엔진(100)은 후처리 모드를 비후처리 모두로 변경할 수 있고, 라인(175)을 통해 낮은 레이턴시 정상 경로(lower latency normal path)로 돌아갈 수 있다.
미세 예측 및 핸들러 엔진(100)은 기기 플러쉬를 피하는 동안에 부동 소수점 숫자 언더플로우 케이스를 핸들링할 수 있다. 인파이프 로직 뎁스(in-pipe logic depth)가 역동적으로 퍼 오퍼레이션 베이시스(per operation basis)에 적용될 수 있다. 다시 말하면, 후처리 파이프(125)는 고정된 로직 뎁스인 동안, 동작들을 후처리 파이프(125)로 보낼것인지 여부는 부정적인 미시 지시자(155)에 근거한 중요한 결정일 수 있다. 이는 로직 뎁스 페널티가 모든 동작들에 적용되는 전통적인 기술과는 대비된다. 본 발명의 일 실시예에 따라, 미세 발생 동작들의 의존적 동작들은 정확하게 선택되고, 그에 따라 그들의 잘못된 웨이크업(incorrect wakeup)을 관리하기 위한 필요성이 제거된다.(즉 인파이프 또는 기내에서 그것들을 제거한다.) 기기 플러쉬를 피하게 되고, 이는 성능 및 에너지 비용 측면에서 모두 이점을 제공한다. 추가하여, 기능적 파이프(115)는 단순하게 유지될 수 있고, 미세 발생 동작들을 관리하기 위한 특별한 로직을 가질 필요가 없다.(효과부분)
도 2는 본 발명의 일 실시예에 따른 숫자 언더플로우를 핸들링 하기 위한 예시적인 타이밍도이다. 도 2에서는 다양한 동작들(즉 op0, op1, op2, 및 op3)의 다양한 단계(즉, opV_frf, opV_fx1, opV_fx6, opV_fwb, opV_ft1 등)가 도시된다. 본 발명의 일 예에서 사용되는 동작들의 개수가 4개일 동안 적합한 몇 가지의 동작들이 연관될 수 있음은 자명할 것이다. 추가하여, 동작의 단계는 상기 설명한 것에 한정될 필요는 없다.
스케줄러(105, 도 1에 도시됨)는 스케줄링 동작(즉, op0, op1, op2, 및 op3)을 단계(opV_frf)에서 시작할 수 있다. 본 발명의 일 예에서, 구간(205)에 도시된 동작(op0) 및 시간(T0)은 정상적(즉 미세하지 않은) 결과를 발생할 것이다. 구간(210)에 도시된 동작(op1) 및 시간(T1)은 비정상(미세한) 결과를 발생할 것이고, 이는 부정적 미세 지시자를 트리거(trigger)할 것이고, 이에 대해서 이하 설명한다. 구간(215)에 도시된 동작들(op2 및 op3) 및 시간(T2 및 T3)은 각각 정상 결과 및 비정상 결과 중 어는 하나의 결과를 가질 것이고, 동작(op1)을 따라서 비정상 트롬본 후처리 파이프(125, 도 1에 도시됨)를 통과할 것이다. 어떤 동작들이 정상 또는 비정상 결과를 발생하는지에 대한 가정은 하나의 예일 수 있는 것과 다른 경우에는 정상 또는 비정상 결과들을 가지는 상기 동작들은 서로 다를 수 있다는 것은 자명할 것이다.
시간(T4)에서 시간(T7)까지 대응되는 구간(220)에서, 스케줄러(105, 도 1에 도시됨)은 실행하기 위한 동작들을 선택하는 것을 계속할 수 있다. 기능적 파이프(115, 도 1에 도시됨)는 시간(T1)에서 시간(T4)까지의 단계(opV_fx1) 및 시간(T6)에서 시간(T9)까지의 단계(opV_fx6)에 도시된 바와 같이 동작들(즉 op1, op2, op3, 및 op4)을 받아들이고 처리할 수 있다. 라이트백 및/또는 포워딩 단계(150, 도 1에 도시됨)는 도 2에 도시된 단계(opV_fwb)에 대응할 수 있다. 예를 들어, 정상 동작(op0)은 시간(T7)에서 라이트백에 들어갈 수 있고, 동작(op1)은 시간(T11)에서 라이트백에 들어갈 수 있다.
구간(225)에서 기능적 파이프(115, 도 1에 도시됨)의 선제 미세 감지 로직부(120, 도 1에 도시됨)는 동작(op1)과 관련된 비정상(미세) 결과를 예측할 수 있다. 단계(fwbm3)의 시간(T5)에서, 선제 미세 감지 로직부(120)는 부정적인 미세 지시자(155)를 생성할 수 있고, 이는 스케줄러(105, 도 1에 도시됨)로 전송될 수 있다. 부정적인 미세 지시자(155)에 응답하여, 스케줄러(105)의 스케줄 수정 로직부(110, 도 1에 도시됨)는 시간(T8)에서 시간(T10)까지의 구간(230)에 도시된 바와 같이 스케줄링(즉 버블을 투입하거나, 자연적인 버블을 기다리는 것)을 할 수 있다. 결과적으로 라이트백 및/또는 포워딩 단계(150, 도 1에 도시됨)는 구간(235)에 도시된 바와 같이 대응되는 타임 슬롯들의 개수에 의해서 지연될 수 있다. 이에 따라, 동작(op1)은 시간(T8)이 아닌 시간(T11)에서 라이트백 및/또는 포워딩 스테이지(150)에 들어간다.
한편, 비정상 트롬본 후처리 파이프(125) 단계(opV_ft1)에서 시간(T8, T9, 및 T10) 각각의 동작들(op1, op2, 및 op3)을 처리할 수 있다. 상기 처리 과정은 전술한 바대로 비정규화 및 반올림을 포함할 수 있다. 비정상 트롬본 후처리 파이프(125)는 구간(240)에 도시된 바와 같이, 시간(T8)에서 스케줄러(150)에 의해서 사용될 수 있고, 미세 예측 및 핸들러 엔진(100)이 후처리 모드에 들어가도록 할 수 있다. 스케줄러(150)은 또한 비정상 트롬본 후처리 파이프(125) 사용가능한 후, 후처리 모드동안 리라우터부(180, 도 1에 도시됨)가 정상 결과들(130, 도 1에 도시됨)을 비정상 트롬본 후처리 파이프(125)로 리라우팅 하도록 할 수 있다. 이 방법으로, 모든 동작들(op1, op2, 및 op3 등)은 후처리 모드 동안에 비정상 트롬본 후처리 파이프(125)로 라우팅될 수 있다. 스케줄러(105)의 스케줄 수정 로직부(110)은 부정적인 미세 지시자(1550)에 응답하여, 구간(230)에 도시된 바와 같이 적어도 하나의 타임 버블을 야기할 수 있다. 비정상 트롬본 후처리 파이프(125)는 구간(230)(즉 시간 T8, T9, 및 T10)에 도시된 하나 이상의 타임 버블에 대응하는 타임 슬롯들 동안에 적어도 하나 이상의 정상 결과들 및 하나 이상의 내부 포맷 결과들(즉, op1, op2, 및 op3)을 처리할 수 있다.
동작들(op2, op3 등)이 구간(245)에 도시된 독립적인 트롬본 요구들(independent trombone requests)을 만드는 것이 가능하다. 예를 들어, 스케줄 수정 로직부(110)는 상기 동작들 각각에 대하여 하나 이상의 부가적인 부정적인 미세 지시자(155)가 발생되도록 할 수 있다. 이 경우, 트롬본 길이(trombone length)는 변경될 필요가 없다. 구간(250)에 도시된 바와 같이, 트롬본은 스케줄러(150)에 의해서 시간(T18)에서 철회될 수 있다. 스케줄 수정 로직부(110)은 구간(255), 시간(T11) 등에서 선택되거나 투입될 수 있는 새로운 동작을 생성할 수 있다.
도 3은 본 발명의 일 실시예에 따른 부동 소수점 유닛에서 숫자 언더플로우를 핸들링 하기 위한 기술을 설명하는 예시적인 흐름도이다. 구간(305)에서 스케줄러의 스케줄 수정 로직부는 하나 이상의 부동 소수점 동작들을 선택한다. 구간(310)에서 기능적 파이프는 선택된 하나 이상의 부동 소수점 동작들을 수신한다. 구간(315)에서 기능적 파이프의 선제 미세 감지 로직부는 하나 이상의 부동 소수점 동작들에 연관된 비정상 결과를 예측한다. 구간(320)에서 미세 예측 및 핸들러 엔진이 후처리 모드에 있는지 여부를 결정할 수 있다. 만약 미세 예측 및 핸들러 엔진이 후처리 모드에 있지 않는 경우, 하나 이상의 정상 동작들이 구간(325)에서 라이트백 에 의해서 수신된다.
반대로, 즉 미세 예측 및 핸들러 엔진이 후처리 모드에 있는 경우, 구간(330)에서 비정상 트롬본 후처리 파이프는 하나 이상의 결과들 및 하나 이상의 내부 포맷 결과를 수신한다. 구간(335)에서 비정상 트롬본 후처리 파이프는 하나 이상의 내부 포맷 결과들을 비정규화하고 반올림한다. 구간(340)에서 하나 이상의 동작들은 라이트백 스테이지에 의해서 수신된다.
도 4는 본 발명의 일 실시예에 따른 부동 소수점 유닛에서 숫자 언더플로우를 핸들링 하기 위한 기술을 설명하기 위한 또 다른 예시적인 흐름도이다. 구간(405)에서 하나 이상의 부동 소수점 동작들에 연관된 비정상 결과를 예측하는 것에 응답하여 기능적 파이프의 선제 감지 로직부는 부정적인 미세 지시자를 생성한다. 구간(410)에서 스케줄러의 스케줄 수정 로직부는 기능적 파이프의 선제 미세 감지 로직부로부터 부정적인 미세 지시자를 수신한다. 구간(415)에서 스케줄러의 스케줄 수정 로직부는 부정적인 미세 지시자에 응답하여 후처리 모드를 시작한다. 구간(420)에서 스케줄러의 스케줄 수정 로직부는 부정적인 미세 지시자에 응답하여 하나 이상의 타임 버블을 생성한다. 구간(425)에서 스케줄러의 스케줄 수정 로직부는 부정적인 미세 지시자에 응답하는 시간 동안 하나 이상의 부동 소수점 동작들에 의존하는 하나 이상의 의존적 동작들을 선택하는 것을 억제한다. 본 발명의 일 실시예에서, 버블 투입 및 선택 억제의 조합이 사용될 수 있다. 미세 예측이 없는 경우에는 구간(420)에서의 버블 투입 및 구간(425)에서의 선택 억제는 모두 수행되지 않는다.
도 3 및 도 4에 도시된 단계들은 설명된 순서에 의해서 발생될 필요가 없으며, 오히려 다른 순서 및/또는 중간 단계들에 의해서 발생할 수 있다.
도 5 내지 도 10은 본 발명의 일 실시예에 따른 도 1의 미세 예측 및 핸들러 엔진이 포함될 수 있는 다양한 장치들의 개략도이다.
예를 들어, 도 5에 도시된 바와 같이, 스마트폰(515)은 전술한 미세 예측 및 핸들러 엔진(100)을 포함할 수 있다. 유사하게, 도 6에 도시된 태블릿(615), 도 7에 도시된 노트북 컴퓨터(715), 도 8에 도시된 모바일 폰(815), 도 9에 도시된 카메라(915), 및 도 10에 도시된 데스크탑 컴퓨터(1015)는 전술한 미세 예측 및 핸들러 엔진(100)을 포함할 수 있다. 적합한 모든 장치는 전술한 미세 예측 및 핸들러 엔진(100)을 포함하거나, 미세 예측 및 핸들러 엔진(100)으로 동작된다.
도 11은 도 1의 미세 예측 및 핸들러 엔진을 포함하는 마이크로 프로세서의 블록도이다. 마이크로 프로세서(1105)는 프로세서 코어(1110)를 포함할 수 있다. 마이크로 프로세서(1105)는 네트워크 인터페이스(1115), 하나 이상의 주변 장치들(미도시)를 구비한 인터페이스(1120), 시스템 메모리 인터페이스(1125), 및/또는 하나 이상의 다른 프로세서들(미도시)를 구비한 인터페이스(1130)을 포함할 수 있다. 프로세서 코어(1110)은 L1(Level1) 캐쉬 1135를 포함할 수 있다. L1 캐쉬 1135는 버스(1140)에 결합되고 접속될 수 있다. 프로세서 코어(1110)는 MMU(1145, memory management unit) 및 로드 스토어 유닛(1150)을 포함할 수 있고, 이들은 L1 캐쉬 1135에 결합될 수 있다. 하나 이상의 버퍼들(1155)는 MMU(1145) 및/또는 로드 스토어 유닛(1150)에 결합될 수 있다. 하나 이상의 버퍼들(1155)는 하나 이상의 하이어 레벨 캐쉬(미도시, higher level caches)에 접속될 수 있다.
마이크로 프로세서(1105)의 프로세서 코어(1110)은 페치 로직(1160, fetch logic), 지시 캐쉬(1165), 디코드 유닛(1170), 및 LS 스케줄러(1175)를 더 포함할 수 있다. 페치 로직(1160)은 지시 캐쉬(1165)에 접속될 수 있다. 지시 캐쉬(1165)는 디코드 유닛(1170)에 접속될 수 있다. 디코드 유닛(1170)은 LS 스케줄러(1175)에 접속될 수 있다. LS 스케줄러(1175)는 로드 스토어 유닛(1150) 및 하나 이상의 실행 유닛들(1180)에 결합될 수 있다. 하나 이상의 실행 유닛(1180)은 버스(1140)에 결합되고, 접속될 수 있다. 하나 이상의 실행 유닛(1180)은 전술한 미세 예측 및 핸들러 엔진(100)을 포함할 수 있다.
본 발명의 일 실시예에서, 미세 예측 및 핸들러 엔진은 하나 이상의 부동 소수점 동작들을 선택하는 스케줄 수정 로직부를 포함하는 스케줄러 및 스케줄러에 결합되고, 선택된 하나 이상의 부동 소수점 동작들을 수신하는 기능적 파이프를 포함할 수 있다. 기능적 파이프는 하나 이상의 부동 소수점 동작들에 연관된 비정상 결과를 예측하는 선제 미세 감지부를 포함할 수 있다. 미세 예측 및 핸들러 엔진은 기능적 파이프에 결합된 비정상 트롬본 후처리 파이프를 더 포함할 수 있고, 기능적 파이프는 후처리 모드에서 하나 이상의 부동 소수점 동작들을 수신할 수 있다.
본 발명의 일 실시예에서, 기능적 파이프의 선제 미세 감지 로직부는, 하나 이상의 부동 소수점 동작들에 연관된 비정상 결과를 예측하는 것에 응답하여 부정적인 미세 지시자를 생성한다. 본 발명의 일 실시예에서, 스케줄러의 스케줄 수정 로직부는 기능적 파이프의 선제 미세 감지 로직부로부터 부정적인 미세 지시자를 수신하고, 부정적인 미세 지시자에 응답하여 후처리 모드가 시작한다.
본 발명의 일 실시예에서, 스케줄러의 스케줄 수정 로직부는 부정적인 미세 지시자에 응답하여 하나 이상의 타임 버블을 생성한다. 본 발명의 일 실시예에서, 스케줄러의 스케줄 수정 로직부는 부정적인 미세 지시자에 응답하는 시간 동안 하나 이상의 부동 소수점 동작들에 의존하는 하나 이상의 의존적 동작들을 선택하는 것을 억제한다.
본 발명의 일 실시예에서, 기능적 파이프는 하나 이상의 부동 소수점 동작들에 연관된 하나 이상의 정상 결과들 및 하나 이상의 부동 소수점 동작들에 연관된 내부 포맷 결과들을 생성한다. 본 발명의 일 실시예에서, 비정상 트롬본 후처리 파이프는 후처리 모드 동안 하나 이상의 정상 결과들 및 하나 이상의 내부 포맷 결과들을 수신한다.
미세 예측 및 핸들러 엔진은 후처리 모드가 시작되는 것에 응답하여 하나 이상의 정상 결과들을 비정상 트롬본 후처리 파이프로 리라우팅하는 리라우터부를 더 포함할 수 있다.
미세 예측 및 핸들러 엔진은 리라우터부의 출력 및 비정상 트롬본 후처리 파이프의 출력과 결합되고, 리라우터부의 출력 및 비정상 트롬본 후처리 파이프의 출력 중 하나의 출력을 선택하고, 선택된 출력을 라이트백 스테이지로 전송하는 멀티플렉서를 더 포함할 수 있다.
본 발명의 일 실시예에서, 비정상 트롬본 후처리 파이프는 후처리 모드 동안 하나 이상의 내부 포맷 결과들을 비정규화 및 반올림한다. 본 발명의 일 실시예에서, 리라우터부는 후처리 모드가 아닌 동안에는 하나 이상의 정상 결과들을 비정상 트롬본 후처리 라우터로 리라우팅하지 않는다.
본 발명의 일 실시예에서, 비정상 결과는 예측된 미세 결과이고, 선제 미세 감지 로직부는 하나 이상의 부동 소수점 동작들에 연관된 예측된 미세 결과에 응답하여, 부정적인 미세 지시자를 생성한다.
본 발명의 일 실시예에서, 스케줄러의 스케줄 수정 로직부는 부정적인 미세 지시자에 응답하여, 하나 이상의 타임 버블을 생성하고, 비정상 트롬본 후처리 파이프는 하나 이상의 내부 포맷 결과를 처리하고, 하나 이상의 타임 버블에 대응하는 타임 슬롯들 동안 하나 이상의 정상 결과를 전달한다.
본 발명의 일 실시예에서, 비정상 트롬본 후처리 파이프는 하나 이상의 타임 버블에 대응하는 타임 슬롯들 동안 하나 이상의 내부 포맷 결과들을 비정규화 및 반올림한다.
본 발명의 일 실시예는 미세 예측 및 핸들러 엔진을 이용한 숫자 언더플로우를 핸들링 하는 방법을 포함한다. 상기 방법은 스케줄러의 스케줄 수정 로직부에 의해서 하나 이상의 부동 소수점 동작들을 선택하는 단계를 포함한다. 상기 방법은 기능적 파이프에 의해서, 선택된 하나 이상의 부동 소수점 동작들을 수신하는 단계를 포함한다. 상기 방법은 기능적 파이프의 선제 미세 감지 로직부에 의해서 하나 이상의 부동 소수점 동작들에 연관된 비정상 결과를 예측하는 단계를 포함한다. 상기 방법은 비정상 트롬본 후처리 파이프에 의해서, 후처리 모드 동안 하나 이상의 부동 소수점 동작들을 수신하는 단계를 포함한다.
상기 방법은 기능적 파이프의 선제 미세 감지 로직부에 의해서 하나 이상의 부동 소수점 동작들에 관련된 비정상 결과를 예측하는 것에 대응하여 부정적인 미세 지시자를 생성하는 단계를 포함한다. 상기 방법은 스케줄러의 스케줄 수정 로직부에 의해서, 기능적 파이프의 선제 미세 감지 로직부로부터 부정적인 미세 지시자를 수신하는 단계를 포함한다. 상기 방법은 스케줄러의 스케줄 수정 로직부에 의해서 미세 지시자에 응답하여 후처리 모드를 시작하는 단계를 포함한다.
본 발명의 일 실시예에서, 상기 방법은 스케줄러의 스케줄 수정 로직부에 의해서 부정적인 미세 지시자에 응답하여, 하나 이상의 타임 버블을 생성하는 단계를 포함한다. 상기 방법은 스케줄러의 스케줄 수정 로직부에 의해서 부정적인 미세 지시자에 응답하는 시간동안 하나 이상의 부동 소수점들에 의존하는 하나 이상의 의존적인 동작들을 선택하는 것을 억제하는 단계를 포함한다. 상기 단계는 기능적 파이프에 의해서, 하나 이상의 부동 소수점 동작들에 연관된 하나 이상의 정상 결과들 및 하나 이상의 부동 소수점 동작들에 연관된 하나 이상의 내부 포맷 결과들을 발생하는 단계를 포함한다. 상기 방법은 리라우터부에 의해서, 후처리 모드가 시작되는 것에 응답하여, 하나 이상의 비정상 결과들을 비정상 트롬본 후처리 파이프에 리라우팅하는 단계를 포함한다. 상기 방법은 비정상 트롬본 후처리 파이프에 의해서, 후처리 모드 동안 하나 이상의 비정상 결과들 및 하나 이상의 내부 포맷 결과들을 수신하는 단계를 포함한다.
본 발명의 일 실시예에서, 상기 방법은 비정상 트롬본 후처리 파이프에 의해서, 후처리 모드 동안 하나 이상의 내부 포맷 결과들을 비정규화하는 단계를 포함한다. 상기 단계는 비정상 트롬본 후처리 파이프에 의해서, 후처리 모드 동안 하나 이상의 내부 포맷 결과들을 반올림하는 단계를 포함한다. 상기 방법은 멀티플렉서에 의해서, 리라우터부의 출력 및 비정상 트롬본 후처리 파이프의 출력 중 어느 하나를 선택하는 단계를 포함한다. 상기 방법은 멀티플렉서에 의해서, 선택된 출력을 라이트백 스테이지로 전송하는 단계를 포함한다. 상기 방법은 스케줄러의 스케줄 수정 로직부에 의해서 부정적인 미세 지시사에 대응하여 하나 이상의 타임 버블을 생성하는 단계를 포함한다. 상기 방법은 비정상 트롬본 후처리 파이프에 의해서, 하나 이상의 타임 버블에 대응하는 타임 슬롯들 동안 하나 이상의 내부 포맷 결과들을 처리하는 단계를 포함한다. 상기 방법은 비정상 트롬본 후처리 파이프에 의해서 하나 이상의 정상 결과들을 전달하는 단계를 포함한다.
본 발명의 일 실시예는 모바일 장치를 포함할 수 있다. 모바일 장치는 프로세서, 프로세서에 결합된 디스플레이, 디스플레이 상에 표시되는 사용자 인터페이스, 및 프로세서에 결합된 미세 예측 및 핸들러 엔진을 포함할 수 있다.
이하 논의될 내용은 적합한 기기 및 기기들에 대한 상세하고 일반적인 설명에 대한 내용이고, 상기 기기 및 기기들에서 본 발명의 특정한 면이 구현될 수 있다. 전형적으로 기기 또는 기기들은 프로세서들에 부착된 시스템 버스, 메모리(즉 RAM,, ROM, 또는 다른 상태의 보존 매치(other state preserving medium), 저장 장치, 비디오 인터페이스, 및 입/출력 인터페이스 포트들을 포함한다. 기기 또는 기기들은 키보드, 마이크 등의 전통적인 입력 장치들로부터의 입력에 뿐만 아니라 또다른 기기로부터 수신된 지시들, VR(virtual reality)을 구비한 상호작용 환경, 생체 피드백(biometric feedback), 또는 다른 입력 신호에 의해서 적어도 부분적으로 제어될 수 있다. 본 명세서에서 사용되는 “기기”는 넓게 단일 기기, 상호 기기(virtual machine), 또는 통신 결합된 기기들의 시스템, 상호 기기들, 또는 함께 동작하는 장치까지 광범위하게 포함한다. 대표적인 기기들은 퍼스널 컴퓨터들,(personal computers), 워크 스테이션들(workstations), 서버들(servers), 포터블 컴퓨터들(portable computers), 핸드헬드 장치들(handheld devices), 텔레폰들(telephones), 테블릿들(tablets) 등의 연산 장치 뿐만 아니라 개인 또는 공공 전송수단(즉 자동차들, 기차들, 택시들 등)의 전송수단 장치들(transporation devices)을 포함한다.
기기 또는 기기들은 프로그램 작동이 가능하거나 가능하지 않은 로직 장치들 또는 배열들과 같은 임베디드(embedded) 제어기들, ASICs(Application Specific Integrated Circuits), 임베디드 컴퓨터들, 스마트 카드들을 포함할 수 있다. 기기 또는 기기들은 하나 이상의 연결들(connections)을 네트워크를 통한 인터페이스(through a network interface), 모뎀, 또는 다른 통신 결합 기기(communicative coupling)과 같은 하나 이상의 원격 기기에 사용할 수 있다. 기기들은 물리적 및/또는 이트라넷, 인터넷, 로컬 에어리어 네트웍스(local area networks), 와이드 에어리어 네트웍스(wide area networks) 등과 같은 논리적 네트워크의 방법으로 상호 연결될 수 있다. 당업자는 네트워크 통신은 다양한 유선 및/또는 무선 근거리 또는 장거리 케리어들 및 프로토콜들(RF(radio frequency), 위성, 마이크로웨이브, IEEE 545.11 블루투스, 광학, 적외선, 케이블, 레이저 등)을 사용할 수 있다.
본 발명의 일 실시예는 참조자료 또는 함수들, 순서들(procedures), 데이터 구조들, 어플리케이션 프로그램들 등을 포함하는 연관된 데이터와 함께 설명될 수 있다. 상기 참조자료 및 데이터는 기기에 의해서 접근되는 경우 업무를 수행하거나, 추상적인 데이터 유형들 또는 낮은 레벨의 하드웨어 콘텍스트들(contexts)을 정의하는 기기에서의 결과값들이다. 예를 들어, 관련된 데이터는 휘발성 및/또는 비 휘발성 메모리(RAM, ROM 또는 다른 저장 장치들 및 그들의 관련된 저장 매체(하드 드라이버들, 플로피 디스크들, 광학 스토리지(optical storage), 테이프들, 플래쉬 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지(biological storage) 등에 저장될 수 있다. 관련된 데이터는 물리적 및/또는 논리적 네트워크, 패킷 형태, 시리얼 데이터, 평행 데이터(parallel date), 전파 통신 등을 포함하는 전송 환경을 통해 전송될 수 있고, 압축 또는 암호화된 포맷으로 사용될 수 있다. 관련된 데이터는 분산 환경(distributed environment)에서 사용될 수 있고, 기기 접속을 위해서 근거리 및/또는 원거리에 저장될 수 있다.
실시예들을 설명하기 위한 참조자료를 통해 본 발명의 일 실시예의 원리들을 설명함으로써, 상기 원리들을 벗어나지 않고 상기 설명한 실시예들은 질서있게 상세히 수정될 수 있고 바람직한 모든 방식으로 결합될 수 있다. 그리고 전술한 논의는 특별한 실시예에만 조명된 것임에도 불구하고, 다른 구성들이 고려될 수 있다.
본 발명의 실시예들은 하나 이상의 프로세서들에 의해서 실행가능한 지시들 및 본 명세서에서 설명하는 실시예들의 구성요소들을 수행하는 지시들을 포함하는 비 일시적인 기기 판독 매체를 포함할 수 있다.
본 발명은 특정 실시예를 참조하여 설명되고 도시되었지만, 첨부된 청구항에 의해서 본 발명이 정의된 것처럼 본 발명의 기술 분야에 속하는 당업자에게는 형태 및 상세한 내용의 다양한 변화가 본 발명의 범위가 벗어나지 않는 한도에서 이루어질 것이다.
100 : 미세 예측 및 핸들러 엔진 115: 기능적 파이프
105 : 스케줄러 120 : 선제 미세 감지 로직부
110 : 스케줄 수정 로직부 135 : 멀티플렉서

Claims (10)

  1. 하나 이상의 부동 소수점 동작들을 선택하는 스케줄 수정 로직부를 포함하는 스케줄러;
    상기 스케줄러에 결합되고, 선택된 상기 하나 이상의 부동 소수점 동작들을 수신하는 기능적 파이프; 및
    상기 기능적 파이프에 결합되고, 후처리 모드 동안 상기 하나 이상의 부동 소수점 동작들을 수신하는 비정상 트롬본 후처리 파이프를 포함하고,
    상기 기능적 파이프는 상기 하나 이상의 부동 소수점 동작들에 연관된 비정상 결과를 예측하는 선제 미세 감지 로직부를 포함하고,
    상기 기능적 파이프는 상기 하나 이상의 부동 소수점 동작들에 연관된 하나 이상의 정상 결과들 및 상기 하나 이상의 부동 소수점 동작들에 연관된 하나 이상의 내부 포맷 결과들을 발생시키는 것을 특징으로 하는 미세 예측 및 핸들러 엔진.
  2. 제1 항에 있어서,
    상기 기능적 파이프의 상기 선제 미세 감지 로직부는 상기 하나 이상의 부동 소수점 동작들에 연관된 비정상 결과를 예측하여 부정적인 미세 지시자를 생성하고
    상기 스케줄러의 상기 스케줄 수정 로직부는 상기 기능적 파이프의 상기 선제 미세 감지 로직부로부터 상기 부정적인 미세 지시자를 수신하고, 상기 부정적인 미세 지시자에 응답하여 상기 후처리 모드를 시작하는 것을 특징으로 하는 미세 예측 및 핸들러 엔진.
  3. 제2 항에 있어서,
    상기 스케줄러의 상기 스케줄 수정 로직부는 상기 부정적인 미세 지시자에 응답하여 하나 이상의 타임 버블을 생성하는 것을 특징으로 하는 미세 예측 및 핸들러 엔진
  4. 제2 항에 있어서,
    상기 스케줄러의 상기 스케줄 수정 로직부는 상기 부정적인 미세 지시자에 응답하는 시간동안 상기 하나 이상의 부동 소수점 동작들에 의존하는 하나 이상의 의존적 동작들의 선택을 억제하는 것을 특징으로 하는 미세 예측 및 핸들러 엔진.
  5. 제1 항에 있어서,
    상기 비정상 트롬본 후처리 파이프는 상기 후처리 모드 동안 상기 하나 이상의 정상 결과들 및 상기 하나 이상의 내부 포맷 결과들을 수신하는 것을 특징으로 하는 미세 예측 및 핸들러 엔진
  6. 제1 항에 있어서,
    상기 후처리 모드를 시작하는 것에 응답하여, 상기 하나 이상의 정상 결과들을 상기 비정상 트롬본 후처리 파이프로 리라우팅하는 리라우터부를 더 포함하는 것을 특징으로 하는 미세 예측 및 핸들러 엔진.
  7. 제6 항에 있어서,
    상기 리라우터부의 출력 및 상기 비정상 트롬본 후처리 파이프의 출력에 연결되고, 상기 리라우터부의 상기 출력 및 상기 비정상 트롬본 후처리 파이프의 상기 출력 중 어느 하나를 선택하고, 상기 선택된 출력을 라이트백 스테이지로 전송하는 멀티플렉서를 더 포함하는 것을 특징으로 하는 미세 예측 및 핸들러 엔진.
  8. 제1 항에 있어서,
    상기 비정상 트롬본 후처리 파이프는 상기 후처리 모드 동안 상기 하나 이상의 내부 포맷 결과들을 비정규화 및 반올림하는 것을 특징으로 하는 미세 예측 및 핸들러 엔진.
  9. 제6 항에 있어서,
    상기 리라우터부는 상기 후처리 모드가 아닌 동안에는 상기 하나 이상의 정상 결과들을 상기 비정상 트롬본 후처리 파이프로 리라우팅하지 않는 것을 특징으로 하는 미세 예측 및 핸들러 엔진.
  10. 숫자 언더플로우를 미세 예측 및 핸들러 엔진을 이용하여 핸들링하는 방법에 있어서,
    스케줄러의 스케줄 수정 로직부에 의해서 적어도 하나 이상의 부동 소수점 동작들을 선택하는 단계;
    기능적 파이프를 이용하여, 선택된 적어도 하나 이상의 부동 소수점 동작들을 수신하는 단계;
    기능적 파이프의 선제 미세 감지 로직부에 의해서 적어도 하나 이상의 부동 소수점 동작들에 연관된 비정상적인 결과를 예측하는 단계;
    후처리 동안 비정상 트롬본 후처리 파이프에 의해서 적어도 하나 이상의 부동 소수점 동작들을 수신하는 단계; 및
    상기 기능적 파이프에 의해서 상기 하나 이상의 부동 소수점 동작들에 연관된 하나 이상의 정상 결과들 및 상기 하나 이상의 부동 소수점 동작들에 연관된 하나 이상의 내부 포맷 결과들을 발생시키는 단계를 포함하는 방법.


KR1020160081010A 2015-08-25 2016-06-28 숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진 KR102651957B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562209874P 2015-08-25 2015-08-25
US62/209,874 2015-08-25
US15/067,159 US9940101B2 (en) 2015-08-25 2016-03-10 Tininess prediction and handler engine for smooth handling of numeric underflow
US15/067,159 2016-03-10

Publications (2)

Publication Number Publication Date
KR20170024526A KR20170024526A (ko) 2017-03-07
KR102651957B1 true KR102651957B1 (ko) 2024-03-27

Family

ID=58095439

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160081010A KR102651957B1 (ko) 2015-08-25 2016-06-28 숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진

Country Status (2)

Country Link
US (2) US9940101B2 (ko)
KR (1) KR102651957B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940101B2 (en) * 2015-08-25 2018-04-10 Samsung Electronics Co., Ltd. Tininess prediction and handler engine for smooth handling of numeric underflow
US20180121168A1 (en) * 2016-10-27 2018-05-03 Altera Corporation Denormalization in multi-precision floating-point arithmetic circuitry
US11669331B2 (en) 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction
US11269632B1 (en) 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
US11797270B2 (en) 2021-06-17 2023-10-24 International Business Machines Corporation Single function to perform multiple operations with distinct operation parameter validation
US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution
US11693692B2 (en) 2021-06-17 2023-07-04 International Business Machines Corporation Program event recording storage alteration processing for a neural network accelerator instruction
US12079658B2 (en) 2021-06-17 2024-09-03 International Business Machines Corporation Detection of invalid machine-specific data types during data conversion
US11675592B2 (en) 2021-06-17 2023-06-13 International Business Machines Corporation Instruction to query for model-dependent information
US20230035159A1 (en) * 2021-07-23 2023-02-02 Arm Limited Tininess detection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040122885A1 (en) * 2002-12-23 2004-06-24 Cornea-Hasegan Marius A. Method and system for avoiding underflow in a floating-point operation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812439A (en) 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
US6571265B1 (en) 1999-10-29 2003-05-27 Intel Corporation Mechanism to detect IEEE underflow exceptions on speculative floating-point operations
US6701427B1 (en) 1999-12-22 2004-03-02 Arm Limited Data processing apparatus and method for processing floating point instructions
US20040098439A1 (en) * 2000-02-22 2004-05-20 Bass Stephen L. Apparatus and method for sharing overflow/underflow compare hardware in a floating-point multiply-accumulate (FMAC) or floating-point adder (FADD) unit
US6963894B2 (en) * 2002-04-08 2005-11-08 Intel Corporation Methods and apparatus for predicting an underflow condition associated with a floating-point multiply-add operation
US7373489B1 (en) * 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US9940101B2 (en) * 2015-08-25 2018-04-10 Samsung Electronics Co., Ltd. Tininess prediction and handler engine for smooth handling of numeric underflow

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040122885A1 (en) * 2002-12-23 2004-06-24 Cornea-Hasegan Marius A. Method and system for avoiding underflow in a floating-point operation

Also Published As

Publication number Publication date
US20180210706A1 (en) 2018-07-26
US20170060533A1 (en) 2017-03-02
KR20170024526A (ko) 2017-03-07
US10379814B2 (en) 2019-08-13
US9940101B2 (en) 2018-04-10

Similar Documents

Publication Publication Date Title
KR102651957B1 (ko) 숫자 언더플로우를 부드럽게 핸들링하기 위한 미세 예측 및 핸들러 엔진
US11281965B2 (en) Reconfigurable processing unit
US10534613B2 (en) Supporting learned branch predictors
KR100993998B1 (ko) 곱셈 기능을 수행하기 위한 방법 및 장치
US9244827B2 (en) Store address prediction for memory disambiguation in a processing device
CN102483696B (zh) 用以预测有条件非分支指令的不执行的方法和设备
CN109690477A (zh) 存储器违反预测
CN101763248A (zh) 用于多模式分支预测器的系统和方法
TWI476686B (zh) 用於處理器指令集中之述語計算之設備及方法、一處理器及一積體電路
US10754655B2 (en) Automatic predication of hard-to-predict convergent branches
CN109863476A (zh) 动态变量精度计算
US20140189305A1 (en) Redundant execution for reliability in a super fma alu
KR20180039077A (ko) 전력 효율적 페치 적응
EP3230851A1 (en) Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
WO2024198748A1 (zh) 数据处理方法、系统、芯片及终端
Harris-Birtill et al. Understanding computation time: a critical discussion of time as a computational performance metric
CN100507835C (zh) 用于改善按次序的处理器的性能的方法和系统
WO2020065250A1 (en) An apparatus and method for predicting source operand values and optimized processing of instructions
US20180284875A1 (en) Power consumption reduction device, power consumption reduction method, and power consumption reduction program
US11797713B2 (en) Systems and methods for dynamic control of a secure mode of operation in a processor
US10831232B2 (en) Computer architecture allowing recycling of instruction slack time
US20140281440A1 (en) Precalculating the direct branch partial target address during missprediction correction process
KR102025694B1 (ko) 재구성 가능한 프로세서의 검증 방법
US11880231B2 (en) Accurate timestamp or derived counter value generation on a complex CPU
Shimizu et al. Speculative execution in distributed controllers for high-level synthesis

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right