하드웨어 액셀러레이션
Hardware acceleration
하드웨어 액셀러레이션은 범용 중앙처리장치(CPU)에서 실행되는 소프트웨어에 비해 특정 기능을 보다 효율적으로 수행하기 위해 설계된 컴퓨터 하드웨어를 사용하는 것입니다.범용 CPU 상에서 실행되는 소프트웨어에서 계산할 수 있는 데이터의 변환은 커스텀 제조 하드웨어 또는 그 양쪽을 조합하여 계산할 수도 있습니다.
컴퓨팅 태스크를 보다 신속하게(또는 그 외의 방법으로) 실행하기 위해서는 일반적으로 소프트웨어 개선, 하드웨어 개선, 또는 그 양쪽 모두에 시간과 비용을 투자할 수 있습니다.레이텐시 감소, throughput 증가, 에너지 소비 감소라는 측면에서 장점과 단점을 가진 다양한 접근법이 있습니다.소프트웨어에 중점을 두는 일반적인 장점으로는 개발의 신속화, 엔지니어링 코스트의 삭감, 휴대성의 향상, 기능의 갱신이나 버그의 패치 적용의 용이성을 들 수 있습니다.단, 일반적인 운용에 드는 오버헤드를 들 수 있습니다.하드웨어에 초점을 맞추는 것의 속력 증가, 감소된 권력 consumption,[1] 낮은 잠복기, 증가 parallelism[2]및 대역 폭을 사용하고 지역과 기능 구성품 집적 회로에서 제공되는 더 나은 이용, 낮은 능력 디자인은 실리콘에 식각 및 기능적 verification,의 더 높은 비용을 업데이트하는데에 포함될 수 있다.그리고.출시까지의 시간을 단축합니다.범용 프로세서에서 완전 맞춤형 하드웨어에 이르는 디지털 컴퓨팅 시스템의 계층에서는 유연성과 효율의 균형이 있으며,[3][4] 그 계층보다 높은 계층에서 특정 애플리케이션을 구현하면 효율성이 몇 배나 향상됩니다.이 계층에는 CPU와 같은 범용 프로세서,[6] GPU와 같은 보다 전문화된 프로세서, Field-Programmable Gate Array([7]FPGA; 필드 프로그래머블 게이트 어레이)에 구현된 고정 기능 및 Application-Specific Integrated Circuit(ASIC;[5][8] 특정 집적회로)에 구현된 고정 기능이 포함됩니다.
하드웨어 액셀러레이션은 퍼포먼스에 유리하며 기능이 수정되면 실용적이기 때문에 소프트웨어 솔루션에서처럼 업데이트가 필요하지 않습니다.FPGA와 같은 재프로그래밍 가능한 로직 디바이스의 등장으로 2010년부터 하드웨어 액셀러레이션의 완전 고정 알고리즘에 대한 제한이 완화되어 알고리즘 및 처리 제어 [9][10]플로우의 수정이 필요한 문제 영역에 하드웨어 액셀러레이션을 적용할 수 있게 되었습니다.단, 많은 오픈소스 프로젝트에서는 모든 벤더가 배포 또는 공개를 꺼리는 것은 아닌 독점 라이브러리를 필요로 하기 때문에 이러한 프로젝트에 통합하기가 어렵다는 것이 단점이 있습니다.
개요
집적회로를 생성하여 아날로그 및 디지털 신호에 대해 임의의 동작을 수행할 수 있습니다.대부분의 경우 컴퓨팅에서 신호는 디지털이며 이진수 데이터로 해석될 수 있습니다.컴퓨터 하드웨어와 소프트웨어는 바이너리 표현으로 정보를 조작하여 컴퓨팅을 수행합니다.이것은 입력 비트에 대한 부울 함수를 계산하고 그 결과를 저장 또는 추가 처리를 위해 다운스트림의 출력 장치에 출력함으로써 실현됩니다.
하드웨어와 소프트웨어의 계산 등가성
모든 튜링 기계는 어떤 계산 가능한 함수를 실행할 수 있기 때문에, 주어진 소프트웨어와 같은 기능을 수행하는 맞춤형 하드웨어를 설계하는 것은 항상 가능하다.반대로 소프트웨어는 항상 특정 하드웨어의 기능을 에뮬레이트하기 위해 사용할 수 있습니다.커스텀 하드웨어는 소프트웨어에서 지정할 수 있는 기능과 동일한 기능을 위해 와트당 성능을 높일 수 있습니다.Verilog 및 VHDL 등의 하드웨어 기술 언어(HDL)는 소프트웨어와 동일한 시멘틱을 모델링하여 FPGA에 프로그래밍하거나 ASIC의 로직게이트에 합성할 수 있는 넷리스트에 설계를 통합할 수 있습니다.
저장된 프로그램 컴퓨터
소프트웨어 기반 컴퓨팅의 대부분은 총칭하여 스토어드 프로그램 컴퓨터라고 알려진 폰 노이만 아키텍처를 구현하는 기계에서 발생합니다.컴퓨터 프로그램은 데이터로 저장되며 프로세서에 의해 실행됩니다.이러한 프로세서는 소프트웨어 프로그램을 구성하는 명령을 실행하기 위해 메모리(명령 사이클의 일부)에서 데이터 오퍼랜드를 로드하는 것뿐만 아니라 명령을 가져오고 디코딩해야 합니다.코드와 데이터에 대한 공통 캐시에 의존하면 "von Neumann 병목 현상"이 발생합니다.이것은 von Neumann 아키텍처를 구현하는 프로세서의 소프트웨어 처리량에 대한 근본적인 제한입니다.명령과 데이터가 메모리 계층에 별도의 캐시를 가지고 있는 수정된 하버드 아키텍처에서도 명령 연산 코드를 디코딩하고 마이크로프로세서 또는 마이크로컨트롤러에서 사용 가능한 실행 유닛을 다중화하는 데 오버헤드가 발생하므로 회로 사용률이 낮아집니다.동시 멀티스레딩을 제공하는 최신 프로세서는 사용 가능한 프로세서 기능 유닛의 저사용률과 여러 하드웨어 스레드 간의 명령 수준 병렬화를 이용합니다.
하드웨어 실행 유닛
하드웨어 실행 유닛은 일반적으로 von Neumann 또는 수정된 Harvard 아키텍처에 의존하지 않으며 명령 주기의 명령 가져오기 및 디코딩 단계를 수행할 필요가 없으며 이러한 단계의 오버헤드를 발생시킬 필요가 없습니다.필요한 계산이 Register Transfer Level(RTL; 레지스터 전송 레벨) 하드웨어 설계에 지정되어 있는 경우 명령의 취득 및 디코딩 단계에 의해 발생하는 시간 및 회선 면적 비용을 회수하여 다른 용도로 사용할 수 있습니다.
이 회수를 통해 시간, 전력 및 회로 면적을 계산에서 절약할 수 있습니다.회수된 자원은 병렬 연산, 기타 기능, 통신 또는 메모리, 입출력 능력 증대에 사용할 수 있습니다.이것은 범용 유틸리티의 비용입니다.
새로운 하드웨어 아키텍처
하드웨어 설계의 RTL 커스터마이즈 확대에 의해 인메모리 컴퓨팅, 트랜스포트 트리거 아키텍처(TTA), 네트워크 온 칩(NoC) 등의 새로운 아키텍처는 실행 컨텍스트에 대한 데이터 인접성이 증가하여 모듈과 기능 유닛 간의 컴퓨팅 및 통신 지연이 감소합니다.
커스텀 하드웨어는 집적회로 [11]다이에서 사용 가능한 영역과 논리 블록에 의해서만 병렬 처리 능력이 제한됩니다.따라서 하드웨어는 범용 프로세서의 소프트웨어보다 대규모 병렬 처리를 제공하는 것이 훨씬 자유롭기 때문에 Parallel Random Access Machine(PRAM; 병렬 랜덤 액세스 머신) 모델을 구현할 수 있습니다.
멀티코어 및 멀티코어 프로세싱 유닛은 단일 FPGA 또는 ASIC [12][13][14][15][16]상에서 마이크로프로세서 IP 코어 설계도로 구축됩니다.마찬가지로 프로세서 IP 코어에 내장하지 않고 디지털 신호 처리와 같이 특수한 기능 유닛을 병렬로 구성할 수 있다.따라서 하드웨어 가속은 특히 대량의 데이터에 대해 조건부 분기가 거의 없는 반복적이고 고정된 작업에 자주 사용됩니다.이것이 Nvidia의 CUDA GPU 라인의 실장 방법입니다.
구현 지표
장치 이동성이 증가함에 따라 물리적 하드웨어 치수, 전력 소비량 및 운영 처리량과 같은 특성을 고려하여 특정 가속 프로토콜의 상대적 성능을 측정하는 새로운 지표가 개발되었습니다.이는 태스크 효율성, 구현 효율성 및 유연성의 세 가지 범주로 요약할 수 있습니다.적절한 메트릭은 하드웨어 영역과 대응하는 운용 스루풋 및 [17]소비 전력을 모두 고려합니다.
적용들
하드웨어 액셀러레이션의 예로는 그래픽 처리 장치(GPU)에서의 비트블릿 액셀러레이션 기능, 서버 업계에서 스팸 제어를 위한 멤리스터 사용, 정규 표현 서비스 거부([18]ReDoS) 공격을 방지하기 위한 정규 표현 하드웨어 액셀러레이션 등이 있습니다.액셀러레이션을 실행하는 하드웨어는 범용 CPU의 일부이거나 하드웨어 액셀러레이터라고 불리는 개별 유닛일 수 있지만 일반적으로 3D 액셀러레이터 또는 암호화 액셀러레이터와 같은 보다 구체적인 용어로 참조됩니다.
전통적으로 프로세서는 순차적(명령어가 하나씩 실행됨)이었으며, 명령어에 의해 제어되는 범용 알고리즘(예를 들어 레지스터 파일 간에 임시 결과를 이동)을 실행하도록 설계되었다.하드웨어 액셀러레이터는 페치 디코딩 실행 사이클에서 명령 제어의 오버헤드를 줄이고 더 큰 동시성을 허용하고 특정 알고리즘의 실행을 개선합니다.
최신 프로세서는 멀티코어이며 병렬 "단일 명령; 다중 데이터" (SIMD) 유닛을 갖추고 있는 경우가 많습니다.그래도 하드웨어 액셀러레이션을 통해 이점을 얻을 수 있습니다.하드웨어 액셀러레이션은 작업 또는 프로그램에서 자주 실행되는 계산 집약적인 알고리즘에 적합합니다.하드웨어 액셀러레이션은 세밀도에 따라 작은 기능 유닛에서 큰 기능 블록(MPEG-2의 움직임 추정 등)까지 다양합니다.
애플리케이션별 하드웨어 액셀러레이션 유닛
어플 | 하드웨어 액셀러레이터 | 약자 |
---|---|---|
컴퓨터 그래픽스
| 그래픽스 처리 장치
| GPU
|
디지털 신호 처리 | 디지털 신호 프로세서 | DSP |
아날로그 신호 처리 | 필드 프로그래머블 아날로그 어레이 | FPAA
|
사운드 프로세싱 | 사운드 카드 및 사운드 카드 믹서 | 없음 |
컴퓨터 네트워킹 | 네트워크 프로세서 및 네트워크 인터페이스 컨트롤러 | NPU 및 NIC
|
암호화 | 암호화 액셀러레이터 및 안전한 암호화 프로세서 | 없음 |
인공지능 | AI 액셀러레이터 | 없음
|
다선형 대수 | 텐서 처리 장치 | TPU |
물리 시뮬레이션 | 물리 처리 장치 | PPU |
정규 표현[18] | 정규 표현 코프로세서 | 없음 |
data 압축[19] | 데이터 압축 액셀러레이터 | 없음 |
인메모리 처리 | 칩 및 수축기 어레이상의 네트워크 | NoC, N/A |
데이터 처리 | data 처리장치 | DPU |
임의의 컴퓨팅 태스크 | 컴퓨터 하드웨어
| 하드웨어(경우에 따라)
|
「 」를 참조해 주세요.
- 코프로세서
- DirectX 비디오 액셀러레이션(DXVA)
- 다이렉트 메모리 액세스(DMA)
- 높은 수준의 합성
- 소프트 마이크로프로세서
- 플린의 병렬 컴퓨터 아키텍처 분류법
- 기능이 있는 작업을 위한 컴퓨터
레퍼런스
- ^ "Microsoft Supercharges Bing Search With Programmable Chips". WIRED. 16 June 2014.
- ^ "Embedded". Archived from the original on 2007-10-08. Retrieved 2012-08-18. Clive Maxfield 2006의 "A에서 Z까지의 FPGA 아키텍처"
- ^ "Mining hardware comparison - Bitcoin". Retrieved 17 July 2014.
- ^ "Non-specialized hardware comparison - Bitcoin". Retrieved 25 February 2014.
- ^ Kim, Yeongmin; Kong, Joonho; Munir, Arslan (2020). "CPU-Accelerator Co-Scheduling for CNN Acceleration at the Edge". IEEE Access. 8: 211422–211433. doi:10.1109/ACCESS.2020.3039278. ISSN 2169-3536.
- ^ Lin, Yibo; Jiang, Zixuan; Gu, Jiaqi; Li, Wuxi; Dhar, Shounak; Ren, Haoxing; Khailany, Brucek; Pan, David Z. (April 2021). "DREAMPlace: Deep Learning Toolkit-Enabled GPU Acceleration for Modern VLSI Placement". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems. 40 (4): 748–761. doi:10.1109/TCAD.2020.3003843. ISSN 1937-4151. S2CID 225744481.
- ^ Lyakhov, Pavel; Valueva, Maria; Valuev, Georgii; Nagornov, Nikolai (2020-12-18). "A Method of Increasing Digital Filter Performance Based on Truncated Multiply-Accumulate Units". Applied Sciences. 10 (24): 9052. doi:10.3390/app10249052. ISSN 2076-3417.
Hardware simulation on FPGA increased the digital filter performance.
- ^ Mohan, Prashanth; Wang, Wen; Jungk, Bernhard; Niederhagen, Ruben; Szefer, Jakub; Mai, Ken (October 2020). "ASIC Accelerator in 28 nm for the Post-Quantum Digital Signature Scheme XMSS". 2020 IEEE 38th International Conference on Computer Design (ICCD). Hartford, CT, USA: IEEE: 656–662. doi:10.1109/ICCD50377.2020.00112. ISBN 978-1-7281-9710-4. S2CID 229330964.
- ^ Morgan, Timothy Pricket (2014-09-03). "How Microsoft Is Using FPGAs To Speed Up Bing Search". Enterprise Tech. Retrieved 2018-09-18.
- ^ "Project Catapult". Microsoft Research.
- ^ MicroBlaze 소프트 프로세서: 2011-10-27 Wayback Machine에 보관된 FAQ
- ^ 이스반 바사니「FPGA에서의 프로세서 어레이의 실장」.1988
- ^ Zhoukun Wang과 Omar HAMAMI. "Network on Chip을 탑재한 칩 FPGA 설계상의 24 프로세서 시스템"[1]
- ^ 존 켄트."Micro16 어레이 - 심플한 CPU 어레이"
- ^ 키트 이튼"1,000 코어 CPU 달성:「미래의 데스크탑은 슈퍼 컴퓨터가 될 것입니다」.2011년.[2]
- ^ 「1개의 칩에 1,000개 이상의 코어를 짜넣는 과학자」. 2011년.[3] 2012-03-05년 Wayback Machine에서 아카이브 완료
- ^ Kienle, Frank; Wehn, Norbert; Meyr, Heinrich (December 2011). "On Complexity, Energy- and Implementation-Efficiency of Channel Decoders". IEEE Transactions on Communications. 59 (12): 3301–3310. arXiv:1003.3792. doi:10.1109/tcomm.2011.092011.100157. ISSN 0090-6778. S2CID 13863870.
- ^ a b "Regular Expressions in hardware". Retrieved 17 July 2014.
- ^ "Compression Accelerators - Microsoft Research". Microsoft Research. Retrieved 2017-10-07.
- ^ a b 파라벳, 클레멘트 등"하드웨어는 합성 비전[dead link] 시스템을 위한 컨볼루션 뉴럴 네트워크를 가속화했습니다."회선 및 시스템(ISCAS), 2010 IEEE 국제 심포지엄의 속행:IEEE, 2010.
외부 링크
Wikimedia Commons 하드웨어 액셀러레이션 관련 미디어