KR20240017740A - 소프트 플로트 함수 회로를 포함하는 시스템-온-칩 - Google Patents

소프트 플로트 함수 회로를 포함하는 시스템-온-칩 Download PDF

Info

Publication number
KR20240017740A
KR20240017740A KR1020230071114A KR20230071114A KR20240017740A KR 20240017740 A KR20240017740 A KR 20240017740A KR 1020230071114 A KR1020230071114 A KR 1020230071114A KR 20230071114 A KR20230071114 A KR 20230071114A KR 20240017740 A KR20240017740 A KR 20240017740A
Authority
KR
South Korea
Prior art keywords
floating point
soft float
function
float function
interface
Prior art date
Application number
KR1020230071114A
Other languages
English (en)
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 US18/362,596 priority Critical patent/US20240036817A1/en
Publication of KR20240017740A publication Critical patent/KR20240017740A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/02System on chip [SoC] design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/08Intellectual property [IP] blocks or IP cores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 개시의 일 실시 예에 따른 시스템-온-칩은 제1 소프트 플로트 함수에 대한 제1 명령어를 포함하는 제1 함수 신호를 생성하고, 부동 소수점 연산 기능이 없는 중앙 처리 장치, 시스템 버스 및 시스템 버스를 통해, 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하고, 제1 명령어에 기초하여 제1 소프트 플로트 함수에 대응하는 제1 부동 소수점 연산을 수행하도록 구성된 소프트 플로트 함수 회로를 포함한다.

Description

