블랙핀
1. 개요
블랙핀(Blackfin)은 인텔과 아날로그 디바이스가 공동 개발한 32비트 RISC 마이크로컨트롤러로, MSA(Micro Signal Architecture) 기반의 SIMD 아키텍처를 사용한다. 2000년에 발표되어 2001년에 처음 공개되었으며, SHARC 아키텍처와 XScale 아키텍처의 장점을 결합하여 DSP 기능과 마이크로컨트롤러 기능을 통합했다. 블랙핀 아키텍처를 구현한 다양한 CPU가 존재하며, 메모리, DMA, 다양한 주변 기기 및 미디어 처리 기능을 제공한다. 여러 운영 체제와 RTOS를 지원하며, Uclinux, ThreadX, Nucleus RTOS 등이 있다.
-
디지털 신호 처리 장치 -
OMAP
OMAP는 텍사스 인스트루먼트에서 개발한 모바일 장치용 응용 프로세서 제품군으로, 다양한 운영체제 구동과 멀티미디어 기능을 지원하며, 성능과 용도에 따라 여러 종류로 분류된다. -
디지털 신호 처리 장치 -
이미지 프로세서
이미지 프로세서는 이미지 센서의 Raw 데이터를 시각적 이미지로 변환하고 디모자이킹, 노이즈 감소, 선명화 등을 통해 이미지 품질을 개선하는 장치 또는 소프트웨어이며, 고속 처리를 위해 libcamera와 같은 라이브러리가 활용된다. -
명령어 집합 구조 -
ARM 아키텍처
ARM 아키텍처는 저전력 설계로 모바일 기기에서 널리 쓰이는 RISC 기반 프로세서 아키텍처로서, IP 코어 라이선스 모델과 ARM Flexible Access를 통해 다양한 분야로 확장되고 있다. -
명령어 집합 구조 -
PA-RISC
PA-RISC는 휴렛 팩커드에서 개발한 RISC 기반 명령어 집합 아키텍처로, HP 서버 및 워크스테이션에 사용되었으며 대용량 L1 캐시와 SIMD 명령어 확장 등의 특징을 가졌으나 아이테니엄 아키텍처로의 전환으로 단종되었다. -
마이크로컨트롤러 -
마이크로프로세서
-
마이크로컨트롤러 -
ARM 아키텍처
ARM 아키텍처는 저전력 설계로 모바일 기기에서 널리 쓰이는 RISC 기반 프로세서 아키텍처로서, IP 코어 라이선스 모델과 ARM Flexible Access를 통해 다양한 분야로 확장되고 있다.
2. 아키텍처
블랙핀(Blackfin) 프로세서는 SIMD 아키텍처 기반의 32비트 RISC MCU 프로그래밍 모델을 사용하며, 이는 인텔과 아날로그 디바이스가 공동 개발한 MSA(Micro Signal Architecture)라고도 불린다. 2000년 12월에 발표되었고, 2001년 6월에 처음 시연되었다. 아날로그 디바이스의 SHARC 아키텍처와 인텔의 XScale 아키텍처의 장점을 결합하여, 단일 코어에 DSP와 마이크로컨트롤러 기능을 통합하였다.
블랙핀 아키텍처는 다양한 CPU 모델을 포함하며, 각 모델은 특정 응용 분야에 최적화되어 있다. 2014년에 출시된 BF-7xx 시리즈는 Blackfin+ 아키텍처를 포함하며, 새로운 프로세서 기능 및 명령어가 추가되었다.
블랙핀(Blackfin) 제품군은 아래 표와 같다.
| 프로세서 | 최대 | 코어 수 | L1 | L2 | 온칩 | 호스트 | 코드 보안 | 이더넷 MAC | SD/ SDIO | PPIs | SD-RAM | USB | ATAPI | CAN | I²C (TWI) | SPI | UART | SPORT | GPIO | MOST | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 명령 | 데이터 | SRAM | 16 | 18/ | ||||||||||||||||||
| BF5221 | 600 | 1 | 64 (16) | 64 (32) 4 | - | - | Yes | Yes | - | - | 1 | 0 | SDR x16 | - | - | 1 | 1 | 2 | 48 | - | ||
| BF5251 | 2.0 OTG | |||||||||||||||||||||
| BF5271 | 1 | |||||||||||||||||||||
| BF542 | - | - | 1 | DDR x16 | 1 | 2 | 3 | 152 | ||||||||||||||
| BF544 | 533 | 64 | Yes | - | 1 | - | 2 | |||||||||||||||
| BF548 | 600 | 128 | 1 | 2.0 OTG | 1 | 3 | 4 | |||||||||||||||
| BF549 | 533 | 1 | ||||||||||||||||||||
| BF531 | 400 | 32 (16) | 16 (16) 4 | - | - | - | - | SDR x16 | - | - | - | 1 | 2 | 16 | - | |||||||
| BF532 | 48 (16) | 32 (32) 4 | ||||||||||||||||||||
| BF533 | 600 | 80 (16) | 64 (32) 4 | |||||||||||||||||||
| BF534 | 500 | 64 (16) | 1 | 1 | 48 | |||||||||||||||||
| BF536 | 32 (32) 4 | 1 | ||||||||||||||||||||
| BF537 | 600 | 64 (32) 4 | ||||||||||||||||||||
| BF538 | 500 | 80 (16) | - | 2 | 3 | 4 | 54 | |||||||||||||||
| BF538F | 512 1024 | |||||||||||||||||||||
| BF539 | - | 38 | 1 | |||||||||||||||||||
| BF539F | 512 1024 | |||||||||||||||||||||
| BF561 | 600 | 2 | 64 (16) per core | 64 (32) 4 per core | 128 | - | 2 | SDR x32 | - | 1 | 2 | 48 | - | |||||||||
| BF535 | 350 | 1 | 16 | 32 4 | 256 | - | SDR x16 | 1.1 | 2 | 16 | ||||||||||||
1 BF52xC 제품군에는 48kHz, 스테레오 음성 코덱 (2xADC, 2xDAC)가 내장되어 있다.
모든 블랙핀 프로세서는 공통적으로 다음과 같은 주변 기기를 내장하고 있다.
* 디버그/JTAG 인터페이스
* 실시간 시계
* 코어 전압 전원 스위칭
* 워치독 타이머
* 타이머/PWM 출력/PWM 입력 포트
* 코어 타이머 (코어 클럭 주파수로 동작하는 타이머)
2.1. 코어 기능
블랙핀은 상황에 따라 디지털 신호 처리 장치(DSP) 또는 RISC 코어로 간주될 수 있다.
DSP 기능은 다음과 같다:
* 2개의 16비트 하드웨어 MAC
* 2개의 40비트 ALU
* 40비트 배럴 시프터
* 4개의 8비트 비디오 ALU
블랙핀+ 프로세서는 32비트 MAC 및 72비트 누산기를 추가한다.
RISC 기능은 다음과 같다:
* 메모리 보호 기능
* 사용자/커널 모드
* 단일 사이클 연산 코드
* 데이터 및 명령어 캐시
* 비트 테스트/바이트/워드/정수 접근 명령어
* 다양한 온칩 주변 장치
ISA는 높은 수준의 표현력을 제공하며, 어셈블리 프로그래머나 컴파일러가 하드웨어 기능을 최적화할 수 있도록 돕는다.
2.2. 메모리 및 DMA
블랙핀 프로세서는 바이트 단위 어드레싱을 사용하는 플랫 메모리 맵을 사용하며, 32비트 주소 공간을 갖는다. 이 공간에는 내부 L1 메모리, 내부 L2 메모리, 외부 메모리 및 모든 메모리 맵 기반 제어 레지스터가 위치한다. 프로그래밍 관점에서 보면 블랙핀은 폰 노이만 구조를 가진다.
L1 내부 SRAM은 코어 클럭 속도로 작동하며 하버드 아키텍처를 기반으로 한다. 명령어 메모리와 데이터 메모리는 분리되어 있으며, 전용 메모리 버스를 통해 코어에 연결된다. 이를 통해 코어와 L1 메모리 간에 빠르고 지속적인 데이터 전송이 가능하다. 명령어 및 데이터 L1 SRAM의 일부는 선택적으로 캐시로 구성할 수 있다.
일부 블랙핀 프로세서는 64KB에서 256KB 사이의 L2 메모리를 갖추고 있으며, 코어 클럭 속도보다 느리게 작동한다. L2 메모리에는 코드와 데이터가 혼합될 수 있다.
블랙핀 프로세서는 SDRAM, DDR-SDRAM, NOR 플래시, NAND 플래시, SRAM 등 다양한 외부 메모리를 지원한다. 일부 모델은 ATAPI 및 SD/SDIO와 같은 대용량 저장 장치 인터페이스도 포함한다. 외부 메모리 공간은 수백 메가바이트를 지원할 수 있다.
주변 장치와 메인 메모리(또는 외부 메모리) 사이에서 작동하는 DMA 엔진을 갖추고 있다. 각 주변 장치에 전용 DMA 채널을 할당하여 높은 처리량을 달성할 수 있으며, 실시간 SD급(D1) 비디오 인코딩 및 디코딩을 가능하게 한다.
2.3. 마이크로컨트롤러 기능
블랙핀 아키텍처는 일반적인 마이크로프로세서 또는 마이크로컨트롤러에서 발견되는 CPU, 메모리 및 I/O를 포함하여 운영 체제를 가능하게 하는 여러 기능을 제공한다.
* 메모리 보호 장치(MPU): 모든 블랙핀 프로세서는 MPU를 포함하며, 전체 메모리 공간에 대한 보호 및 캐싱 전략을 제공한다. MPU 덕분에 ThreadX, μC/OS-II, NOMMU Linux와 같은 운영 체제, RTOS 및 커널을 지원할 수 있다. 블랙핀 MPU는 메모리 관리 장치(MMU)로 언급되지만, 주소 변환을 제공하지 않으므로, 가상 메모리나 프로세스별 별도의 메모리 주소를 지원하지 않는다. 따라서 WinCE 또는 QNX와 같이 가상 메모리가 필요한 운영 체제는 지원하지 않는다.
* 사용자/관리자 모드: 블랙핀은 슈퍼바이저, 사용자, 에뮬레이션의 세 가지 런타임 모드를 지원한다. 슈퍼바이저 모드에서는 모든 프로세서 리소스에 접근 가능하지만, 사용자 모드에서는 시스템 리소스와 메모리 영역을 보호할 수 있다. 최신 운영 체제 또는 RTOS에서 커널은 일반적으로 슈퍼바이저 모드에서 실행되고 스레드/프로세스는 사용자 모드에서 실행된다. 스레드가 충돌하거나 보호된 리소스에 접근하려 하면 예외가 발생하고, 커널은 해당 스레드/프로세스를 종료할 수 있다.
* 가변 길이 RISC 유사 명령어 집합: 블랙핀은 16, 32, 64비트 명령어를 제공한다. 자주 사용되는 제어 명령어는 16비트 opcode로 인코딩되는 반면, 복잡한 DSP 및 수학적 기능은 32비트 및 64비트 opcode로 인코딩된다. 이러한 가변 길이 opcode 인코딩은 코드 밀도를 최적화한다.
2.4. 미디어 처리 기능
블랙핀 명령어 집합은 미디어 처리를 위한 확장 명령어 집합을 갖추고 있어, 영상이나 그림 압축/압축 해제 알고리즘에서 자주 사용되는 화소 처리 동작을 빠르게 해준다. 블랙핀 명령어 집합은 비디오 압축 및 이미지 압축 및 압축 해제 알고리즘에서 일반적으로 사용되는 픽셀 처리 작업을 가속화하는 데 도움이 되는 미디어 처리 확장을 포함한다.
3. 주변 기기
블랙핀 프로세서는 특정 프로세서에 따라 다양한 주변 기기를 내부에 포함할 수 있다. 모든 주변 장치 제어 레지스터는 일반적인 주소 공간 위의 메모리 맵 입출력으로 동작한다.
* ATAPI
* CAN: 일부 자동차 및 산업용 전자 제품에 사용되는 광역, 저속 직렬 버스
* DMA: 메모리 대 메모리 DMA 및 주변 장치 DMA 지원
* EMAC (이더넷 미디어 접근 제어기): MII 및 RMII 포함
* 외부 메모리: EBIU(외부 버스 인터페이스 유닛)는 SDRAM, 모바일 SDRAM, DDR1, DDR2 또는 LPDDR용 컨트롤러와 SRAM, ROM, 플래시 EPROM 및 메모리 맵 I/O 장치를 위한 비동기 메모리 컨트롤러를 포함할 수 있다.
* GPIO: 레벨 트리거 및 에지 트리거 인터럽트 포함
* I²C(TWI, Two-Wire Interface): 저속 공유 직렬 버스
* MXVR: MOST 네트워크 인터페이스 컨트롤러
* NAND 플래시
* PPI: LCD, 비디오 인코더(비디오 DAC), 비디오 디코더(비디오 ADC), CMOS 센서, CCD 및 일반 고속 병렬 장치에 연결하는 데 사용할 수 있는 병렬 입출력 포트. PPI는 최대 75MHz로 실행할 수 있으며 8~16비트 너비로 구성할 수 있다.
* PWM 및 타이머/카운터
* 실시간 시계
* SD/SDIO
* SPI: 일부 고속 임베디드 전자 애플리케이션에 사용되는 고속 직렬 버스
* SPORT: TDM, I²S 및 ADC, DAC, 다른 프로세서, FPGA 등에 연결하기 위한 여러 구성 가능한 프레이밍 모드를 지원할 수 있는 동기식 고속 직렬 포트
* UART: RS-232 장치(PC, 모뎀, PC 주변 장치 등), MIDI 장치, IRDA 장치와 양방향 통신 가능
* USB 2.0 OTG(On-The-Go)
* 워치독 타이머
4. 개발 도구 소프트웨어
아날로그 디바이시즈는 자체 소프트웨어 개발 툴체인(CROSSCORE(VisualDSP++)영어)을 제공한다. 그린 힐즈 소프트웨어사의 MULTI IDE, GNU GCC 툴체인, 내셔널 인스트루먼츠사의 랩뷰(LabVIEW) 임베디드 모듈 등도 사용할 수 있다.
5. 지원되는 운영체제, RTOS 및 커널
블랙핀은 다음과 같은 상용/오픈 소스 운영 체제를 지원한다.
| | 종류 || 웹페이지 || 참고 | |||
|---|---|---|---|
| µClinux | 오픈 소스/GPL | [http://blackfin.uclinux.org http://blackfin.uclinux.org] 위키 : [https://web.archive.org/web/20190114033748/https://docs.blackfin.uclinux.org/ https://web.archive.org/web/20190114033748/https://docs.blackfin.uclinux.org/] | 지금은 리눅스 메인 커널과 합쳐져 있다. |
| ThreadX | 상용 | [http://www.rtos.com http://www.rtos.com] | |
| Nucleus | 상용 | [http://www.mentor.com http://www.mentor.com] | |
| Fusion | 상용 | [http://www.unicoi.com/fusion_rtos/rtos_blackfin.htm http://www.unicoi.com/fusion_rtos/rtos_blackfin.htm] | |
| µC/OS-II | 상용/소스코드 다운로드 가능 | [http://www.micrium.com/ http://www.micrium.com/] | |
| velOSity Microkernel | 상용 | [http://www.ghs.com http://www.ghs.com] | |
| INTEGRITY | 상용 | [http://www.ghs.com http://www.ghs.com] | |
| RTEMS | 오픈 소스/GPL | [http://www.rtems.com/ http://www.rtems.com] | |
| T2 SDE | 오픈 소스/GPL | [http://www.t2-project.org/architectures/blackfin.html http://www.t2-project.org/architectures/blackfin.html] | |
| VDK | 상용 | [http://www.analog.com/blackfin http://www.analog.com/blackfin] | ADI 사의 리얼-타임 커널이다. VisualDSP++ 구매 시 딸려온다. |
블랙핀은 이전에 μClinux에서 지원되었고, 나중에는 NOMMU 기능을 갖춘 리눅스에서 지원되었지만, 널리 사용되지 않았고 더 이상 유지 관리자가 없었기 때문에 2018년 4월 1일에 리눅스에서 지원이 제거되었다. 4.16은 블랙핀 지원을 포함하는 마지막 릴리스였다.
| | 종류 | 비고 | |
|---|---|---|
| μClinux 배포판 | 오픈 소스/GPL | 일반적인 Linux 커널에 통합되어 있으며, 각종 애플리케이션이 있다. |
| [http://www.rtos.com/page/product.php?id=2 ThreadX] | 상용 | |
| Nucleus | ||
| [http://www.unicoi.com/fusion_rtos/fusion_rtos_blackfin.htm Fusion RTOS] | ||
| [http://www.micrium.com/products/rtos/kernel/rtos.html μC/OS-II] | 상용/소스 사용 가능 | |
| [http://www.ghs.com/products/velosity.html velOSity] | 상용 | |
| [http://www.ghs.com/products/rtos/integrity.html INTEGRITY] | ||
| RTEMS | 오픈 소스/GPL | |
| [http://www.t2-project.org/ T2 SDE] | ||
| VDK | 상용 | 아날로그 디바이스의 실시간 커널. VisualDSP++에 동봉 |
| [http://www.toppers.jp/jsp-kernel.html TOPPERS/JSP] | 오픈 소스 | μITRON4.0 사양 |
6. 블랙핀을 사용하는 상용 디바이스 (예시)
* JXD 301 (휴대용 멀티미디어 플레이어 겸 게임기)