KR102028729B1 - 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법 - Google Patents

정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법 Download PDF

Info

Publication number
KR102028729B1
KR102028729B1 KR1020130025509A KR20130025509A KR102028729B1 KR 102028729 B1 KR102028729 B1 KR 102028729B1 KR 1020130025509 A KR1020130025509 A KR 1020130025509A KR 20130025509 A KR20130025509 A KR 20130025509A KR 102028729 B1 KR102028729 B1 KR 102028729B1
Authority
KR
South Korea
Prior art keywords
processor
latency
input data
input buffer
result value
Prior art date
Application number
KR1020130025509A
Other languages
English (en)
Other versions
KR20140111416A (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 KR1020130025509A priority Critical patent/KR102028729B1/ko
Priority to JP2014040668A priority patent/JP6474196B2/ja
Priority to CN201410079697.6A priority patent/CN104050034B/zh
Priority to US14/199,154 priority patent/US9405546B2/en
Priority to EP20140158460 priority patent/EP2778906A1/en
Publication of KR20140111416A publication Critical patent/KR20140111416A/ko
Application granted granted Critical
Publication of KR102028729B1 publication Critical patent/KR102028729B1/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/46Multiprogramming arrangements
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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
    • G06F9/3842Speculative 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법에 관한 것으로서, 전달되는 입력 데이터를 이용하여 적어도 하나 이상의 연산을 처리하는 프로세서, 및 상기 입력 데이터를 상기 프로세서에 전달하고, 상기 적어도 하나 이상의 연산에 대한 처리 결과를 저장하는 입력 버퍼를 포함하고, 상기 프로세서는 상기 적어도 하나 이상의 연산을 각각 수행하는 적어도 하나 이상의 연산 유닛을 포함하고, 상기 적어도 하나 이상의 연산 유닛은 상기 전달되는 입력 데이터를 레귤러 레이턴시의 연산 및 이레귤러 레이턴시의 연산 중에서 적어도 하나의 연산을 이용하여 처리할 수 있다.

Description

정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법{APPARATUS AND METHOD FOR NON-BLOCKING EXECUTION OF A STATIC SCHEDULED PROCESSOR}
아래의 실시예들은 입력 데이터에 대한 연산 중 기본 레이턴시 보다 현저히 큰 레이턴시가 발생하는 경우 프로세서 전체가 긴 사이클 동안 스톨(stall) 상태로 전환하지 않고, 연산 능력을 유지하는 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법에 대한 기술적 사상을 개시한다.
정적 스케쥴 프로세서(static schedule processor)는 주어진 입력 데이터에 대해 적용해야 할 연산을 어떤 연산 유닛에서 어떤 순서로 실행할지 컴파일시에 결정하는 방식의 프로세서이다. 소프트웨어 파이프라이닝(software pipelining) 알고리즘 중에서 스케쥴을 결정하는 SRP(samsung reconfigurable processor)도 정적 스케쥴 프로세서(static schedule processor)에 해당한다.
프로세서의 연산 스케쥴은 각 연산이 수행 가능한 연산 유닛(Functional Unit), 각 연산의 입력 데이터가 준비되는 시점, 각 연산의 소요시간 등을 고려하여 최적의 실행 성능을 내도록 만들어진다.
여기서 연산의 소요시간이 항상 일정한 레귤러 레이턴시(regular latency) 연산에 대해서는 컴파일시 정확한 타이밍 계산이 가능하여 최적의 스케쥴을 만들어낼 수 있다. 하지만 연산의 소요시간이 불규칙한 이레귤러 레이턴시(irregular latency) 연산의 경우는 컴파일시 한가지 레이턴시 값을 가정하여 우선 스케쥴을 생성하고 런타임에 가정과 다른 레이턴시가 발생한 경우, 이를 대처하기 위한 별도의 방법이 사용된다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 장치는 전달되는 입력 데이터를 이용하여 적어도 하나 이상의 연산을 처리하는 프로세서, 및 상기 입력 데이터를 상기 프로세서에 전달하고, 상기 적어도 하나 이상의 연산에 대한 처리 결과를 저장하는 입력 버퍼를 포함하고, 상기 프로세서는 상기 적어도 하나 이상의 연산을 각각 수행하는 적어도 하나 이상의 연산 유닛을 포함하고, 상기 적어도 하나 이상의 연산 유닛은 상기 전달되는 입력 데이터를 레귤러 레이턴시의 연산 및 이레귤러 레이턴시의 연산 중에서 적어도 하나의 연산을 이용하여 처리할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산 유닛은, 상기 입력 데이터를 상기 레귤러 레이턴시의 연산으로 처리할 것인지 또는 상기 이레귤러 레이턴시의 연산으로 처리할 것인지를 판단할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산 유닛은, 상기 입력 데이터를 상기 이레귤러 레이턴시의 연산으로 처리하는 경우, 상기 입력 데이터에 대한 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있는지 여부를 확인할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산 유닛은, 상기 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있는 경우, 스케쥴로 정의되어 있는 기본 레이턴시 후에 상기 이전의 연산 결과 값을 출력할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산 유닛은, 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 연산을 실행하고, 상기 연산의 실행 중에 추가 레이턴시가 발생하는지 여부를 판단할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산 유닛은, 상기 연산의 실행 중에 추가 레이턴시가 발생하는 경우, 더미 값을 출력하고, 상기 출력된 더미 값에 상응하는 상태 비트를 상기 입력 버퍼에 기록할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산 유닛은, 상기 추가 레이턴시가 발생한 연산의 실행이 끝난 후, 연산의 최종적인 결과값을 상기 입력 버퍼에 기록할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산 유닛은, 상기 연산의 실행 중에 추가 레이턴시가 발생하지 않는 경우, 상기 연산의 실행에 따른 결과 값을 출력하고, 상기 출력된 결과 값을 상기 입력 버퍼에 기록할 수 있다.
일실시예에 따른 상기 입력 버퍼는 상태 레지스터 및 결과 버퍼를 포함하고, 상기 상태 레지스터는 상기 입력 데이터에 대한 상태를 저장하며, 상기 결과 버퍼는 이전의 연산 결과값을 저장할 수 있다.
일실시예에 따른 상기 상태 레지스터는, 상기 입력 데이터에 대해 연산을 재수행 할 것인지의 여부에 대한 상태를 저장할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서는, 입력 버퍼로부터 입력 데이터를 전달받고, 복수의 연산 유닛을 이용하여 연산을 수행하는 연산 처리부, 상기 입력 데이터의 연산 중 상기 복수의 연산 유닛 중에서 적어도 하나에 추가 레이턴시가 발생하는지를 판단하는 판단부, 상기 추가 레이턴시가 발생하는 경우에 더미 값을 출력하여 상기 입력 버퍼에 저장하는 저장 처리부를 포함할 수 있다.
일실시예에 따른 상기 연산 처리부는, 상기 입력 버퍼로부터 상기 전달된 입력 데이터에 대한 이전의 연산 결과값이 저장되어 있는지를 확인하고, 상기 이전의 연산 결과값이 저장되어 있는 경우 스케쥴로 정의되어 있는 기본 레이턴시 후에 상기 이전의 연산 결과 값을 출력할 수 있다.
일실시예에 따른 상기 연산 처리부는, 상기 입력 버퍼로부터 상기 전달된 입력 데이터에 대한 이전의 연산 결과값이 저장되어 있는지를 확인하고, 상기 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 상기 입력 데이터의 연산을 실행할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 프로세서에서, 전달되는 입력 데이터를 이용하여 적어도 하나 이상의 연산을 처리하는 단계, 및 입력 버퍼에서, 상기 입력 데이터를 상기 프로세서에 전달하고, 상기 적어도 하나 이상의 연산에 대한 처리 결과를 저장하는 단계를 포함하고, 상기 적어도 하나 이상의 연산을 처리하는 단계는, 상기 전달되는 입력 데이터를 레귤러 레이턴시의 연산 및 이레귤러 레이턴시의 연산 중에서 적어도 하나의 연산을 이용하여 처리하는 단계를 포함할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산을 처리하는 단계는, 상기 입력 데이터를 상기 레귤러 레이턴시의 연산으로 처리할 것인지 또는 상기 이레귤러 레이턴시의 연산으로 처리할 것인지를 판단하는 단계를 포함할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산을 처리하는 단계는, 상기 입력 데이터를 상기 이레귤러 레이턴시의 연산으로 처리하는 경우, 상기 입력 데이터에 대한 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있는지 여부를 확인하는 단계를 포함할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산을 처리하는 단계는, 상기 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있는 경우, 스케쥴로 정의되어 있는 기본 레이턴시 후에 상기 이전의 연산 결과 값을 출력할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산을 처리하는 단계는, 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 연산을 실행하고, 상기 연산의 실행 중에 추가 레이턴시가 발생하는지 여부를 판단할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산을 처리하는 단계는, 상기 연산의 실행 중에 추가 레이턴시가 발생하는 경우, 더미 값을 출력하고, 상기 출력된 더미 값에 상응하는 상태 비트를 상기 입력 버퍼에 기록하는 단계를 포함할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산을 처리하는 단계는, 상기 추가 레이턴시가 발생한 연산의 실행이 끝난 후, 연산의 최종적인 결과값을 상기 입력 버퍼에 기록하는 단계를 포함할 수 있다.
일실시예에 따른 상기 적어도 하나 이상의 연산을 처리하는 단계는, 상기 연산의 실행 중에 추가 레이턴시가 발생하지 않는 경우, 상기 연산의 실행에 따른 결과 값을 출력하는 단계, 및 상기 출력된 결과 값을 상기 입력 버퍼에 기록하는 단계를 포함할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서의 동작 방법은 연산 처리부에서, 입력 버퍼로부터 입력 데이터를 전달받고, 복수의 연산 유닛을 이용하여 연산을 수행하는 단계, 판단부에서, 상기 입력 데이터의 연산 중 상기 복수의 연산 유닛 중에서 적어도 하나에 추가 레이턴시가 발생하는지를 판단하는 단계, 저장 처리부에서, 상기 추가 레이턴시가 발생하는 경우에 더미 값을 출력하여 상기 입력 버퍼에 저장하는 단계를 포함할 수 있다.
일실시예에 따른 상기 연산을 수행하는 단계는, 상기 입력 버퍼로부터 상기 전달된 입력 데이터에 대한 이전의 연산 결과값이 저장되어 있는지를 확인하는 단계, 및 상기 이전의 연산 결과값이 저장되어 있는 경우 스케쥴로 정의되어 있는 기본 레이턴시 후에 상기 이전의 연산 결과 값을 출력하는 단계를 포함할 수 있다.
일실시예에 따른 상기 연산을 수행하는 단계는, 상기 입력 버퍼로부터 상기 전달된 입력 데이터에 대한 이전의 연산 결과값이 저장되어 있는지를 확인하는 단계, 및 상기 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 상기 입력 데이터의 연산을 실행하는 단계를 포함할 수 있다.
도 1은 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 장치를 설명하는 블록도이다.
도 2는 일실시예에 따른 논블로킹 실행 장치의 입력 버퍼를 설명하는 도면이다.
도 3은 다른 일실시예에 따른 정적 스케쥴 프로세서를 설명하는 블록도이다.
도 4는 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법을 설명하는 흐름도이다.
도 5는 일실시예에 따른 프로세서의 동작 방법을 설명하는 흐름도이다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
실시예들을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 실시예들의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 본 명세서에서 사용되는 용어(terminology)들은 실시예들을 적절히 표현하기 위해 사용된 용어들로서, 이는 사용자, 운용자의 의도 또는 해당 기술이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 장치(100)를 설명하는 블록도이다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 장치(100)는 입력 버퍼(110)와 프로세서(120)를 포함할 수 있다.
이하의 '프로세서'는 정적 스케쥴 기반의 프로세서를 포함할 수 있다.
일실시예에 따른 프로세서(120)는 전달되는 입력 데이터를 이용하여 적어도 하나 이상의 연산을 처리할 수 있다.
일실시예에 따른 입력 버퍼(110)는 입력 데이터를 프로세서에 전달하고, 적어도 하나 이상의 연산에 대한 처리 결과를 저장할 수 있다.
이때의 프로세서(120)는 적어도 하나 이상의 연산을 각각 수행하는 적어도 하나 이상의 연산 유닛(121, FU, Functional Unit)을 포함할 수 있다.
적어도 하나 이상의 연산 유닛(121, FU, Functional Unit)은 전달되는 입력 데이터를 레귤러 레이턴시의 연산 및 이레귤러 레이턴시의 연산 중에서 적어도 하나의 연산 방식으로 처리할 수 있다.
적어도 하나 이상의 연산 유닛(121, FU, Functional Unit)은 입력 데이터를 확인하고, 확인된 결과에 따라서 해당 입력 데이터를 레귤러 레이턴시(regular latency)의 연산으로 처리할지 이레귤러 레이턴시(irregular latency)의 연산으로 처리할지에 대해 결정할 수 있다.
적어도 하나 이상의 연산 유닛(121, FU, Functional Unit)은 연산의 소요시간이 항상 일정하여 컴파일시 정확한 타이밍 계산이 가능하고, 최적의 스케쥴을 만들어낼 수 있는 입력 데이터에 대해서는 레귤러 레이턴시(regular latency)의 연산으로 처리할 수 있다.
반대로, 적어도 하나 이상의 연산 유닛(121, FU, Functional Unit)은 연산의 소요시간이 불규칙한 입력 데이터에 대비하여 컴파일시 한가지 레이턴시 값을 가정하여 우선 스케쥴을 생성할 수 있다. 이에, 적어도 하나 이상의 연산 유닛(121, FU, Functional Unit)은 런타임에 가정과 다른 레이턴시가 발생한 경우에도 긴 사이클 동안 스톨(stall) 상태로 전환하지 않고, 연산 능력을 유지할 수 있다.
다시 말해, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 장치(100)는 정적 스케쥴 기반의 프로세서 동작을 수행하면서도 논블로킹 특성을 유지할 수 있다.
적어도 하나 이상의 연산 유닛(121, FU, Functional Unit)은 추가 레이턴시가 발생한 연산의 실행이 끝난 후, 연산의 최종적인 결과값을 입력 버퍼(110)에 기록할 수 있다.
일실시예에 따른 프로세서(120)는 주어진 입력 데이터에 대해 적용해야 할 연산을 어떤 연산 유닛에서 어떤 순서로 실행할지 컴파일시에 결정할 수 있다.
일실시예에 따른 프로세서(120)는 정적 스케쥴 기반으로서, 동적 스케쥴 기반의 프로세서에 비해서 하드웨어의 크기가 작고 간단하다. 또한, 일실시예에 따른 프로세서(120)는 추가 레이턴시가 발생한 만큼 프로세서(120)의 동작을 스톨(stall)하지 않기 때문에, 일반적인 정적 스케쥴 기반의 프로세서가 런타임에 발생하는 레이턴시에 대응하지 못하는 문제를 해결할 수 있다.
일실시예에 따른 프로세서(120)가 수행하는 연산 중 외부 요인에 영향을 받지 않고 수행할 수 있는 연산들은 항상 일정한 레이턴시를 발생시킨다. 예를 들어, 캐쉬 메모리를 참조하여 연산을 처리하는 도중에 캐쉬 히트되는 경우 등에는 선정된 레이턴시 이외로 추가 레이턴시가 발생하지 않는다. 일실시예에 따른 프로세서(120)는 이러한 연산에 대해 레귤러 레이턴시의 연산 방식으로 처리할 수 있다.
외부 메모리 접근 등의 외부 요인의 영향을 받는 동작이 포함된 연산이나 조건에 따라 선택적 동작을 수행하는 연산들에 대해서 일반적인 프로세서라면, 연산할 때마다 레이턴시가 달라질 수 있다. 일실시예에 따른 프로세서(120)는 이러한 연산에 대해 이레귤러 레이턴시의 연산 방식으로 처리할 수 있다.
예를 들어, 일반적인 프로세서가 데이터 캐쉬(data cache)를 통해 프로세서 외부의 메모리에 접근하는 동작을 수행하는 경우 캐쉬 히트 또는 미스(cache hit/miss)의 여부에 따라 동작이 달라지면서 수행에 필요한 레이턴시가 달리질 수 있다. 또한 같은 캐쉬 미스의 상황이라도 외부 메모리에 접근 시 소요되는 시간이 매번 다를 수 있으므로 수행에 필요한 레이턴시는 달리질 수 있다.
이에 반해, 일실시예에 따른 프로세서(120)는 수행할 모든 연산의 레이턴시를 정해진 값으로 지정할 수 있다. 이에, 일실시예에 따른 프로세서(120)는 지정된 레이턴시에 따라 최적의 수행 성능이 나올 수 있는 스케쥴을 생성할 수 있고, 런타임에는 정해진 스케쥴에 따라서만 동작하게 된다.
만약, 런타임에 특정 연산이 수행되는데 더 많은 시간이 걸린다면, 일실시예에 따른 프로세서(120)는 시스템 효율을 위해 추가 레이턴시에 따라서 스톨 상태를 유지하지 않아 특정 연산의 처리가 완료될 때까지 대기하지 않는다. 또한, 일실시예에 따른 프로세서(120)는 추가 레이턴시가 발생한 특정 연산을 무시하고 잘못된 데이터를 출력하지도 않는다.
다시 말해, 지정된 레이턴시 이외에 추가 레이턴시가 발생한 경우 일실시예에 따른 프로세서(120)는 그 연산의 결과를 사용하는 다음 연산을 스케쥴에 정해진 시점에 맞추어 수행할 수 없게 된다. 다시 말해, 레이턴시가 미리 지정한 값 보다 커진다면, 그 연산의 결과를 사용하는 다음 연산을 스케쥴에 정해진 시점에 맞추어 수행할 수 없게 된다.
이러한 상황이 발생하면, 일반적으로는 추가로 발생한 레이턴시 만큼 프로세서를 스톨(stall)하고, 특정 연산이 완료되면 다시 원래의 스케쥴대로 연산의 수행을 재개한다.
일실시예에 따른 프로세서(120)는 지정된 레이턴시 이외에 추가 레이턴시가 발생한 경우, 특정 연산을 처리하던 연산 유닛(121)을 통해 의미없는 값인 더미 값을 출력할 수 있다. 또한, 출력된 더미 값에 상응하는 상태 비트는 결과 저장 신호(140)를 통해 입력 버퍼(110)에 결과값으로서 저장될 수 있다.
입력 버퍼(110)는 입력 데이터에 대해 복수개의 이레귤러 레이턴시(irregular latency) 연산에 따른 결과값을 저장할 수 있다.
일실시예에 따른 프로세서(120)는 각 엔트리(entry)에 대해 이레귤러 레이턴시(irregular latency) 연산의 결과값을 저장해둘 수 있고, 결과 검색 신호(130)를 통해 또한 특정 연산의 처리 이전에도 저장된 결과값을 검색할 수 있다.
다시 말해, 일실시예에 따른 프로세서(120)는 특정 연산의 처리 이전에, 입력되는 입력 데이터의 이전 결과값에 더미 값에 상응하는 상태 비트가 저장되어 있어, 연산 유닛(121)의 재실행이 필요한지를 먼저 확인할 수 있다. 즉, 일실시예에 따른 프로세서(120)는 이레귤러 레이턴시(irregular latency) 연산인 경우, 연산을 시작하는 시점에 먼저 해당 데이터에 대한 해당 연산의 결과값이 이미 입력 버퍼에 저장되어 있는지 이전 결과 값을 검색할 수 있다.
결과값이 존재했다면 일실시예에 따른 프로세서(120)는 연산을 다시 수행하는 대신 스케쥴에 정의된 기본 레이턴시 후에 조회된 결과값을 출력할 수 있다. 만약, 더미 값에 상응하는 상태 비트가 입력되었거나 결과값이 입력 버퍼에 존재하지 않는다면 일실시예에 따른 프로세서(120)는 해당 연산을 실제로 재수행할 수 있다.
이후, 연산 유닛(121)의 수행 결과 기본 레이턴시 안에 연산이 완료되면 일실시예에 따른 프로세서(120)는 유효한(valid) 연산 결과 값을 출력할 수 있다.
연산 유닛(121)의 수행 결과 기본 레이턴시 안에 연산이 완료되지 못하면 일실시예에 따른 프로세서(120)는 더미 값을 출력한다. 프로세서(120)가 실제 연산을 수행한 경우 레이턴시와 관계 없이 그 결과값은 입력 버퍼에 저장될 수 있다.
일실시예에 따른 프로세서(120)는 더미 값을 출력하여 추가로 발생한 레이턴시 만큼 프로세서를 스톨(stall)하지 않을 뿐만 아니라, 더미 값으로 인한 잘못된 결과 값을 출력하지 않는다.
일실시예에 따른 프로세서(120)는 각 입력 데이터에 대한 최종 수행결과를 출력하기 위한 모든 중간 연산에서 더미 값의 출력이 있었는지 여부를 확인할 수 있다.
이를 위해, 일실시예에 따른 프로세서(120)가 지정된 레이턴시 이내에 연산을 종료하여 정상적인 출력 값을 출력하고, 이를 입력 버퍼(110)에 저장하는 경우에, 프로세서(120)는 완료 플래그 신호(150)를 통해 완료 플래그(complete flag)를 입력 버퍼(110)에 전송할 수 있다. 이에, 입력 버퍼(110)는 저장되는 출력 값에 상응하는 완료 플래그를 확인하여 입력 데이터에 대한 연산이 정상적으로 종료 되었음을 표현할 수 있다.
정상적으로 종료된 입력 데이터는 출력 데이터로서 외부로 출력되어, 다음의 처리에 이용될 수 있다. 정상 출력된 엔트리는 입력 버퍼(110)에서 삭제될 수 있다.
만약, 완료 플래그가 확인되지 않는 입력 데이터의 경우는 더미 값을 포함하는 결과라고 판단되어, 입력 버퍼(110)에서 이후 적절한 시점에 해당 입력 데이터를 다시 프로세서(120)로 보내 연산 과정을 처음부터 다시 시작할 수 있다.
다시 말해, 프로세서(120)는 각 입력 데이터에 대한 연산 중 이레귤러 레이턴시 연산의 결과가 기본 레이턴시 보다 커지는 경우를 감지하여 해당 데이터에 대해 다시 연산하도록 동작할 수 있다. 이때, 이전 단계에서의 처리 결과 값은 입력 버퍼(110)에 입력 데이터에 대응되는 위치에 저장될 수 있다.
이로써, 예외적인 레이턴시에 대해서도 선정된 스케쥴을 지키면서 연산결과가 동일하도록 수행할 수 있고, 추가 레이턴시 만큼 프로세서 전체를 스톨(stall)하지 않기 때문에 프로세서의 처리성능을 향상시킬 수 있다.
결국, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 장치(100)를 이용하면, 각 입력 데이터에 대한 연산 중 기본 레이턴시 보다 현저히 큰 레이턴시가 발생한 경우에 대해 프로세서 전체가 긴 사이클 동안 스톨 상태가 되어 연산 능력이 저하되는 것을 방지할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 장치(100)를 이용하면, 기본 레이턴시 보다 큰 레이턴시가 발생하여도 프로세서는 스톨하지 않고 해당 연산 값만 더미 값으로 처리할 뿐 계속해서 다음 데이터에 대한 연산은 정상적으로 수행할 수 있다. 그리고 나중에 더미 값으로 처리되었던 데이터에 대해서는 연산을 처음부터 다시 수행할 수 있다. 다시 말해, 추가로 발생한 레이턴시 만큼의 스톨 사이클을 줄일 수 있는 반면 해당 데이터에 대해 재연산하는 만큼의 수행시간만이 추가될 수 있다.
일반적으로 입력 데이터 1건당 프로세서의 연산시간은 10~50 사이클 정도가 소요된다. 반면에, 캐쉬 메모리 접근 연산의 추가 레이턴시는 100~300 사이클 정도가 소요된다.
이에, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 장치(100)를 이용하면, 추가 레이턴시 발생시마다 100~300 사이클 스톨로 인한 사이클 낭비를 하지 않고, 재연산에 필요한 10~50 사이클만으로 성능이 향상될 수 있다.
도 2는 일실시예에 따른 논블로킹 실행 장치의 입력 버퍼(200)를 설명하는 도면이다.
일실시예에 따른 입력 버퍼(200)는 적어도 하나 이상의 입력 데이터에 대해 입력되는 순서에 따라 엔트리 별로 구분하여 저장할 수 있다.
프로세서에 제공할 입력 데이터가 외부에서 공급되면, 입력 데이터는 일실시예에 따른 입력 버퍼(200)에 저장된다.
입력 버퍼(200)는 저장된 엔트리들 중 하나의 엔트리(210)를 선택하여 실제 프로세서의 입력으로 전달한다.
엔트리(210)는 상태 비트(211), 입력 데이터(212), 결과 버퍼(213)를 포함할 수 있다.
입력 버퍼(200)가 엔트리(210)에 대해 저장하는 내용은 우선 입력 데이터(212) 자체와 엔트리의 상태정보, 그리고 복수개의 이레귤러 레이턴시 연산에 따른 결과 값이다. 프로세서는 엔트리(210)에 대해 이레귤러 레이턴시 연산의 결과 값을 저장해둘 수 있고, 또한 저장된 결과값을 조회할 수도 있다.
구체적으로, 프로세서는 각 입력 데이터가 연산 유닛에서 처리된 후의 결과에 따라서 완료 플래그를 상태 비트(211)에 저장할 수 있다. 프로세서는 입력 버퍼의 상태 비트(211)를 확인하여 해당 입력 데이터(212)가 재실행되어야 하는지 여부를 결정할 수 있다.
입력 데이터(212)는 연산 유닛에서 처리될 수 있는 단위로서, 저장되는 순서대로 입력 버퍼(200)에 적재될 수 있다.
결과 버퍼(213)는 연산 유닛에서 입력 데이터(212)가 처리된 후의 결과 값을 저장할 수 있다. 만약, 연산 유닛에서 추가 레이턴시가 발생하는 경우라면, 결과 버퍼(213)에는 더미 값에 상응하는 상태 비트가 기록될 수 있다. 또한, 결과 버퍼(213)에 더미 값에 상응하는 상태 비트가 기록되는 경우라면 상태 비트(211)에는 완료 플래그가 기록되지 않는다.
프로세서의 입력으로 전달된 엔트리(210)는 우선 입력 버퍼(200)에서 삭제되지 않고 남아있는다. 엔트리(210)가 삭제되는 시점은 프로세서에서 모든 처리가 완료되어 출력 데이터가 발생하는 시점이다.
도 3은 일실시예에 따른 정적 스케쥴 프로세서(300)를 설명하는 블록도이다.
일실시예에 따른 정적 스케쥴 프로세서(300)는 연산 처리부(310), 판단부(320), 저장 처리부(330)를 포함할 수 있다.
외부 메모리를 참조해야 하는 경우, 같은 캐쉬 미스의 상황이라도 외부 메모리에 접근 시 소요되는 시간이 매번 다를 수 있으므로 수행에 필요한 레이턴시가 달리질 수 있다.
일실시예에 따른 정적 스케쥴 프로세서(300)는 수행할 모든 연산의 레이턴시를 정해진 값으로 지정할 수 있다. 이에, 일실시예에 따른 정적 스케쥴 프로세서(300)는 지정된 레이턴시에 따라 최적의 수행 성능이 나올 수 있는 스케쥴을 생성할 수 있고, 런타임에는 정해진 스케쥴에 따라서만 동작하게 된다.
일실시예에 따른 연산 처리부(310)는 입력 버퍼로부터 입력 데이터를 전달받고, 복수의 연산 유닛을 이용하여 연산을 수행할 수 있다.
일실시예에 따른 판단부(320)는 입력 데이터의 연산 중 상기 복수의 연산 유닛 중에서 적어도 하나에 추가 레이턴시가 발생하는지를 판단할 수 있다.
일실시예에 따른 저장 처리부(330)는 추가 레이턴시가 발생하는 경우에 더미 값을 출력하여 입력 버퍼에 저장할 수 있다.
이때, 일실시예에 따른 정적 스케쥴 프로세서(300)는 입력 데이터에 대한 연산을 스톨하지 않고, 다음 연산을 진행할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서(300)는 기설정된 레이턴시에 따라서 입력 데이터에 대한 연산을 처리할 수 있다. 만약, 일실시예에 따른 연산 처리부(310)가 데이터 캐쉬(data cache)를 통해 프로세서 외부의 메모리에 접근하는 동작을 수행하는 경우가 발생하면, 캐쉬 히트 또는 미스(cache hit/miss)의 여부에 따라 동작이 달라지면서 수행에 필요한 추가 레이턴시가 생성될 수 있다.
예를 들어, 런타임에 특정 연산이 수행되는데 더 많은 시간이 걸린다면, 일실시예에 따른 정적 스케쥴 프로세서(300)는 시스템 효율을 위해 추가 레이턴시에 따라서 스톨 상태를 유지하지 않아 특정 연산의 처리가 완료될 때까지 대기하지 않는다. 또한, 일실시예에 따른 정적 스케쥴 프로세서(300)는 추가 레이턴시가 발생한 특정 연산을 무시하고 잘못된 데이터를 출력하지도 않는다.
다시 말해, 지정된 레이턴시 이외에 추가 레이턴시가 발생한 경우 일실시예에 따른 정적 스케쥴 프로세서(300)는 그 연산의 결과를 사용하는 다음 연산을 스케쥴에 정해진 시점에 맞추어 수행할 수 없게 된다. 다시 말해, 레이턴시가 미리 지정한 값 보다 커진다면, 그 연산의 결과를 사용하는 다음 연산을 스케쥴에 정해진 시점에 맞추어 수행할 수 없게 된다.
이러한 상황이 발생하면, 일실시예에 따른 저장 처리부(330)는 추가 레이턴시가 발생하는 경우에 더미 값을 출력하여 입력 버퍼에 저장할 수 있다.
일실시예에 따른 연산 처리부(310)는 입력 버퍼로부터 전달된 입력 데이터에 대한 이전의 연산 결과값이 저장되어 있는지를 먼저 확인할 수 있다. 이에, 연산 처리부(310)는 이전의 연산 결과값이 저장되어 있는 경우에 스케쥴로 정의되어 있는 기본 레이턴시 후에 이전의 연산 결과 값을 출력할 수 있다.
일실시예에 따른 연산 처리부(310)는 입력 버퍼에 이전의 연산 결과값이 저장되어 있지 않은 경우, 입력 데이터의 연산을 재실행할 수 있다.
결국, 일실시예에 따른 정적 스케쥴 프로세서(300)를 이용하면, 각 입력 데이터에 대한 연산 중 기본 레이턴시 보다 현저히 큰 레이턴시가 발생한 경우에 대해 프로세서 전체가 긴 사이클 동안 스톨 상태가 되어 연산 능력이 저하되는 것을 방지할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서(300)를 이용하면, 기본 레이턴시 보다 큰 레이턴시가 발생하여도 프로세서는 스톨하지 않고 해당 연산 값만 더미 값으로 처리할 뿐 계속해서 다음 데이터에 대한 연산은 정상적으로 수행할 수 있다. 그리고 나중에 더미 값으로 처리되었던 데이터에 대해서는 연산을 처음부터 다시 수행할 수 있다. 다시 말해, 추가로 발생한 레이턴시 만큼의 스톨 사이클을 줄일 수 있는 반면 해당 데이터에 대해 재연산하는 만큼의 수행시간만이 추가될 수 있다.
일반적으로 입력 데이터 1건당 프로세서의 연산시간은 10~50 사이클 정도가 소요된다. 반면에, 캐쉬 메모리 접근 연산의 추가 레이턴시는 100~300 사이클 정도가 소요된다.
이에, 일실시예에 따른 정적 스케쥴 프로세서(300)를 이용하면, 추가 레이턴시 발생시마다 100~300 사이클 스톨로 인한 사이클 낭비를 하지 않고, 재연산에 필요한 10~50 사이클만으로 성능이 향상될 수 있다.
도 4는 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법을 설명하는 흐름도이다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 입력 버퍼를 통해서 입력 데이터를 프로세서에 전달할 수 있다(단계 401).
다음으로, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 프로세서를 통해서 전달되는 입력 데이터를 이용하여 적어도 하나 이상의 연산을 처리할 수 있다(단계 402).
다음으로, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 입력 버퍼를 통해서, 입력 데이터를 프로세서에 전달하고, 적어도 하나 이상의 연산에 대한 처리 결과를 저장할 수 있다(단계 403).
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 적어도 하나 이상의 연산을 처리하기 위해서, 전달되는 입력 데이터를 레귤러 레이턴시의 연산 및 이레귤러 레이턴시의 연산 중에서 적어도 하나의 연산을 이용하여 처리할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 기설정된 레이턴시에 따라서 입력 데이터에 대한 연산을 처리할 수 있다. 이 경우, 레귤러 레이턴시의 연산을 적용하여 입력 데이터의 연산을 수행할 수 있다.
만약, 데이터 캐쉬(data cache)를 통해 프로세서 외부의 메모리에 접근하는 동작을 수행하는 경우가 발생하면, 캐쉬 히트 또는 미스(cache hit/miss)의 여부에 따라 동작이 달라지면서 수행에 필요한 추가 레이턴시가 생성될 수 있다. 이 경우, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 이레귤러 레이턴시의 연산을 적용하여 입력 데이터의 연산을 수행할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 적어도 하나 이상의 연산을 처리하기 위해서, 입력 데이터를 상기 레귤러 레이턴시의 연산으로 처리할 것인지 또는 상기 이레귤러 레이턴시의 연산으로 처리할 것인지를 판단할 수 있다.
입력 데이터를 이레귤러 레이턴시의 연산으로 처리하는 경우, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 입력 데이터에 대한 이전의 연산 결과값이 입력 버퍼에 저장되어 있는지 여부를 확인할 수 있다.
이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있는 경우, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 스케쥴로 정의되어 있는 기본 레이턴시 후에 이전의 연산 결과 값을 출력할 수 있다.
이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 연산을 실행하고, 연산의 실행 중에 추가 레이턴시가 발생하는지 여부를 판단할 수 있다.
캐쉬 미스 등의 이유로, 연산의 실행 중에 추가 레이턴시가 발생하는 경우, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 더미 값을 출력하고, 출력된 더미 값에 상응하는 상태 비트를 입력 버퍼에 기록하여 올바른 결과 값이 아님을 표시할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 연산의 실행 중에 추가 레이턴시가 발생하지 않는 경우, 연산의 실행에 따른 결과 값을 출력할 수 있다. 또한, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법은 출력된 결과 값을 입력 버퍼에 기록할 수 있다.
결국, 일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법을 이용하면, 각 입력 데이터에 대한 연산 중 기본 레이턴시 보다 현저히 큰 레이턴시가 발생한 경우에 대해 프로세서 전체가 긴 사이클 동안 스톨 상태가 되어 연산 능력이 저하되는 것을 방지할 수 있다.
일실시예에 따른 정적 스케쥴 프로세서의 논블로킹 실행 방법을 이용하면, 기본 레이턴시 보다 큰 레이턴시가 발생하여도 프로세서는 스톨하지 않고 해당 연산 값만 더미 값으로 처리할 뿐 계속해서 다음 데이터에 대한 연산은 정상적으로 수행할 수 있다. 그리고 나중에 더미 값으로 처리되었던 데이터에 대해서는 연산을 처음부터 다시 수행할 수 있다. 다시 말해, 추가로 발생한 레이턴시 만큼의 스톨 사이클을 줄일 수 있는 반면 해당 데이터에 대해 재연산하는 만큼의 수행시간만이 추가될 수 있다.
도 5는 일실시예에 따른 프로세서의 동작 방법을 설명하는 흐름도이다.
일실시예에 따른 프로세서의 동작 방법은 입력 버퍼로부터 입력 데이터를 전달받아 연산을 수행하고, 입력 데이터의 연산 중 상기 복수의 연산 유닛 중에서 적어도 하나에 추가 레이턴시가 발생하는지를 판단하며, 추가 레이턴시가 발생하는 경우에 더미 값을 출력하여 입력 버퍼에 저장할 수 있다.
구체적으로, 일실시예에 따른 프로세서의 동작 방법은 입력 버퍼로부터 입력 데이터를 전달받아 연산을 수행하기 전에 레귤러 연산으로 처리할 것인지, 이레귤러 연산으로 처리할 것인지를 판단할 수 있다(단계 501). 예를 들어, 입력 버퍼의 상태 비트에 해당 입력 데이터에 대한 완료 플래그가 세팅되어 있는 경우, 입력 데이터를 레귤러 연산으로 처리할 수 있다.
레귤러 연산으로 처리하는 경우, 일실시예에 따른 프로세서의 동작 방법은 입력 데이터에 대해 선정된 연산을 실행하고(단계 502), 실행 결과에 따른 유효값을 출력할 수 있다(단계 503).
이레귤러 연산으로 처리하는 경우, 일실시예에 따른 프로세서의 동작 방법은 연산을 수행하기 위해서, 입력 버퍼로부터 전달된 입력 데이터에 대한 이전의 연산 결과값이 저장되어 있는지를 확인할 수 있다(단계 503).
만약, 이전의 연산 결과값이 저장되어 있는 경우, 일실시예에 따른 프로세서의 동작 방법은 이전의 연산 결과 값을 유효값으로 출력할 수 있다(단계 503). 다시 말해, 일실시예에 따른 프로세서의 동작 방법은 스케쥴로 정의되어 있는 기본 레이턴시 후에 이전의 연산 결과 값을 출력할 수 있다.
이전의 연산 결과값이 저장되어 있지 않은 경우, 일실시예에 따른 프로세서의 동작 방법은 입력 데이터에 대한 연산을 실행할 수 있다(단계 505).
일실시예에 따른 프로세서의 동작 방법은 입력 데이터에 대한 연산 도중에 추가 레이턴시의 존재 여부를 판단할 수 있다(단계 506).
만약, 추가 레이턴시가 발생하지 않는다면, 일실시예에 따른 프로세서의 동작 방법은 실행에 따른 결과 값을 입력 버퍼에 기록할 수 있다. 또한, 추가 레이턴시가 존재한다면, 일실시예에 따른 프로세서의 동작 방법은 프로세서의 스톨을 방지하기 위해서 더미 값을 출력할 수 있다(단계 508).
일실시예에 따른 프로세서의 동작 방법은 출력된 더미 값을 입력 버퍼에 저장할 수 있다(단계 509).
결국, 일실시예에 따른 프로세서의 동작 방법을 이용하면, 각 입력 데이터에 대한 연산 중 기본 레이턴시 보다 현저히 큰 레이턴시가 발생한 경우에 대해 프로세서 전체가 긴 사이클 동안 스톨 상태가 되어 연산 능력이 저하되는 것을 방지할 수 있다.
일실시예에 따른 프로세서의 동작 방법을 이용하면, 기본 레이턴시 보다 큰 레이턴시가 발생하여도 프로세서는 스톨하지 않고 해당 연산 값만 더미 값으로 처리할 뿐 계속해서 다음 데이터에 대한 연산은 정상적으로 수행할 수 있다. 그리고 나중에 더미 값으로 처리되었던 데이터에 대해서는 연산을 처음부터 다시 수행할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 정적 스케쥴 프로세서의 논블로킹 실행 장치
110: 입력 버퍼 120: 프로세서
121: 연산 유닛 130: 결과 검색 신호
140: 결과 저장 신호 150: 완료 플래그 신호

Claims (25)

  1. 전달되는 입력 데이터를 이용하여 적어도 하나 이상의 연산을 처리하는 프로세서; 및
    상기 입력 데이터를 상기 프로세서에 전달하고, 상기 적어도 하나 이상의 연산에 대한 처리 결과를 저장하는 입력 버퍼
    를 포함하고,
    상기 프로세서는,
    상기 적어도 하나 이상의 연산을 각각 수행하는 적어도 하나 이상의 연산 유닛을 포함하고,
    상기 적어도 하나 이상의 연산 유닛은,
    상기 전달되는 입력 데이터를 레귤러 레이턴시의 연산 및 이레귤러 레이턴시의 연산 중에서 적어도 하나의 연산을 이용하여 선택적으로 처리하고,
    상기 입력 데이터를 처리하기 위해서 상기 이레귤러 레이턴시의 연산을 사용하고, 상기 입력 데이터에 대한 이전의 연산 결과값이 입력 버퍼에 저장되어 있지 않을 때, 상기 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 연산을 실행하고, 상기 연산의 실행 중에 추가 레이턴시가 발생하는지 여부를 판단하고,
    상기 연산의 실행 중에 추가 레이턴시가 발생하는 경우, 더미 값을 출력하고, 상기 출력된 더미 값에 상응하는 상태 비트를 상기 입력 버퍼에 기록하는
    정적 스케쥴 프로세서의 논블로킹 실행 장치.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 적어도 하나 이상의 연산 유닛은,
    상기 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있는 경우, 스케쥴로 정의되어 있는 기본 레이턴시 후에 상기 이전의 연산 결과 값을 출력하는 정적 스케쥴 프로세서의 논블로킹 실행 장치.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 적어도 하나 이상의 연산 유닛은,
    상기 추가 레이턴시가 발생한 연산의 실행이 끝난 후, 연산의 최종적인 결과값을 상기 입력 버퍼에 기록하는 정적 스케쥴 프로세서의 논블로킹 실행 장치.
  8. 제1항에 있어서,
    상기 적어도 하나 이상의 연산 유닛은,
    상기 연산의 실행 중에 추가 레이턴시가 발생하지 않는 경우, 상기 연산의 실행에 따른 결과 값을 출력하고, 상기 출력된 결과 값을 상기 입력 버퍼에 기록하는 정적 스케쥴 프로세서의 논블로킹 실행 장치.
  9. 제1항에 있어서,
    상기 입력 버퍼는 상태 레지스터 및 결과 버퍼를 포함하고,
    상기 상태 레지스터는 상기 입력 데이터에 대한 상태를 저장하며,
    상기 결과 버퍼는 이전의 연산 결과값을 저장하는 정적 스케쥴 프로세서의 논블로킹 실행 장치.
  10. 제9항에 있어서,
    상기 상태 레지스터는,
    상기 입력 데이터에 대해 연산을 재수행 할 것인지의 여부에 대한 상태를 저장하는 정적 스케쥴 프로세서의 논블로킹 실행 장치.
  11. 입력 버퍼로부터 입력 데이터를 전달받고, 복수의 연산 유닛을 이용하여 연산을 수행하는 연산 처리부;
    상기 입력 데이터의 연산 중 상기 복수의 연산 유닛 중에서 적어도 하나에 추가 레이턴시가 발생하는지를 판단하는 판단부;
    상기 추가 레이턴시가 발생하는 경우에 더미 값을 출력하여 상기 입력 버퍼에 저장하고, 상기 추가 레이턴시가 발생하지 않는 경우에 상기 연산의 실행에 따른 결과 값을 출력하고, 상기 출력된 결과 값을 상기 입력 버퍼에 저장하는 저장 처리부
    를 포함하고,
    상기 연산 처리부는,
    상기 입력 데이터를 처리하기 위해서 이레귤러 레이턴시의 연산을 사용하고, 상기 입력 데이터에 대한 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 연산을 실행하고, 상기 연산의 실행 중에 추가 레이턴시가 발생하는지 여부를 판단하고,
    상기 연산의 실행 중에 추가 레이턴시가 발생하는 경우, 더미 값을 출력하고, 상기 출력된 더미 값에 상응하는 상태 비트를 상기 입력 버퍼에 저장하는
    정적 스케쥴 프로세서.
  12. 제11항에 있어서,
    상기 연산 처리부는,
    상기 입력 버퍼에 상기 이전의 연산 결과값이 저장되어 있는 경우 스케쥴로 정의되어 있는 기본 레이턴시 후에 상기 이전의 연산 결과 값을 출력하는 정적 스케쥴 프로세서.
  13. 삭제
  14. 프로세서에서, 전달되는 입력 데이터를 이용하여 적어도 하나 이상의 연산을 처리하는 단계; 및
    입력 버퍼에서, 상기 입력 데이터를 상기 프로세서에 전달하고, 상기 적어도 하나 이상의 연산에 대한 처리 결과를 저장하는 단계
    를 포함하고,
    상기 적어도 하나 이상의 연산을 처리하는 단계는,
    상기 전달되는 입력 데이터를 레귤러 레이턴시의 연산 및 이레귤러 레이턴시의 연산 중에서 적어도 하나의 연산을 이용하여 처리하는 단계를 포함하고,
    상기 적어도 하나 이상의 연산을 처리하는 단계는,
    상기 입력 데이터를 상기 레귤러 레이턴시의 연산으로 처리할 것인지 또는 상기 이레귤러 레이턴시의 연산으로 처리할 것인지를 판단하는 단계;
    상기 입력 데이터를 상기 이레귤러 레이턴시의 연산으로 처리하는 경우, 상기 입력 데이터에 대한 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 연산을 실행하고, 상기 연산의 실행 중에 추가 레이턴시가 발생하는지 여부를 판단하는 단계; 및
    상기 연산의 실행 중에 추가 레이턴시가 발생하는 경우, 더미 값을 출력하고, 상기 출력된 더미 값에 상응하는 상태 비트를 상기 입력 버퍼에 기록하는 단계를 포함하는
    정적 스케쥴 프로세서의 논블로킹 실행 방법.
  15. 삭제
  16. 삭제
  17. 제14항에 있어서,
    상기 적어도 하나 이상의 연산을 처리하는 단계는,
    상기 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있는 경우, 스케쥴로 정의되어 있는 기본 레이턴시 후에 상기 이전의 연산 결과 값을 출력하는 단계를 포함하는 정적 스케쥴 프로세서의 논블로킹 실행 방법.
  18. 삭제
  19. 삭제
  20. 제14항에 있어서,
    상기 적어도 하나 이상의 연산을 처리하는 단계는,
    상기 추가 레이턴시가 발생한 연산의 실행이 끝난 후, 연산의 최종적인 결과값을 상기 입력 버퍼에 기록하는 단계
    를 포함하는 정적 스케쥴 프로세서의 논블로킹 실행 방법.
  21. 제14항에 있어서,
    상기 적어도 하나 이상의 연산을 처리하는 단계는,
    상기 연산의 실행 중에 추가 레이턴시가 발생하지 않는 경우, 상기 연산의 실행에 따른 결과 값을 출력하는 단계; 및
    상기 출력된 결과 값을 상기 입력 버퍼에 기록하는 단계
    를 포함하는 정적 스케쥴 프로세서의 논블로킹 실행 방법.
  22. 연산 처리부에서, 입력 버퍼로부터 입력 데이터를 전달받고, 복수의 연산 유닛을 이용하여 연산을 수행하는 단계;
    판단부에서, 상기 입력 데이터의 연산 중 상기 복수의 연산 유닛 중에서 적어도 하나에 추가 레이턴시가 발생하는지를 판단하는 단계;
    저장 처리부에서, 상기 추가 레이턴시가 발생하는 경우에 더미 값을 출력하여 상기 입력 버퍼에 저장하고, 상기 추가 레이턴시가 발생하지 않는 경우에 상기 연산의 실행에 따른 결과 값을 출력하고, 상기 출력된 결과 값을 상기 입력 버퍼에 저장하는 단계
    를 포함하고,
    상기 연산을 수행하는 단계는,
    상기 입력 데이터를 처리하기 위해서 이레귤러 레이턴시의 연산을 사용하고, 상기 입력 데이터에 대한 이전의 연산 결과값이 상기 입력 버퍼에 저장되어 있지 않은 경우, 연산을 실행하고, 상기 연산의 실행 중에 추가 레이턴시가 발생하는지 여부를 판단하는 단계; 및
    상기 연산의 실행 중에 추가 레이턴시가 발생하는 경우, 더미 값을 출력하고, 상기 출력된 더미 값에 상응하는 상태 비트를 상기 입력 버퍼에 저장하는 단계를 포함하는
    정적 스케쥴 프로세서의 동작 방법.
  23. 제22항에 있어서,
    상기 연산을 수행하는 단계는,
    상기 입력 버퍼에 상기 이전의 연산 결과값이 저장되어 있는 경우 스케쥴로 정의되어 있는 기본 레이턴시 후에 상기 이전의 연산 결과 값을 출력하는 단계
    를 포함하는 정적 스케쥴 프로세서의 동작 방법.
  24. 삭제
  25. 제14항, 제17항 및 제20항 내지 제23항 중에서 어느 한 항의 방법을 수행하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
KR1020130025509A 2013-03-11 2013-03-11 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법 KR102028729B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020130025509A KR102028729B1 (ko) 2013-03-11 2013-03-11 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법
JP2014040668A JP6474196B2 (ja) 2013-03-11 2014-03-03 静的スケジュールプロセッサのノンブロッキング実行装置及び方法
CN201410079697.6A CN104050034B (zh) 2013-03-11 2014-03-06 用于静态调度处理器的无阻塞执行的设备和方法
US14/199,154 US9405546B2 (en) 2013-03-11 2014-03-06 Apparatus and method for non-blocking execution of static scheduled processor
EP20140158460 EP2778906A1 (en) 2013-03-11 2014-03-10 Apparatus and method for non-blocking execution on static scheduled processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130025509A KR102028729B1 (ko) 2013-03-11 2013-03-11 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140111416A KR20140111416A (ko) 2014-09-19
KR102028729B1 true KR102028729B1 (ko) 2019-11-04

Family

ID=50389194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130025509A KR102028729B1 (ko) 2013-03-11 2013-03-11 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법

Country Status (5)

Country Link
US (1) US9405546B2 (ko)
EP (1) EP2778906A1 (ko)
JP (1) JP6474196B2 (ko)
KR (1) KR102028729B1 (ko)
CN (1) CN104050034B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102101834B1 (ko) 2013-10-08 2020-04-17 삼성전자 주식회사 영상 처리 장치 및 방법
JP7218594B2 (ja) * 2019-01-31 2023-02-07 オムロン株式会社 処理装置、ドライバモニタリングシステム、処理方法、及びプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010042187A1 (en) * 1998-12-03 2001-11-15 Marc Tremblay Variable issue-width vliw processor
US6519694B2 (en) * 1999-02-04 2003-02-11 Sun Microsystems, Inc. System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US20060095715A1 (en) * 2002-12-30 2006-05-04 Koninklijke Philips Electronics N.V. Very long instruction word processor
US20090150890A1 (en) * 2007-12-10 2009-06-11 Yourst Matt T Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US8719553B2 (en) 2008-01-31 2014-05-06 Arm Norway As Method for re-circulating a fragment through a rendering pipeline
CN101777027B (zh) * 2010-01-21 2012-06-06 龙芯中科技术有限公司 基于动静态混合调度策略的访存操作管理装置及其方法
GB2494731B (en) * 2011-09-06 2013-11-20 Nds Ltd Preventing data extraction by sidechannel attack

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Andrew Hilton, Santosh Nagarakatte, and Amir Roth, "iCFP : Tolerating All-Level Cache Misses in In-Order Processors", Apeears in Proceedings of HPCA-15th, Feb. 2009

Also Published As

Publication number Publication date
CN104050034B (zh) 2019-11-01
US20140258690A1 (en) 2014-09-11
KR20140111416A (ko) 2014-09-19
CN104050034A (zh) 2014-09-17
US9405546B2 (en) 2016-08-02
JP6474196B2 (ja) 2019-02-27
JP2014174994A (ja) 2014-09-22
EP2778906A1 (en) 2014-09-17

Similar Documents

Publication Publication Date Title
US8990543B2 (en) System and method for generating and using predicates within a single instruction packet
WO2016169318A1 (zh) 扩展内存的访问方法、设备以及系统
US20140317628A1 (en) Memory apparatus for processing support of long routing in processor, and scheduling apparatus and method using the memory apparatus
JP6633119B2 (ja) 自律的メモリの方法及びシステム
JP2009540411A (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP2012529096A (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
JP6796717B2 (ja) 分岐ターゲットバッファの圧縮
US11693661B2 (en) Mechanism for interrupting and resuming execution on an unprotected pipeline processor
KR20190033084A (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
US20220113966A1 (en) Variable latency instructions
KR102028729B1 (ko) 정적 스케쥴 프로세서의 논블로킹 실행 장치 및 방법
US9639472B2 (en) Prefetch list management in a computer system
US20210326136A1 (en) Entering protected pipeline mode with clearing
RU2450329C2 (ru) Эффективный механизм сохранения адреса возврата из прерывания
JP5902208B2 (ja) データ処理装置
US9983932B2 (en) Pipeline processor and an equal model compensator method and apparatus to store the processing result
JP5440083B2 (ja) シミュレーション装置、方法およびプログラム
US8732721B2 (en) Method for reducing trap overhead when executing a guest in a virtual machine
KR20080078133A (ko) 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서
US11928470B1 (en) Advancing a program counter to a start of a subsequent cache line based on a straddling group indicator in a current cache line
US20220229662A1 (en) Super-thread processor
TW200407782A (en) Status register update logic optimization
US20140082336A1 (en) Target buffer address region tracking
JP5679263B2 (ja) 情報処理装置及びマイクロ命令処理方法
JP2014059665A (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