소프트 플로트 함수 회로를 포함하는 시스템-온-칩{SYSTEM-ON-A-CHIP INCLUDING SOFT FLOAT FUNCTION CIRCUIT}
본 개시는 집적회로(INTEGRATED CIRCUITS)에 관한 것으로, 보다 상세하게는 소프트 플로트 함수 회로를 포함하는 시스템 온 칩에 관한 것이다.
시스템 온-칩은 중앙 처리 장치(CPU)와 하드웨어 IP(Intellectual Properties)블록들을 포함한다. 하드웨어 IP 블록은 시스템 온-칩에 사용되는 특정 기능을 담당하고 있는 반도체 회로를 의미한다.
시스템 온-칩이 동작할 때, 부동 소수점 연산이 요구될 수 있다. 이를 위해, 시스템 온-칩의 중앙 처리 장치(CPU)는 부동 소수점 연산을 수행하는 하드웨어를 포함할 수 있다. 또한, 중앙 처리 장치(CPU)는, 별도의 부동 소수점 연산을 수행하는 하드웨어 없이, 소프트웨어적으로 부동 소수점 연산을 수행할 수 있다.
중앙 처리 장치(CPU)가 부동 소수점 연산을 수행하는 경우, 시스템-온-칩의 전력 소모가 증가하거나 성능이 감소할 수 있다.
본 개시의 목적은 소프트 플로트 함수 회로를 포함하는 시스템-온-칩을 제공하는데 있다.
본 개시의 일 실시 예에 따른 시스템-온-칩은 제1 소프트 플로트 함수에 대한 제1 명령어를 포함하는 제1 함수 신호를 생성하고, 부동 소수점 연산 기능이 없는 중앙 처리 장치, 시스템 버스 및 상기 시스템 버스를 통해, 상기 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하고, 상기 제1 명령어에 기초하여 상기 제1 소프트 플로트 함수에 대응하는 제1 부동 소수점 연산을 수행하도록 구성된 소프트 플로트 함수 회로를 포함한다.
일 실시 예에서, 상기 제1 함수 신호는 상기 제1 소프트 플로트 함수에 대한 제1 파라미터를 더 포함하고, 상기 소프트 플로트 함수 회로는 상기 제1 명령어 및 상기 제1 파라미터를 저장하도록 구성된 저장 장치를 더 포함한다.
일 실시 예에서, 상기 저장 장치는 선입 선출 저장 장치, 레지스터, 및 메모리 중 적어도 하나를 포함한다.
일 실시 예에서, 상기 소프트 플로트 함수 회로는 각각이 부동 소수점 연산을 수행하도록 구성된 복수의 부동 소수점 장치들 및 상기 제1 함수 신호에 응답하여, 상기 부동 소수점 장치들 중 적어도 하나의 부동 소수점 장치가 상기 제1 부동 소수점 연산을 수행하도록, 상기 복수의 부동 소수점 장치들 및 상기 저장 장치를 제어하도록 구성된 제어기를 더 포함한다.
일 실시 예에서, 상기 중앙 처리 장치(CPU)는 제2 소프트 플로트 함수에 대한 제2 명령어를 포함하는 제2 함수 신호를 더 생성하고, 상기 소프트 플로트 함수 회로는 상기 시스템 버스를 통해, 상기 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하는 경우, 상기 제1 명령어에 기초하여 상기 제1 소프트 플로트 함수에 대응하는 상기 제1 부동 소수점 연산을 수행하고, 상기 시스템 버스를 통해, 상기 중앙 처리 장치로부터 상기 제2 함수를 신호를 수신하는 경우, 상기 제2 명령어에 기초하여 상기 제2 소프트 플로트 함수에 대응하는 제2 부동 소수점 연산을 수행하도록 더 구성된다.
일 실시 예에서, 상기 소프트 플로트 함수 회로가 상기 제1 함수 신호 및 상기 제2 함수 신호를 동시에 수신하는 경우, 상기 제어기는 상기 복수의 부동 소수점 장치들이 상기 제1 부동 소수점 연산을 수행한 뒤, 상기 제2 부동 소수점 연산을 수행하도록, 상기 복수의 부동 소수점 장치들 및 상기 저장 장치를 제어하도록 더 구성된다.
일 실시 예에서, 상기 소프트 플로트 함수 회로가 상기 제1 함수 신호 및 상기 제2 함수 신호를 동시에 수신하는 경우, 상기 제어기는 상기 복수의 부동 소수점 장치들이 제1 부동 소수점 연산 및 상기 제2 부동 소수점 연산을 병렬적으로 수행하도록 상기 복수의 부동 소수점 장치들 및 상기 저장 장치를 제어하도록 더 구성된다.
일 실시 예에서, 상기 시스템 버스는 제1 인터페이스를 통해 상기 중앙 처리 장치와 연결되고 제2 인터페이스를 통해 상기 소프트 플로트 함수 회로와 연결되고, 상기 소프트 플로트 함수 회로는 상기 제1 인터페이스, 상기 시스템 버스 및 상기 제2 인터페이스를 통해, 상기 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하도록 구성된다.
일 실시 예에서, 제3 인터페이스를 통해 상기 시스템 버스와 연결되는 메모리 장치를 더 포함하고, 상기 소프트 플로트 함수 회로는 제4 인터페이스를 통해 상기 시스템 버스와 더 연결된다.
일 실시 예에서, 상기 제4 인터페이스의 전송 속도는 상기 제2 인터페이스의 전송 속도보다 빠르다.
일 실시 예에서, 상기 소프트 플로트 함수 회로는 상기 소프트 플로트 함수 회로 및 상기 메모리 장치 사이의 직접 메모리 엑세스 동작을 수행하도록 구성된 DMA 엔진을 더 포함하고, 상기 직접 메모리 엑세스 동작에 기초하여 상기 제3 인터페이스, 상기 제4 인터페이스 및 상기 시스템 버스를 통해, 상기 메모리 장치로부터 상기 제1 부동 소수점 연산을 수행하기 위해 필요한 데이터를 포함하는 데이터 신호를 수신한다.
본 개시의 일 실시 예에 따른 시스템-온-칩은 시스템 버스, 제1 인터페이스를 통해 상기 시스템 버스에 연결되고, 제1 소프트 플로트함수에 대한 제1 명령어를 포함하는 제1 함수 신호 및 제2 소프트 플로트 함수에 대한 제2 명령어를 포함하는 제2 함수 신호를 생성하고, 부동 소수점 연산 기능이 없는 중앙 처리 장치, 제2 인터페이스를 통해 상기 시스템 버스에 연결되고, 상기 제1 인터페이스, 상기 시스템 버스 및 상기 제2 인터페이스를 통해, 상기 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하고, 상기 제1 명령어에 기초하여 상기 제1 소프트 플로트 함수에 대응하는 제1 부동 소수점 연산을 수행하도록 구성된 제1 소프트 플로트 함수 회로, 제3 인터페이스를 통해 상기 시스템 버스에 연결되고, 상기 제1 인터페이스, 상기 시스템 버스 및 상기 제3 인터페이스를 통해, 상기 중앙 처리 장치로부터 상기 제2 함수 신호를 수신하고, 상기 제2 명령어에 기초하여 상기 제2 소프트 플로트 함수에 대응하는 제2 부동 소수점 연산을 수행하도록 구성된 제2 소프트 플로트 함수 회로 및 상기 제1 부동 소수점 연산에 필요한 제1 데이터 및 상기 제2 부동 소수점 연산에 필요한 제2 데이터를 저장하도록 구성되고, 제4 인터페이스를 통해 상기 시스템 버스에 연결되는 메모리 장치를 포함한다.
일 실시 예에서, 상기 제1 함수 신호는 상기 제1 소프트 플로트 함수에 대한 제1 파라미터를 더 포함하고, 상기 제1 소프트 플로트 함수 회로는 상기 제1 명령어 및 상기 제1 파라미터를 저장하도록 구성된 제1 저장 장치를 더 포함한다.
일 실시 예에서, 상기 제1 소프트 플로트 함수 회로는 각각이 부동 소수점 연산을 수행하도록 구성된 복수의 제1 부동 소수점 장치들; 및 상기 제1 함수 신호에 응답하여, 복수의 제1 부동 소수점 장치들 중 적어도 하나의 제1 부동 소수점 장치가 상기 제1 부동 소수점 연산을 수행하도록, 상기 복수의 제1 부동 소수점 장치들 및 상기 제1 저장 장치를 제어하도록 구성된 제1 제어기를 포함한다.
일 실시 예에서, 상기 제1 소프트 플로트 함수 회로는 제5 인터페이스를 통해 상기 시스템 버스에 더 연결되고, 상기 제1 소프트 플로트 함수 회로 및 상기 메모리 장치 사이의 직접 메모리 엑세스 동작을 수행하도록 구성된 DMA 엔진을 더 포함하고, 상기 제4 인터페이스, 상기 시스템 버스 및 상기 제5 인터페이스를 통해 상기 메모리 장치로부터 상기 제1 데이터를 포함하는 제1 데이터 신호를 수신하고, 상기 제5 인터페이스의 전송 속도는 상기 제2 인터페이스의 전송 속도보다 빠르다.
일 실시 예에서, 상기 시스템-온-칩은 제1 시구간 동안 동작하고, 상기 제1 시구간 동안, 상기 제1 소프트 플로트 함수 회로 및 상기 제2 소프트 플로트 함수 회로는 선택적으로 켜지도록 구성된다.
본 개시에 따르면, 시스템 온-칩은 정수연산만을 수행하는 중앙 처리 장치(CPU) 및 부동 소수점 연산을 수행하는 소프트 플로트 함수 회로를 포함할 수 있다.
중앙 처리 장치(CPU)가 직접 부동 소수점 연산을 수행하지 않기 때문에, 설계 비용이 감소되고, 전력 소모가 감소될 수 있다.
도 1은 시스템-온-칩(SoC; System-on-Chip)을 보여주는 블록도이다.
도 2는 본 개시의 실시 예에 따른 시스템-온-칩(SoC; System-on-Chip)을 보여주는 블록도이다.
도 3은 도 2의 소프트 플로트 함수 회로의 일 예를 보여주는 블록도이다.
도 4는 도 2의 소프트 플로트 함수 회로의 다른 예를 보여주는 블록도이다.
도 5는 본 개시의 실시 예에 따른 시스템-온-칩(SoC; System-on-Chip)의 다른 예를 설명하기 위한 도면이다.
도 6은 본 개시의 실시 예에 따른 시스템-온-칩(SoC; System-on-Chip)의 다른 예를 설명하기 위한 도면이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다. 이하에서 사용되는 "블록(block)", "유닛 또는 부(unit)", "모듈(module)" 등과 같은 용어들 또는 그것들과 대응되는 구성들은 소프트웨어, 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
도 1은 시스템-온-칩(SoC; System-on-Chip)을 보여주는 블록도이다. 도 1을 참조하면, SoC(100)는 중앙 처리 장치(CPU; Central Processing Unit)(110), 메모리 장치(120), 주변 장치(130), 스토리지 장치(140) 및 시스템 버스(System Bus, 150)를 포함할 수 있다.
SoC(100)는 SoC(100)를 포함하는 전자 장치(미도시)의 전반적인 동작을 제어할 수 있다. 예를 들어, SoC(100)는 전자 장치의 전반적인 동작을 제어하도록 구성된 애플리케이션 프로세서(AP; Application Processor)일 수 있다. SoC(100)는 전자 장치에서 실행되는 운영 체제, 프로그램 또는 애플리케이션을 실행할 수 있다. 예를 들어, SoC(100)는 IoT(Internet of Things) 기술에 사용되는 장치(이하, IoT 기기라고 지칭한다.)에 포함될 수 있다.
중앙 처리 장치(110)는 전자 장치에서 수행되는 다양한 연산을 수행하고, 데이터를 처리할 수 있다. 중앙 처리 장치(110)는 시스템 버스(150)를 통해 다른 장치들(예를 들어, 메모리 장치(120), 주변 장치(130) 및 스토리지 장치(140))과 통신할 수 있다.
중앙 처리 장치(110)는 사이즈가 크고, 고속 연산을 수행(또는 동작 주파수가 높음)하며, 범용적인 연산을 담당할 수 있다. 예를 들어, 중앙 처리 장치(110)는 정수(Integer) 연산 및 부동 소수점(Floating Point) 연산을 수행할 수 있다.
메모리 장치(120)는 중앙 처리 장치(110)로부터 수신된 신호들에 응답하여 데이터를 저장하거나 또는 저장된 데이터를 중앙 처리 장치(110)로 제공할 수 있다. 일 실시 예에서, 메모리 장치(150)는 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)을 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
예를 들어, SoC(100)가 IoT 기기에 포함되는 경우, 제작 비용의 감소를 위해, 메모리 장치(120)는 SRAM(Static Random Access Memory)만을 포함할 수 있다.
주변 장치(130)는 다양한 기능을 수행하도록 구성된 장치일 수 있다. 일 실시 예에서, 주변 장치(130)는 모뎀(MODEM; MOdulator and DEModulator), GPU(Graphics Processing Unit), 입출력 처리부, 표시부, 터치 입력 장치, 오디오 처리부, 통신 시스템 등과 같은 별도의 하드웨어 장치들일 수 있다.
스토리지 장치(140)는 SoC(100)의 저장 매체(Storage Medium)일 수 있다. 스토리지 장치(140)는 응용 프로그램들, 운영 체제 이미지, 및 다양한 데이터를 저장할 수 있다. 스토리지 장치(140)는 MMC, eMMC, SD, MicroSD 등과 같은 메모리 카드일 수 있다. 또는, 스토리지 장치(140)는 NAND 플래시 메모리, NOR 플래 시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
시스템 버스(150)는 인터페이스(IF)들을 통해 SoC(100)의 구성요소들(110~140)과 연결될 수 있다. 시스템 버스(150)는 SoC(100)의 구성요소들(110~140) 사이에서 데이터 또는 신호가 전송되는 통로일 수 있다.
예를 들어, 중앙 처리 장치(110)는 부동 소수점 연산을 수행하기 위한 하드웨어 장치를 포함할 수 있다. 이 경우, 중앙 처리 장치(110)는 하드웨어 장치를 통해 부동 소수점 연산을 수행할 수 있다. 그러나, 부동 소수점 연산을 수행하기 위한 하드웨어 장치는 부동 소수점 연산을 수행하지 않는 경우에도 동작되어야 할 수 있다. 이에 따라, SoC(100)의 전력 소모가 증가할 수 있다. 또한, 부동 소수점 연산을 수행하기 위한 하드웨어 장치를 포함하는 중앙 처리 장치(110)를 설계하기 위한 설계 비용이 증가할 수 있다.
IoT 기기는 특정 사물에 포함되어야 하므로 낮은 전력을 소모하면서 동작해야 할 수 있다. IoT 기기에 포함되는 SoC(100)의 중앙 처리 장치(110)가 부동 소수점 연산을 수행하기 위한 하드웨어 장치를 포함하는 경우, 상술된 바와 같이, 전력 소모가 증가할 수 있다. 따라서, IoT 기기에 포함되는 SoC(100)의 중앙 처리 장치(110)는 부동 소수점 연산을 수행하는 하드웨어 장치를 포함하지 않아야 할 수 있다.
중앙 처리 장치(110)는 별도의 하드웨어 장치 없이 부동 소수점 연산을 수행하기 위해, 소프트 플로트(Soft-Float) 기법을 사용할 수 있다. 소프트 플로트 기법은 별도의 하드웨어 장치 없이, 소프트 플로트 함수를 이용하여, 부동 소수점 연산을 수행하는 기법을 의미할 수 있다. 소프트 플로트 기법을 사용하는 경우, 중앙 처리 장치(110)는 정수연산만을 이용하여 소프트웨어적으로 부동 소수점 연산을 수행할 수 있다.
중앙 처리 장치(110)가 소프트 플로트 기법을 통해 부동 소수점 연산을 수행하는 경우, 부동 소수점 연산에 사용되는 소프트 플로트 함수의 종류와 코드의 크기는 다양할 수 있다. 표 1은 소프트 플로트 함수의 종류와 코드의 크기에 대한 예시들을 도시한다.
표 1을 참조하면, 소프트 플로트 함수를 포함하는 소프트웨어 코드의 크기는 정수 연산에 필요한 소프트웨어 코드의 크기에 비해 클 수 있다.
상술된 바와 같이, SoC(100)가 IoT 기기에 포함되는 경우, 메모리 장치(120)는 SRAM만을 포함할 수 있다. 이에 따라, 메모리 장치(120)의 용량은 DRAM을 사용하는 경우에 비해 작을 수 있다. 소프트 플로트 함수를 포함하는 소프트웨어 코드의 크기는 크고 메모리 장치(120)의 용량은 작으므로, 중앙 처리 장치(110)가 부동 소수점 연산을 수행하기 위해 소프트 플로트 기법을 사용하는 경우, 중앙 처리 장치(110)는 스토리지 장치(140)에 과도하게 자주 접근해야 할 수 있다. 이에 따라, SoC(100)의 연산 속도가 느려지고, 전체 성능이 저하될 수 있다.
따라서, 소프트 플로트 기법을 사용하여 부동 소수점 연산을 수행하는 중앙 처리 장치를 포함하는 SoC는 IoT 기기에서 사용하기에 적절하지 않을 수 있다.
도 2는 본 개시의 실시 예에 따른 시스템-온-칩(SoC; System-on-Chip)을 보여주는 블록도이다. 도 2를 참조하면, SoC(200)는 중앙 처리 장치(210), 메모리 장치(220), 주변 장치(230), 스토리지 장치(240), 소프트 플로트 함수 회로(250) 및 시스템 버스(260)를 포함할 수 있다.
SoC(200)는 SoC(200)를 포함하는 전자 장치(미도시)의 전반적인 동작을 제어할 수 있다. 예를 들어, SoC(200)는 전자 장치의 전반적인 동작을 제어하도록 구성된 애플리케이션 프로세서(AP; Application Processor)일 수 있다. SoC(200)는 전자 장치에서 실행되는 운영 체제, 프로그램 또는 애플리케이션을 실행할 수 있다. 일 실시 예에서, SoC(200)는 IoT 기기에 포함될 수 있다.
중앙 처리 장치(210)는 전자 장치에서 수행되는 다양한 정수연산을 수행하고, 데이터를 처리할 수 있다. 중앙 처리 장치(110)는 시스템 버스(260)를 통해 다른 장치들(예를 들어, 메모리 장치(220), 주변 장치(230), 스토리지 장치(240) 및 소프트 플로트 함수 회로(250)와 통신할 수 있다. 중앙 처리 장치(210)는 도 1의 경우와 달리, 정수연산만을 수행할 수 있다. 즉, 중앙 처리 장치(210)에는 부동 소수점 연산 기능이 없을 수 있다.
중앙 처리 장치(210)는 부동 소수점 연산과 관련된 함수 신호를 생성할 수 있다. 함수 신호는 목표 소프트 플로트 함수에 대한 명령어 및 목표 소프트 플로트 함수에 대한 파리미터들을 포함할 수 있다.
예를 들어, 중앙 처리 장치(210)는 제1 소프트 플로트 함수에 대한 제1 명령어를 포함하는 제1 함수 신호를 생성할 수 있고, 제2 소프트 플로트 함수에 대한 제2 명령어를 포함하는 제2 함수 신호를 생성할 수 있다.
메모리 장치(220)는 중앙 처리 장치(210)로부터 수신된 신호들에 응답하여 데이터를 저장하거나 또는 저장된 데이터를 중앙 처리 장치(210)로 제공할 수 있다. 일 실시 예에서, 메모리 장치(150)는 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)을 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
일 실시 예에서, 메모리 장치(220)는 소프트 플로트 함수 회로(250)로부터 수신된 신호들에 응답하여 저장된 데이터를 소프트 플로트 함수 회로(250)로 전달할 수 있다.
예를 들어, SoC(100)가 IoT 기기에 포함되는 경우, 제작 비용의 감소를 위해, 메모리 장치(120)는 SRAM(Static Random Access Memory)만을 포함할 수 있다.
주변 장치(230)는 다양한 기능을 수행하도록 구성된 장치일 수 있다. 일 실시 예에서, 주변 장치(230)는 모뎀(MODEM; MOdulator and DEModulator), GPU(Graphics Processing Unit), 입출력 처리부, 표시부, 터치 입력 장치, 오디오 처리부, 통신 시스템 등과 같은 별도의 하드웨어 장치들일 수 있다.
스토리지 장치(240)는 SoC(200)의 저장 매체(Storage Medium)일 수 있다. 스토리지 장치(240)는 응용 프로그램들, 운영 체제 이미지, 및 다양한 데이터를 저장할 수 있다. 스토리지 장치(240)는 MMC, eMMC, SD, MicroSD 등과 같은 메모리 카드일 수 있다. 또는, 스토리지 장치(140)는 NAND 플래시 메모리, NOR 플래 시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
소프트 플로트 함수 회로(250)는 시스템 버스(260)를 통해 중앙 처리 장치(210)로부터 함수 신호를 수신할 수 있다. 소프트 플로트 함수 회로(250)는 함수 신호에 포함되는 명령어에 대응되는 소프트 플로트 함수의 기능을 구현하기 위한 부동 소수점 연산을 수행할 수 있다. 즉, 소프트 플로트 함수 회로(250)는 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다.
다시 말해, 소프트 플로트 함수 회로(250)는 목표 소프트 플로트 함수의 기능을 구현하기 위한 하드웨어 장치일 수 있다. 소프트 플로트 함수 회로(250)는 함수 신호에 포함되는 명령어에 기초하여 목표 소프트 플로트 함수를 식별하고, 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다.
다시 말해, 본 개시의 실시 예에 따르면, 정수연산만을 수행하는 중앙 처리 장치 및 부동 소수점 연산을 수행하는 소프트 플로트 함수 회로를 포함하는 SoC가 제공될 수 있다. 중앙 처리 장치는 부동 소수점 연산을 수행하기 위한 하드웨어 장치를 포함하지 않을 수 있다. 또한, 중앙 처리 장치는 크기가 큰 소프트 플로트 함수를 사용하여 부동 소수점 연산을 수행하지 않을 수 있다. 한편, 부동 소수점 연산은 중앙 처리 장치와 별도로 구비되는 소프트 플로트 함수 회로에 의해 수행될 수 있다. 소프트 플로트 함수 회로는 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다. 이에 따라, 성능 저하 문제 또는 전력 소모 문제 없이 부동 소수점 연산을 수행할 수 있는 SoC가 제공될 수 있다.
시스템 버스(260)는 인터페이스(IF)들을 통해 SoC(200)의 구성요소들(210~250)과 연결될 수 있다. 시스템 버스(260)는 SoC(200)의 구성요소들(210~250) 사이에서 데이터 또는 신호가 전송되는 통로일 수 있다.
도 3은 도 2의 소프트 플로트 함수 회로의 일 예를 보여주는 블록도이다. 도 3을 참조하면, 소프트 플로트 함수 회로(250)는 부동 소수점 장치들(Floating Point Unit; FPU, 251a~251n), 저장 장치(252) 및 제어기(253)를 포함할 수 있다.
예를 들어, 소프트 플로트 함수 회로(250)는 제1 인터페이스(I1) 및 제2 인터페이스(I2)를 통해 시스템 버스(260)와 연결될 수 있다. 소프트 플로트 함수 회로(250)는 중앙 처리 장치(도 2의 210)로부터, 제1 인터페이스(IF1) 및 시스템 버스(260)를 통해, 함수 신호(FS)를 수신할 수 있다. 함수 신호(FS)는 목표 소프트 플로트 함수에 대한 명령어 및 목표 소프트 플로트 함수에 대한 파라미터들을 포함할 수 있다.
또한, 소프트 플로트 함수 회로(250)는 제2 인터페이스(IF2) 및 시스템 버스(260)를 통해 중앙 처리 장치(도 2의 210)로부터, 데이터 신호(DS)를 수신할 수 있다. 데이터 신호(DS)는 메모리 장치(도 2의 220)에 저장된 데이터들을 포함할 수 있다. 메모리 장치(도 2의 220)에 저장된 데이터들은 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행하기 위해 필요한 데이터들 일 수 있다
일 실시 예에서, 제2 인터페이스(IF2)의 전송 속도는 제1 인터페이스(IF1)의 전송 속도보다 빠를 수 있다.
부동 소수점 장치들(251a~251n)은 목표 소프트 플로트 함수의 기능을 구현하기 위한 부동 소수점 연산을 수행할 수 있다. 예를 들어, 부동 소수점 장치들(251a~251n) 각각은 목표 소프트 플로트 함수의 기능을 구현하기 위해 최적화된 형태로 구성될 수 있다. 일 실시 예에서, 부동 소수점 장치들(251a~251n) 각각은 이진 부동 소수점 유닛, 십진 부동 소수점 유닛, 또는 기타 부동 소수점 유닛일 수 있다.
도 3은 소프트 플로트 함수 회로(250)가 복수의 부동 소수점 장치들(251a~251n)을 포함하는 경우를 도시하고 있으나, 본 개시는 이에 한정되지 않는다.
일 실시 예에서, 도 3에 도시된 바와 달리, 소프트 플로트 함수 회로(250)는 부동 소수점 장치들(251a~251n)을 포함하지 않을 수 있다. 이 경우, 소프트 플로트 함수 회로(250)는 하나 이상의 정수 연산기들을 포함할 수 있다. 정수 연산기들은 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다.
저장 장치(252)은 제1 인터페이스를 통해 수신된 신호들에 포함되는 데이터들을 저장할 수 있다. 예를 들어, 저장 장치(252)는 선입 선출(First In First Out; FIFO) 저장 장치, 레지스터, 메모리 등 중 어느 하나를 포함할 수 있다.
제어기(253)는 소프트 플로트 함수 회로(250)의 각 구성 요소들(251a~251n, 252)을 제어할 수 있다. 제어기(253)의 제어에 기초하여, 부동 소수점 장치들(251a~251n)은 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다.
일 실시 예에서, 소프트 플로트 함수 회로(250)는 하나의 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다. 일 실시 예에서, 소프트 플로트 함수 회로(250)는 복수의 소프트 플로트 함수들 각각에 대응하는 부동 소수점 연산들을 수행할 수 있다.
도 4는 도 2의 소프트 플로트 함수 회로의 다른 예를 보여주는 블록도이다. 도 4를 참조하면, 소프트 플로트 함수 회로(250)는 부동 소수점 장치들(251a~251n), 저장 장치(252), 제어기(253) 및 DMA 엔진(254)을 포함할 수 있다.
예를 들어, 소프트 플로트 함수 회로(250)는 제1 인터페이스(IF1) 및 제2 인터페이스(IF2)를 통해 시스템 버스(260)와 연결될 수 있다. 소프트 플로트 함수 회로(250)는 중앙 처리 장치(도 2의 210)로부터 제1 인터페이스(IF1) 및 시스템 버스(260)를 통해 함수 신호(FS)를 수신할 수 있다. 함수 신호(FS)는 목표 소프트 플로트 함수에 대한 명령어 및 목표 소프트 플로트 함수에 대한 파라미터들을 포함할 수 있다.
또한, 소프트 플로트 함수 회로(250)는 제2 인터페이스(IF2) 및 시스템 버스(260)를 통해 메모리 장치(도 2의 220)로부터 데이터 신호(DS)를 수신할 수 있다. 데이터 신호(DS)는 메모리 장치(도 2의 220)에 저장된 데이터들을 포함할 수 있다. 메모리 장치(도 2의 220)에 저장된 데이터들은 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행하기 위해 필요한 데이터들 일 수 있다.
도 4에는 하나의 제1 인터페이스(IF1) 및 하나의 제2 인터페이스(IF2)만이 도시되어 있으나 본 개시는 이에 한정되지 않는다. 인터페이스들(IF1, IF2) 각각의 개수 및 하드웨어 종류는 부동 소수점 연산을 수행하기 위해 필요한 데이터의 종류, SoC의 성능, 목적에 따라 결정될 수 있다. 즉, 소프트 플로트 함수 회로(250)는 복수의 제1 인터페이스(IF1) 및 복수의 제2 인터페이스(IF2)에 의해 시스템 버스(260)와 연결될 수 있다.
일 실시 예에서, 제2 인터페이스(IF2)를 통한 전송 속도는 제1 인터페이스(IF1)를 통한 전송 속도보다 빠를 수 있다.
부동 소수점 장치들(251a~251n)은 목표 소프트 플로트 함수의 기능을 구현하기 위한 부동 소수점 연산을 수행할 수 있다. 예를 들어, 부동 소수점 장치들(251a~251n) 각각은 목표한 소프트 플로트 함수의 기능을 구현하기 위해 최적화된 형태로 구성될 수 있다. 일 실시 예에서, 부동 소수점 장치들(251a~251n) 각각은 이진 부동 소수점 유닛, 십진 부동 소수점 유닛, 또는 기타 부동 소수점 유닛일 수 있다.
도 4는 소프트 플로트 함수 회로(250)가 복수의 부동 소수점 장치들(251a~251n)을 포함하는 경우를 도시하고 있으나, 본 개시는 이에 한정되지 않는다.
일 실시 예에서, 도 4에 도시된 바와 달리, 소프트 플로트 함수 회로(250)는 부동 소수점 장치들(251a~251n)을 포함하지 않을 수 있다. 이 경우, 소프트 플로트 함수 회로(250)는 하나 이상의 정수 연산기들을 포함할 수 있다. 정수 연산기들은 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다.
저장 장치(252)은 제1 인터페이스를 통해 수신한 신호에 포함되는 데이터들을 저장할 수 있다. 예를 들어, 저장 장치(252)는 선입 선출(First In First Out; FIFO) 저장 장치, 레지스터, 메모리 등을 포함할 수 있다.
제어기(253)는 소프트 플로트 함수 회로(250)의 각 구성 요소들(251a~254)을 제어할 수 있다. 제어기(253)의 제어에 기초하여 부동 소수점 장치들(251a~251n)은 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다.
DMA 엔진(Direct Memory Access engine)(254)은 중앙 처리 장치(도 2의 210)의 개입 없이 소프트 플로트 함수 회로(250) 및 메모리 장치(도 2의 220) 사이의 직접 메모리 접근(DMA; Direct Memory Access) 동작을 제어하는 하드웨어 장치일 수 있다.
DMA 엔진(254)의 동작에 기초하여, 소프트 플로트 함수 회로(250)는 메모리 장치(도 2의 220)와 직접 메모리 액세스 방식에 기초한 통신을 수행할 수 있다. 이에 따라, 소프트 플로트 함수 회로(250)는 제2 인터페이스(IF2) 및 시스템 버스(260)를 통해 메모리 장치(도 2의 220)로부터, 데이터 신호를 수신할 수 있다. 데이터 신호는 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산에 필요한 데이터들을 포함할 수 있다.
일 실시 예에서, 소프트 플로트 함수 회로(250)는 하나의 소프트 플로트 함수의 기능을 구현할 수 있다.
일 실시 예에서, 소프트 플로트 함수 회로(250)는 복수의 소프트 플로트 함수의 기능을 구현할 수 있다. 예를 들어, 제1 시점에서, 소프트 플로트 함수 회로(250)는 중앙 처리 장치(도 2의 210)로부터 제1 소프트 플로트 함수에 대한 제1 명령어를 포함하는 제1 함수 신호를 수신할 수 있다. 이 경우, 제어기(253)는 부동 부동 소수점 장치들(251a~251n)을 제어할 수 있다. 이에 따라, 부동 소수점 장치들(251a~251n)은 제1 소프트 플로트 함수에 대응하는 제1 부동 소수점 연산을 수행할 수 있다. 이후에 제2 시점에서, 소프트 플로트 함수 회로(250)는 중앙 처리 장치(도 2의 210)로부터 제2 소프트 플로트 함수에 대한 제2 명령어를 포함하는 제2 함수 신호를 수신할 수 있다. 이 경우, 제어기(253)는 부동 소수점 장치들(251a~251n)을 제어할 수 있다. 이에 따라, 부동 소수점 장치들(251a~251n)은 제2 소프트 플로트 함수에 대응하는 제2 부동 소수점 연산을 수행할 수 있다. 즉, 제어기(253)의 동작에 기초하여, 소프트 플로트 함수 회로(250)는 복수의 소프트 플로트 함수의 기능을 구현하기 위한 부동 소수점 연산들을 순차적으로 수행할 수 있다.
일 실시 예에서, 소프트 플로트 함수 회로(250)는 하나 이상의 소프트 플로트 함수의 기능을 구현할 수 있다. 예를 들어, 제1 시점에서, 소프트 플로트 함수 회로(250)는 중앙 처리 장치(도 2의 210)로부터 제1 소프트 플로트 함수에 대한 제1 명령어를 포함하는 제1 함수 신호 및 제2 소프트 플로트 함수에 대한 제2 명령어를 포함하는 제2 함수 신호를 수신할 수 있다. 이 경우, 제어기(253)는 부동 소수점 장치들(251a~251n)을 제어할 수 있다.
예를 들어, 제어기(253)는 부동 소수점 장치들(251a~251n)들 중 일부는 제1 소프트 플로트 함수의 기능을 수행하기 위한 제1 부동 소수점 연산을 수행하도록 제어하고, 나머지는 제2 소프트 플로트 함수의 기능을 수행하기 위한 제2 부동 소수점 연산을 수행하도록 제어할 수 있다. 즉, 제어기(253)의 동작에 기초하여, 소프트 플로트 함수 회로(250)는 다수의 소프트 플로트 함수들에 대응하는 부동 소수점 연산들을 병렬적으로 수행할 수 있다.
예를 들어, 제어기(253)는 부동 소수점 장치들(251a~251n)들이 제1 소프트 플로트 함수에 대응하는 제1 부동 소수점 연산을 먼저 수행하도록 제어할 수 있다. 제어기(253)는 제1 부동 소수점 연산의 수행이 완료된 이후에, 부동 소수점 장치들(251a~251n)들이 제2 소프트 플로트 함수에 대응하는 제2 부동 소수점 연산을 수행하도록 제어할 수 있다. 즉, 제어기(253)의 동작에 기초하여, 소프트 플로트 함수 회로(250)는 다수의 소프트 플로트 함수에 대응하는 부동 소수점 연산들을 순차적으로 수행할 수 있다.
다시 말해, 제어기(253)의 동작에 기초하여, 소프트 플로트 함수 회로(250)는 복수의 소프트 플로트 함수들에 대응하는 부동 소수점 연산들을 순차적 또는 병렬적으로 수행할 수 있다.
상술한 바와 같이, 본 개시의 실시 예에 따른 SoC는 부동 소수점 연산을 수행하는 하드웨어를 포함하지 않는 중앙 처리 장치와 소프트 플로트 함수 회로를 포함할 수 있다. 본 개시의 실시 예에 따르면, 중앙 처리 장치는 정수 연산만을 수행하고, 소프트 플로트 함수 회로는 부동 소수점 연산만을 수행할 수 있다. 따라서, 본 개시의 실시 예에 따르면 적은 전력을 소모하면서, 고속으로 동작하는 SoC가 제공될 수 있다.
도 5는 본 개시의 실시 예에 따른 시스템-온-칩(SoC; System-on-Chip)의 다른 예를 설명하기 위한 도면이다. 도 5를 참조하면, SoC(200)는 중앙 처리 장치(210), 메모리 장치(220), 주변 장치(230), 스토리지 장치(240), 복수의 소프트 플로트 함수 회로들(250a~250n) 및 시스템 버스(260)를 포함할 수 있다.
중앙 처리 장치(210), 메모리 장치(220), 주변 장치(230), 스토리지 장치(240), 및 시스템 버스(260)는 도 2와 관련해서 상술된 바와 같다. 복수의 소프트 플로트 함수 회로들(250a~250n) 각각은 도 3 또는 도 4에서 설명된 소프트 플로트 함수 회로(250)와 동일한 구성을 가질 수 있다.
일 실시 예에서, 복수의 소프트 플로트 함수 회로들(250a~250n)은 모두 동일한 소프트 플로트 함수의 기능을 구현하기 위한 부동 소수점 연산을 수행할 수 있다.
일 실시 예에서, 복수의 소프트 플로트 함수 회로들(250a~250n) 각각은 서로 다른 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다. 예를 들어, 제1 소프트 플로트 함수 회로(250a)는 제1 소프트 플로트 함수에 대응하는 제1 부동 소수점 연산을 수행할 수 있고, 제n 소프트 플로트 함수 회로(250n)는 제n 소프트 플로트 함수 기능에 대응하는 제n 부동 소수점 연산을 수행할 수 있을 수 있다.
이 경우, 제1 소프트 플로트 함수 회로(250a)는 제1 함수 신호를 수신하는 경우에 한하여, 제1 부동 소수점 연산을 수행할 수 있고, 제n 소프트 플로트 함수 회로(250n) 제n 함수 신호를 수신하는 경우에 한하여, 제n 부동 소수점 연산을 수행할 수 있을 수 있다. 이때, 제1 함수 신호는 제1 소프트 플로트 함수와 관련된 명령어를 포함할 수 있고, 제n 함수 신호는 제n 소프트 플로트 함수와 관련된 명령어를 포함할 수 있다.
예를 들어, 중앙 처리 장치(210)는 시스템 버스(260)를 통해, 제1 함수 신호를 제1 소프트 플로트 함수 회로(250a)로 전송하고, 제n 함수 신호를 제n 소프트 플로트 함수 회로(250n)로 전송하도록 구성될 수 있다. 즉, 중앙 처리 장치(210)는 생성된 함수 신호를 생성된 함수 신호와 관련된 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행하는 소프트 플로트 함수 회로로 전송하도록 구성될 수 있다.
예를 들어, 소프트 플로트 함수 회로들(250a~250n)의 개수 및 소프트 플로트 함수 회로들(250a~250n) 각각이 구현할 소프트 플로트 함수 기능의 개수는 SoC(200)의 성능, 면적, 소비전력 등 다양한 조건을 고려하여 결정될 수 있다.
일 실시 예에서, 복수의 소프트 플로트 함수 회로들(250a~250n) 각각은 외부로부터 인가되는 클럭 신호들에 기초하여 동작할 수 있다. 이때, SoC(200)의 동작 과정에서, 특정 소프트 플로트 함수에 대응하는 부동 소수점 연산이 필요하지 않을 수 있다. 이 경우, 필요하지 않은 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행하는 소프트 플로트 함수 회로에 인가되는 클럭 신호들은 차단 될 수 있다. 이에 따라, 클럭 신호들이 차단된 소프트 플로트 함수 회로들의 전원이 꺼질 수 있다. 즉, 플로트 함수 회로들(250a~250n) 각각은 중앙 처리 장치(210)와 분리되어 있으므로, 필요한 경우에만 동작할 수 있다. 이에 따라, SoC(200)의 소비 전력이 감소할 수 있다.
일 실시 예에서, SoC(200)의 동작 도중 특정 소프트 플로트 함수에 대응하는 부동 소수점 연산이 필요하지 않을 수 있다. 이 경우, 필요하지 않은 소프트 플로트 함수들에 대응하는 부동 소수점 연산들을 수행하는 소프트 플로트 함수 회로들에 인가되는 전류가 차단될 수 있다. 이에 따라, 전류가 차단된 소프트 플로트 함수 회로들의 전원이 꺼질 수 있다. 즉, 소프트 플로트 함수 회로들(250a~250n) 각각은 중앙 처리 장치(210)와 분리되어 있으므로, 필요한 경우에만 동작할 수 있다. 이에 따라, SoC(200)의 소비 전력이 감소할 수 있다.
다시 말해, 본 개시의 실시 예에 따른 SoC(200)는 클럭 게이팅(Clock Gating) 또는 파워 게이팅(Power Gating)을 통해 소프트 플로트 함수 회로들(250a~250n)을 제어할 수 있다. 즉, 소프트 플로트 함수 회로들(250a~250n) 각각은 SoC(200)의 동작 시나리오에 따라 선택적으로 켜질 수 있다. 이에 따라, 소프트 플로트 함수 회로들 각각에 의해 소모되는 전력이 감소될 수 있다.
도 6은 본 개시의 실시 예에 따른 시스템-온-칩(SoC; System-on-Chip)의 다른 예를 설명하기 위한 도면이다. 도 6를 참조하면, SoC(300)는 중앙 처리 장치(310), 메모리 장치(320), 주변 장치(330), 스토리지 장치(340), 소프트 플로트 함수 회로(350), 멀티플렉서(Multiplexer) 유닛(360) 및 시스템 버스(370)를 포함할 수 있다.
메모리 장치(320), 주변 장치(330), 및 스토리지 장치(340)는 도 2 및 도 5를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
중앙 처리 장치(310)는 전자 장치에서 수행되는 다양한 정수연산을 수행하고, 데이터를 처리할 수 있다. 중앙 처리 장치(310)는 인터페이스(IF)들, 멀티플렉서 유닛(360) 및 시스템 버스(370)를 통해 다른 장치들(예를 들어, 메모리 장치(320), 주변 장치(330), 스토리지 장치(340))과 통신할 수 있다. 중앙 처리 장치(310)는 멀티플렉서 유닛(360) 및 인터페이스(IF)들을 통해 소프트 플로트 함수 회로(350)와 통신할 수 있다.
중앙 처리 장치(310)는 복수의 코어들(311~314)을 포함할 수 있다. 도 6은 중앙 처리 장치(310)가 4개의 코어들(311~314)을 포함하는 것으로 도시되어 있으나, 본 개시는 이에 한정되지 않는다. 코어들(311~314) 각각은 정수연산만을 수행할 수 있다. 즉, 중앙 처리 장치(310)에는 부동 소수점 연산 기능이 없을 수 있다.
코어들(311~314) 각각은 부동 소수점 연산과 관련된 함수 신호를 생성할 수 있다. 함수 신호는 목표 소프트 플로트 함수에 대한 명령어 및 목표 소프트 플로트 함수에 대한 파리미터들을 포함할 수 있다. 코어들(311~314)은 소프트 플로트 함수 회로(350)를 공유할 수 있다.
코어들(311~314) 각각은 인터페이스(IF) 및 멀티플렉서 유닛(360)을 통해, 소프트 플로트 함수 회로(350)로 데이터 신호를 전송할 수 있다. 데이터 신호는 메모리 장치(320)에 저장된 데이터들을 포함할 수 있다. 메모리 장치(320)에 저장된 데이터들은 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행하기 위해 필요한 데이터들 일 수 있다.
소프트 플로트 함수 회로(350)는 멀티플렉서 유닛(360) 및 인터페이스(IF)들을 통해 중앙 처리 장치(310)로부터 함수 신호들 및 데이터 신호들을 수신할 수 있다. 소프트 플로트 함수 회로(350)는 함수 신호에 포함되는 명령어에 대응되는 소프트 플로트 함수의 기능을 구현하기 위한 부동 소수점 연산을 수행할 수 있다. 즉, 소프트 플로트 함수 회로(350)는 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다. 소프트 플로트 함수 회로(350)는 인터페이스(IF)들 및 멀티플렉서 유닛(360)을 통해, 중앙 처리 장치(310)로 결과 신호를 전송할 수 있다. 결과 신호는 함수 신호 및 데이터 신호에 기초한 부동 소수점 연산의 결과를 포함할 수 있다.
다시 말해, 소프트 플로트 함수 회로(350)는 목표 소프트 플로트 함수의 기능을 구현하기 위한 하드웨어 장치일 수 있다. 소프트 플로트 함수 회로(350)는 함수 신호에 포함되는 명령어에 기초하여 목표 소프트 플로트 함수를 식별하고, 목표 소프트 플로트 함수에 대응하는 부동 소수점 연산을 수행할 수 있다.
예를 들어, 소프트 플로트 함수 회로(350)는 도 3 내지 도 4와 관련하여 설명된 바와 같이, 부동 소수점 연산 장치들(251a~251n) 및 제어기(253)를 포함할 수 있다. 소프트 플로트 함수 회로(350)는 코어들(311~314)로부터 전송되는 함수 신호들 및 데이터 신호들을 수신할 수 있다.
예를 들어, 소프트 플로트 함수 회로(350)는 도 3 내지 도 4와 관련하여 설명된 바와 같이, 부동 소수점 연산 장치들(251a~251n) 및 제어기(253)의 동작에 기초하여 함수 신호들에 포함되는 명령어들에 대응되는 소프트 플로트 함수들의 기능을 구현하기 위한 부동 소수점 연산들을 순차적 또는 병렬적으로 수행할 수 있다.
일 실시 예에서, 소프트 플로트 함수 회로(350)는 복수의 소프트 플로트 함수들 각각에 대응하는 부동 소수점 연산들을 수행할 수 있다.
멀티플렉서 유닛(360)은 복수의 멀티플렉서(MUX)들을 포함할 수 있다. 복수의 멀티 플렉서(MUX)들 각각은 인터페이스(IF)를 통해, 대응되는 코어(311~314), 소프트 플로트 함수 회로(350) 및 시스템 버스(370)에 연결될 수 있다.
멀티플렉서 유닛(360)은 시스템 버스(370) 및 인터페이스(IF)들을 통해 외부 장치들(예를 들어, 메모리 장치(320), 주변 장치(330), 스토리지 장치(340))로부터의 신호들을 수신할 수 있다. 멀티플렉서 유닛(360)은 인터페이스(IF)를 통해 소프트 플로트 함수 회로(350)로부터의 신호들을 수신할 수 있다.
멀티플렉서 유닛(360)은 제어 신호(CS)에 기초하여, 외부 장치들로부터의 신호 또는 소프트 플로트 함수 회로(350)로부터의 신호를 대응되는 코어(예를 들어, 311~314)로 전송할 수 있다. 멀티플렉서 유닛(360)은 제어 신호(CS)에 기초하여, 코어들(311~314)로부터의 신호들을 소프트 플로트 함수 회로(350) 또는 시스템 버스(370)로 전송할 수 있다.
시스템 버스(370)는 인터페이스(IF)들을 통해 SoC(300)의 구성요소들(예를 들어, 메모리 장치(320), 주변 장치(330), 스토리지 장치(340) 및 멀티플렉서 유닛(360))과 연결될 수 있다. 시스템 버스(260)는 SoC(300)의 구성요소들 사이에서 데이터 또는 신호가 전송되는 통로일 수 있다.
상술된 내용은 본 개시를 실시하기 위한 구체적인 실시 예들이다. 본 개시는 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 개시는 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 개시의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 개시의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
200: 시스템-온-칩(SoC; System-on-Chip)
210: 중앙 처리 장치
220: 메모리 장치
230: 주변 장치
240: 스토리지 장치
250: 소프트 플로트 함수 회로
260: 시스템 버스

Claims (16)

  1. 시스템-온-칩에 있어서:
    제1 소프트 플로트 함수에 대한 제1 명령어를 포함하는 제1 함수 신호를 생성하고, 부동 소수점 연산 기능이 없는 중앙 처리 장치;
    시스템 버스; 및
    상기 시스템 버스를 통해, 상기 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하고, 상기 제1 명령어에 기초하여 상기 제1 소프트 플로트 함수에 대응하는 제1 부동 소수점 연산을 수행하도록 구성된 소프트 플로트 함수 회로를 포함하는 시스템-온-칩.
  2. 제1 항에 있어서,
    상기 제1 함수 신호는 상기 제1 소프트 플로트 함수에 대한 제1 파라미터를 더 포함하고,
    상기 소프트 플로트 함수 회로는 상기 제1 명령어 및 상기 제1 파라미터를 저장하도록 구성된 저장 장치를 더 포함하는 시스템-온-칩.
  3. 제2 항에 있어서,
    상기 저장 장치는 선입 선출 저장 장치, 레지스터, 및 메모리 중 적어도 하나를 포함하는 시스템-온-칩.
  4. 제1 항에 있어서,
    상기 소프트 플로트 함수 회로는
    각각이 부동 소수점 연산을 수행하도록 구성된 복수의 부동 소수점 장치들; 및
    상기 제1 함수 신호에 응답하여, 상기 부동 소수점 장치들 중 적어도 하나의 부동 소수점 장치가 상기 제1 부동 소수점 연산을 수행하도록, 상기 복수의 부동 소수점 장치들 및 상기 저장 장치를 제어하도록 구성된 제어기를 더 포함하는 시스템-온-칩.
  5. 제4 항에 있어서,
    상기 중앙 처리 장치(CPU)는 제2 소프트 플로트 함수에 대한 제2 명령어를 포함하는 제2 함수 신호를 더 생성하고,
    상기 소프트 플로트 함수 회로는:
    상기 시스템 버스를 통해, 상기 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하는 경우, 상기 제1 명령어에 기초하여 상기 제1 소프트 플로트 함수에 대응하는 상기 제1 부동 소수점 연산을 수행하고,
    상기 시스템 버스를 통해, 상기 중앙 처리 장치로부터 상기 제2 함수를 신호를 수신하는 경우, 상기 제2 명령어에 기초하여 상기 제2 소프트 플로트 함수에 대응하는 제2 부동 소수점 연산을 수행하도록 더 구성된 시스템-온-칩.
  6. 제5 항에 있어서,
    상기 소프트 플로트 함수 회로가 상기 제1 함수 신호 및 상기 제2 함수 신호를 동시에 수신하는 경우,
    상기 제어기는 상기 복수의 부동 소수점 장치들이 상기 제1 부동 소수점 연산을 수행한 뒤, 상기 제2 부동 소수점 연산을 수행하도록, 상기 복수의 부동 소수점 장치들 및 상기 저장 장치를 제어하도록 더 구성된 시스템-온-칩.
  7. 제5 항에 있어서
    상기 소프트 플로트 함수 회로가 상기 제1 함수 신호 및 상기 제2 함수 신호를 동시에 수신하는 경우,
    상기 제어기는 상기 복수의 부동 소수점 장치들이 제1 부동 소수점 연산 및 상기 제2 부동 소수점 연산을 병렬적으로 수행하도록 상기 복수의 부동 소수점 장치들 및 상기 저장 장치를 제어하도록 더 구성된 시스템-온-칩.
  8. 제4 항에 있어서
    상기 시스템 버스는 제1 인터페이스를 통해 상기 중앙 처리 장치와 연결되고 제2 인터페이스를 통해 상기 소프트 플로트 함수 회로와 연결되고,
    상기 소프트 플로트 함수 회로는 상기 제1 인터페이스, 상기 시스템 버스 및 상기 제2 인터페이스를 통해, 상기 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하도록 구성된 시스템-온-칩.
  9. 제8 항에 있어서,
    제3 인터페이스를 통해 상기 시스템 버스와 연결되는 메모리 장치를 더 포함하고,
    상기 소프트 플로트 함수 회로는 제4 인터페이스를 통해 상기 시스템 버스와 더 연결되는 시스템-온-칩.
  10. 제9 항에 있어서,
    상기 제4 인터페이스의 전송 속도는 상기 제2 인터페이스의 전송 속도보다 빠른 시스템-온-칩.
  11. 제10 항에 있어서,
    상기 소프트 플로트 함수 회로는:
    상기 소프트 플로트 함수 회로 및 상기 메모리 장치 사이의 직접 메모리 엑세스 동작을 수행하도록 구성된 DMA 엔진을 더 포함하고,
    상기 직접 메모리 엑세스 동작에 기초하여 상기 제3 인터페이스, 상기 제4 인터페이스 및 상기 시스템 버스를 통해, 상기 메모리 장치로부터 상기 제1 부동 소수점 연산을 수행하기 위해 필요한 데이터를 포함하는 데이터 신호를 수신하는 시스템-온-칩.
  12. 시스템-온 칩에 있어서:
    시스템 버스;
    제1 인터페이스를 통해 상기 시스템 버스에 연결되고, 제1 소프트 플로트함수에 대한 제1 명령어를 포함하는 제1 함수 신호 및 제2 소프트 플로트 함수에 대한 제2 명령어를 포함하는 제2 함수 신호를 생성하고, 부동 소수점 연산 기능이 없는 중앙 처리 장치;
    제2 인터페이스를 통해 상기 시스템 버스에 연결되고, 상기 제1 인터페이스, 상기 시스템 버스 및 상기 제2 인터페이스를 통해, 상기 중앙 처리 장치로부터 상기 제1 함수 신호를 수신하고, 상기 제1 명령어에 기초하여 상기 제1 소프트 플로트 함수에 대응하는 제1 부동 소수점 연산을 수행하도록 구성된 제1 소프트 플로트 함수 회로;
    제3 인터페이스를 통해 상기 시스템 버스에 연결되고, 상기 제1 인터페이스, 상기 시스템 버스 및 상기 제3 인터페이스를 통해, 상기 중앙 처리 장치로부터 상기 제2 함수 신호를 수신하고, 상기 제2 명령어에 기초하여 상기 제2 소프트 플로트 함수에 대응하는 제2 부동 소수점 연산을 수행하도록 구성된 제2 소프트 플로트 함수 회로; 및
    상기 제1 부동 소수점 연산에 필요한 제1 데이터 및 상기 제2 부동 소수점 연산에 필요한 제2 데이터를 저장하도록 구성되고, 제4 인터페이스를 통해 상기 시스템 버스에 연결되는 메모리 장치를 포함하는 시스템-온-칩.
  13. 제12 항에 있어서,
    상기 제1 함수 신호는 상기 제1 소프트 플로트 함수에 대한 제1 파라미터를 더 포함하고,
    상기 제1 소프트 플로트 함수 회로는 상기 제1 명령어 및 상기 제1 파라미터를 저장하도록 구성된 제1 저장 장치를 더 포함하는 시스템-온-칩.
  14. 제13 항에 있어서,
    상기 제1 소프트 플로트 함수 회로는
    각각이 부동 소수점 연산을 수행하도록 구성된 복수의 제1 부동 소수점 장치들; 및
    상기 제1 함수 신호에 응답하여, 복수의 제1 부동 소수점 장치들 중 적어도 하나의 제1 부동 소수점 장치가 상기 제1 부동 소수점 연산을 수행하도록, 상기 복수의 제1 부동 소수점 장치들 및 상기 제1 저장 장치를 제어하도록 구성된 제1 제어기를 더 포함하는 시스템-온-칩.
  15. 제14 항에 있어서,
    상기 제1 소프트 플로트 함수 회로는:
    제5 인터페이스를 통해 상기 시스템 버스에 더 연결되고,
    상기 제1 소프트 플로트 함수 회로 및 상기 메모리 장치 사이의 직접 메모리 엑세스 동작을 수행하도록 구성된 DMA 엔진을 더 포함하고,
    상기 제4 인터페이스, 상기 시스템 버스 및 상기 제5 인터페이스를 통해 상기 메모리 장치로부터 상기 제1 데이터를 포함하는 제1 데이터 신호를 수신하고,
    상기 제5 인터페이스의 전송 속도는 상기 제2 인터페이스의 전송 속도보다 빠른 시스템-온-칩.
  16. 제12 항에 있어서,
    상기 시스템-온-칩은 제1 시구간 동안 동작하고,
    상기 제1 시구간 동안, 상기 제1 소프트 플로트 함수 회로 및 상기 제2 소프트 플로트 함수 회로는 선택적으로 켜지도록 구성된 시스템-온-칩.
KR1020230071114A 2022-08-01 2023-06-01 소프트 플로트 함수 회로를 포함하는 시스템-온-칩 KR20240017740A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/362,596 US20240036817A1 (en) 2022-08-01 2023-07-31 System-on-a-chip including soft float function circuit

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220095195 2022-08-01
KR20220095195 2022-08-01

Publications (1)

Publication Number Publication Date
KR20240017740A true KR20240017740A (ko) 2024-02-08

Family

ID=89899945

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230071114A KR20240017740A (ko) 2022-08-01 2023-06-01 소프트 플로트 함수 회로를 포함하는 시스템-온-칩

Country Status (1)

Country Link
KR (1) KR20240017740A (ko)

Similar Documents

Publication Publication Date Title
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
US9135213B2 (en) Extending a processor system within an integrated circuit and offloading processes to process-specific circuits
KR102593583B1 (ko) Ssd들 상에서의 가속된 데이터 처리를 위한 시스템 및 방법
US20060294344A1 (en) Computer processor pipeline with shadow registers for context switching, and method
US11967952B2 (en) Electronic system including FPGA and operation method thereof
KR101543581B1 (ko) 시스템 온 칩 및 이를 포함하는 전자 시스템
Chen et al. Accelerator-rich CMPs: From concept to real hardware
US9594395B2 (en) Clock routing techniques
US11720475B2 (en) Debugging dataflow computer architectures
WO2023280097A1 (zh) 一种缺页异常的处理方法及相应装置
US7765250B2 (en) Data processor with internal memory structure for processing stream data
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
KR20240017740A (ko) 소프트 플로트 함수 회로를 포함하는 시스템-온-칩
CN108572812B (zh) 存储器加载和算术加载单元(alu)融合
CN112673348A (zh) 混合虚拟gpu协同调度
US20240036817A1 (en) System-on-a-chip including soft float function circuit
CN114328350A (zh) 一种基于axi总线的通讯方法、装置以及介质
JP2003347930A (ja) プログラマブル論理回路及びコンピュータシステム並びにキャッシュ方法
Giefers et al. Extending the power architecture with transprecision co-processors
US11726936B2 (en) Multi-host direct memory access system for integrated circuits
WO2023115529A1 (zh) 芯片内的数据处理方法及芯片
US20240020265A1 (en) Operating a Cost Estimation Tool for Placing and Routing an Operation Unit Graph on a Reconfigurable Processor
KR100336743B1 (ko) 데이터처리회로
Heyse et al. On the impact of replacing a low-speed memory bus on the Maxeler platform, using the FPGA’s configuration infrastructure
CN117632403A (zh) 在用于管理危险清除的桶形处理器中停驻线程