슈퍼H

**슈퍼H**(SuperH) 또는 **SH**는 히타치 제작소에서 개발하고 현재 르네사스 일렉트로닉스에서 생산하는 32비트 축소 명령어 집합 컴퓨터(RISC) 명령어 집합(ISA) 아키텍처이다. 임베디드 시스템용 마이크로컨트롤러와 마이크로프로세서에 구현된다.

도입 당시 슈퍼H는 32비트 아키텍처임에도 불구하고 고정 길이 16비트 명령어를 가지고 있다는 점에서 주목할 만했다. 더 작은 명령어를 사용하면 레지스터 파일이 더 작아지고 명령어는 일반적으로 두 피연산자 형식이라는 결과를 가져왔다. 그러나 슈퍼H가 목표로 하는 시장에서는 이는 향상된 메모리와 CPU 캐시 효율성을 위한 작은 대가였다.

SH-5부터 시작하는 디자인의 이후 버전에는 16비트 및 32비트 명령어가 모두 포함되었으며, 16비트 버전은 CPU 내부에서 32비트 버전으로 매핑되었다. 이를 통해 기계어는 더 짧은 명령어를 계속 사용하여 메모리를 절약할 수 있었고, 완전히 별개의 명령어였다면 필요한 명령어 디코딩 로직의 양을 요구하지 않았다. 이 개념은 현재 압축 명령어 집합으로 알려져 있으며 다른 회사에서도 사용하고 있으며, 가장 주목할 만한 예는 ARM의 섬네일 명령어 집합이다.

2015년에 슈퍼H 아키텍처에 대한 많은 원래 특허가 만료되었고 SH-2 CPU는 오픈 소스 하드웨어로 J2라는 이름으로 재구현되었다.

## 역사
### SH-1 및 SH-2
150px|섬네일|세가 32X 및 세가 새턴의 SH-2
슈퍼H 프로세서 코어 제품군은 1990년대 초 히타치 제작소에서 처음 개발되었다. 설계 개념은 일련의 CPU 코어에 걸쳐 상위 호환될 수 있는 단일 명령어 집합(ISA)이었다.

과거에는 이러한 종류의 설계 문제는 마이크로코드를 사용하여 해결되었으며, 시리즈의 저가형 모델은 구현되지 않은 명령어를 일련의 더 기본적인 명령어로 수행했다. 예를 들어, "롱 곱셈"(두 개의 32비트 레지스터를 곱하여 64비트 결과 생성)은 고급 모델에서는 하드웨어로 구현될 수 있지만, 저가형 모델에서는 일련의 덧셈으로 수행될 수 있다.

RISC 개념 개발 과정에서 핵심적인 인식 중 하나는 마이크로코드가 유한한 디코딩 시간을 가지며, 프로세서가 빨라질수록 이는 용납할 수 없는 성능 오버헤드를 나타낸다는 것이었다. 이를 해결하기 위해 히타치는 대신 전체 라인에 대해 단일 ISA를 개발했으며, 지원되지 않는 명령어가 하드웨어 지원을 포함하지 않는 구현에서는 트랩을 발생시켰다. 예를 들어, 라인의 초기 모델인 SH-1과 SH-2는 64비트 곱셈 지원에서만 차이가 있었다. SH-2는 , , 를 지원했지만, SH-1은 이러한 명령어가 발생하면 트랩을 일으켰다.

SH-1은 총 56개 명령어를 지원하는 기본 모델이었다. SH-2는 64비트 곱셈과 분기 및 기타 기능을 위한 몇 가지 추가 명령어를 추가하여 총 62개 명령어를 지원했다. SH-1과 SH-2는 세가 새턴, 세가 32X 및 캡콤 CPS-3에 사용되었다.

ISA는 32비트 명령어보다 더 나은 코드 밀도를 위해 16비트 명령어를 사용했는데, 이는 당시 메인 메모리의 높은 비용과 캐시 구현 비용 때문에 중요했다. 2023년 현재 코드 밀도는 소형 임베디드 시스템과 대규모 멀티코어 프로세서에서 여전히 중요하다. 이 접근 방식의 단점은 레지스터 번호나 상수 값을 인코딩하는 데 사용할 수 있는 비트가 더 적었다는 것이다. 원래 슈퍼H ISA에는 16개의 일반 레지스터만 있었고, 소스에 4비트, 대상에 4비트가 필요했다. 그러나 일부 명령어는 추가 피연산자로 암시적 R0, R15 또는 시스템 레지스터를 가진다. 명령어 연산 코드는 4, 8, 12 또는 16비트 길이를 가지며, 나머지 4비트 필드는 다양한 방식으로 레지스터 또는 즉시 피연산자에 사용된다. SH-2에는 12개의 명령어 클래스가 있으며 총 142개의 명령어가 있다.

SH-1과 SH-2 모두에 지연 분기가 도입되었다. 무조건 분기 명령어는 하나의 딜레이 슬롯을 가진다.

### SH-3
몇 년 후, SH-3 코어가 제품군에 추가되었다. 새로운 기능에는 또 다른 인터럽트 개념, 메모리 관리 장치(MMU) 및 수정된 캐시 개념이 포함되었다. 이러한 기능은 확장된 명령어 집합을 필요로 했으며, 총 6개의 새로운 명령어가 추가되어 총 68개가 되었다. SH-3는 바이 엔디언으로, 빅 엔디언 또는 리틀 엔디언 바이트 순서로 실행되었다.

SH-3 코어는 또한 DSP 확장을 추가했는데, 당시에는 SH-3-DSP라고 불렸다. 효율적인 DSP 처리를 위한 확장된 데이터 경로, 특수 누산기 및 전용 MAC형 DSP 엔진을 통해 이 코어는 DSP와 RISC 프로세서의 세계를 통합했다. DSP의 파생 제품은 원래 SH-2 코어와 함께 사용되기도 했다. 마이크로소프트의 포켓 PC 휴대폰 라인에 사용되었다.

1994년부터 1996년까지 전 세계적으로 3,510만 개의 슈퍼H 장치가 출하되었다.

### SH-4
1997년 히타치와 ST마이크로일렉트로닉스(STM)는 드림캐스트용 SH-4 설계를 위해 협력하기 시작했다. SH-4는 슈퍼스칼라 (2방향) 명령어 실행과 벡터 부동소수점 장치(특히 3D 그래픽에 적합)를 특징으로 했다. SH-4 기반의 표준 칩은 1998년경에 출시되었다.

### 라이선스
2001년 초, 히타치와 STM은 지적 재산 회사 슈퍼H사를 설립했다. 이 회사는 SH-4 코어를 다른 회사에 라이선스하고 슈퍼H가 64비트 영역으로 처음 진출한 SH-5 아키텍처를 개발할 예정이었다. 이전 SH-1부터 SH-3까지는 히타치의 소유로 남아 있었다.

2003년, 히타치와 미쓰비시 전기는 합작 투자 회사인 르네사스 테크놀로지를 설립했으며, 히타치가 55%를 소유했다. 2004년, 르네사스 테크놀로지는 슈퍼H사의 ST마이크로일렉트로닉스 지분을 매입하여 SH 코어 라이선스를 확보했다. 르네사스 테크놀로지는 나중에 NEC 일렉트로닉스와의 합병에 따라 르네사스 일렉트로닉스가 되었다.

SH-5 설계는 두 가지 작동 모드를 지원했다. SHcompact 모드는 SH-4 명령어 집합의 사용자 모드 명령어와 동일하며, SHmedia 모드는 64개의 64비트 정수 레지스터와 SIMD 명령어를 사용하는 32비트 명령어를 사용한다는 점에서 매우 다르다. SHmedia 모드에서 브랜치(점프)의 목적지는 실제 브랜치 명령어와 별도로 브랜치 레지스터에 로드된다. 이를 통해 프로세서는 명령어 스트림을 엿볼 필요 없이 브랜치에 대한 명령어를 미리 가져올 수 있다. 콤팩트한 16비트 명령어 인코딩과 더 강력한 32비트 명령어 인코딩의 조합은 SH-5에만 국한된 것이 아니다. ARM 프로세서에는 16비트 섬네일 모드가 있으며 (ARM은 Thumb에 대해 슈퍼H로부터 여러 특허를 라이선스했다), MIPS 프로세서에는 MIPS-16 모드가 있다. 그러나 SH-5는 역 호환성 모드가 32비트 인코딩이 아닌 16비트 인코딩이라는 점에서 다르다.

마지막 진화 단계는 2003년경에 이루어졌는데, SH-2부터 SH-4까지의 코어가 이전 아키텍처의 일종의 명령어 집합 상위 집합을 형성하는 슈퍼스칼라 SH-X 코어로 통합되었고, 대칭형 다중 처리에 대한 지원이 추가되었다.

### 지속적인 가용성
2010년부터 슈퍼H CPU 코어, 아키텍처 및 제품 설계는 르네사스 일렉트로닉스가 소유하며, 아키텍처는 SH-2, SH-2A, SH-3, SH-4 및 SH-4A 플랫폼을 중심으로 통합되었다.

르네사스의 SH-3, SH-4 및 SH-4A 마이크로프로세서를 기반으로 한 시스템 온 칩 제품은 나중에 Arm Ltd.로부터 라이선스된 CPU 코어를 기반으로 하는 신세대 제품으로 대체되었지만, 많은 기존 모델은 르네사스 제품 장수 프로그램을 통해 2025년 3월까지 계속해서 판매 및 마케팅되었다.

2021년 현재, SH-2A를 기반으로 하는 SH72xx 마이크로컨트롤러는 Arm, RX, RH850을 포함한 여러 다른 아키텍처를 기반으로 하는 신제품과 함께 2029년 2월까지 보장된 가용성으로 르네사스에서 계속 판매되고 있다.

### J Core

SH-2 특허 중 마지막 특허는 2014년에 만료되었다. LinuxCon Japan 2015에서 j-core 개발자들은 확장 기능이 있는 SH-2 ISA의 클린룸 설계 재구현 (만료되지 않은 상표로 인해 "J2 코어"로 알려짐)을 발표했다. 이어서 ELC 2016에서 디자인 워크스루가 발표되었다.

J2 코어의 오픈 소스 BSD 라이선스 VHDL 코드는 자일링스 FPGA와 TSMC의 180 nm 공정에서 제조된 ASIC에서 입증되었으며, μClinux를 부팅할 수 있다. J2는 SH-2와 역호환 ISA를 가지며, 별도의 명령어 및 데이터 메모리 인터페이스를 갖춘 5단계 파이프라인으로 구현되었고, 밀집되고 복잡한 (다른 RISC 머신에 비해) ISA를 지원하는 기계 생성 명령어 디코더를 갖추고 있다. 추가 명령어는 쉽게 추가할 수 있다. J2는 동적 시프트(SH-3 및 이후 명령어 패턴 사용), 확장된 원자 연산(스레딩 기본 요소에 사용), 대칭형 다중 프로세서 지원을 위한 잠금/인터페이스용 명령어를 구현한다. 2016-2017년에 관련 특허가 만료됨에 따라 SH-2A( "J2+"로) 및 SH-4( "J4"로) 명령어 집합을 구현할 계획이다.

슈퍼H의 여러 기능은 이 아키텍처를 기반으로 새로운 코어를 설계하는 동기로 언급되었다.

* ARM 또는 MIPS와 같은 다른 32비트 RISC 명령어 집합에 비해 높은 코드 밀도는 캐시 및 메모리 대역폭 성능에 중요
* 기존 컴파일러 및 운영체제 지원 (리눅스, Windows Embedded, QNX)
* 특허가 만료됨에 따라 극히 낮은 ASIC 제조 비용 (TSMC 180nm 공정에서 듀얼 코어 J2 코어의 경우 약 ).
* 특허 및 로열티 프리 (BSD 라이선스) 구현
* 완전하고 활기찬 커뮤니티 지원
* 무료 FPGA 도구를 위한 저가 하드웨어 개발 플랫폼 가용성
* CPU 및 SoC RTL 생성 및 통합 도구, FPGA 및 ASIC 이식 가능한 RTL 및 문서 생산
* 오픈 소스 설계, 생성, 시뮬레이션 및 검증 환경을 갖춘 깨끗하고 현대적인 디자인

## 모델

슈퍼H CPU 코어 제품군에는 다음이 포함된다.
* SH-1 – CD-ROM 드라이브, 대형 가전제품 등 깊이 내장된 애플리케이션용 마이크로컨트롤러에 사용되었다.
* SH-2 – 고성능 요구 사항이 있는 마이크로컨트롤러, 네트워킹 애플리케이션, 그리고 세가 새턴 및 세가 32X 애드온과 같은 비디오 게임 콘솔에도 사용되었다. SH-2는 스바루 (자동차), 미쓰비시, 마쓰다를 포함한 많은 자동차 엔진 제어 장치 애플리케이션에도 사용되었다.
* SH-2A – SH-2A 코어는 몇 가지 추가 명령어를 포함하는 SH-2 코어의 확장으로, 가장 중요한 것은 슈퍼스칼라 아키텍처(단일 사이클에서 두 개 이상의 명령어를 실행할 수 있음)와 두 개의 5단계 파이프라인으로 전환한 것이다. 또한 6클럭 사이클의 인터럽트 대기 시간을 용이하게 하기 위해 15개의 레지스터 뱅크를 통합했다. 모터 제어 애플리케이션뿐만 아니라 멀티미디어, 차량 오디오, 파워트레인, 자동차 바디 제어 및 사무실 + 빌딩 자동화에도 강점을 가지고 있다.
* SH-DSP – 원래 휴대 전화 시장을 위해 개발되었으며, 나중에 JPEG 압축 등 DSP 성능을 요구하는 많은 소비자 애플리케이션에 사용되었다.
* SH-3 – 조르나다와 같은 모바일 및 핸드헬드 애플리케이션에 사용되었으며, 윈도우 CE 애플리케이션 및 자동차 내비게이션 시장에서 수년간 강점을 보였다. 케이브 CV1000은 세가 나오미 하드웨어의 CPU와 유사하게 이 CPU를 사용했다. Korg Electribe EMX 및 ESX 음악 제작 장치도 SH-3를 사용한다.
* SH-3-DSP – 주로 멀티미디어 터미널 및 네트워킹 애플리케이션, 프린터 및 팩스 기계에도 사용되었다.
* SH-4 – 자동차 멀티미디어 터미널, 비디오 게임 콘솔, 특히 드림캐스트, 또는 셋톱박스와 같이 고성능이 요구되는 곳에 사용되었다.
* SH-5 – 하이엔드 64비트 멀티미디어 애플리케이션에 사용되었다.
* SH-X – 엔진 제어 장치, 차량 멀티미디어 장비, 셋톱박스 또는 휴대폰에 다양한 형태로 (DSP 또는 FPU 유닛 포함/미포함) 사용되는 주류 코어
* SH-Mobile – 슈퍼H 모바일 애플리케이션 프로세서; 베이스밴드 LSI에서 애플리케이션 처리를 오프로드하도록 설계되었다.

### SH-2
섬네일|upright|히타치 SH-2 CPU (우측 하단, 컬러 스트라이프 포함)

SH-2는 고밀도 코드 구현을 위한 16비트 고정 명령어 길이를 가진 32비트 RISC 아키텍처이며, DSP 알고리즘을 위한 하드웨어 곱셈-누산(MAC) 블록과 5단계 파이프라인을 특징으로 한다.

SH-2는 모든 ROM이 없는 장치에 캐시를 포함한다.

16개의 범용 레지스터, 벡터-베이스 레지스터, 글로벌-베이스 레지스터, 프로시저 레지스터를 제공한다.

오늘날 SH-2 제품군은 32KB의 온보드 플래시부터 ROM이 없는 장치에 이른다. CAN, 이더넷, 모터 제어 타이머 장치, 고속 ADC 등 다양한 주변 장치를 가진 다양한 장치에 사용된다.

### SH-2A
SH-2A는 SH-2 코어에 일부 32비트 명령어를 추가한 업그레이드 버전이다. 2006년 초에 발표되었다.

SH-2A 코어의 새로운 기능은 다음과 같다.
* 슈퍼스칼라 아키텍처: 2개 명령어 동시 실행
* 하버드 아키텍처
* 두 개의 5단계 파이프라인
* 혼합 16비트 및 32비트 명령어
* 6사이클 안에 인터럽트 응답을 위한 15개의 레지스터 뱅크
* 선택적 FPU

오늘날 SH-2A 제품군은 16KB부터 시작하여 ROM이 없는 다양한 변형을 포함하는 넓은 메모리 필드를 아우른다. 이 장치는 CAN, 이더넷, USB 등과 같은 표준 주변 장치뿐만 아니라 모터 제어 타이머, TFT 컨트롤러 및 자동차 파워트레인 애플리케이션 전용 주변 장치와 같은 보다 애플리케이션별 주변 장치도 특징으로 한다.

### SH-3
[섬네일|left|upright|히타치 SH-3 CPU ([볼 그리드 배열 버전)]]

### SH-4
SH-4는 RISC CPU로, 세가의 드림캐스트 및 NAOMI 게임 시스템과 같은 멀티미디어 애플리케이션에 주로 사용하기 위해 개발되었다. 표준 32비트 정수 처리 및 16비트 명령어 크기와 함께 훨씬 더 강력한 부동소수점 장치와 추가 내장 기능을 포함한다.

SH-4의 특징은 다음과 같다.
* 32비트 단정밀도 및 64비트 배정밀도 부동소수점을 지원하는 4개의 부동소수점 곱셈기가 있는 FPU
* 4D 부동소수점 내적 및 행렬 벡터 곱셈
* 데이터 캐시에서 3.2GB/초 전송 속도를 허용하는 128비트 부동소수점 버스
* 32비트 메모리 주소 지정 기능을 갖춘 64비트 외부 데이터 버스, 최대 4GB의 주소 지정 가능한 메모리 허용 (바이트 주소 지정 참조) 800MB/초 전송 속도
* 내장 인터럽트, DMA 및 전원 관리 컨트롤러

카시오용으로 제작된 맞춤형 SH-4인 SH7305에는 FPU가 없지만 대신 DSP 명령어 세트 확장을 가지고 있다.

### SH-5
SH-5는 64비트 RISC CPU이다.

시뮬레이션되지 않은 SH-5 하드웨어는 거의 출시되지 않았고, 여전히 사용 중인 SH-4와 달리 SH-5에 대한 지원은 GCC와 리눅스에서 중단되었다.

### SH-6
SH-6은 발표되었지만 구현되지 않은 추가 개발이었다. 2 GIPS 이상, 7 GFLOPS 이상, 24 GOPS 이상을 달성할 예정이었다.

## 각주
### 인용

### 참고 문헌
* 
* 

## 외부 링크
* 르네사스 SuperH, 제품, 도구, 매뉴얼, 애플리케이션 노트, 정보
* J-core 오픈 프로세서
* 
* 리눅스 SuperH 개발 목록
* 
* SH4용 데비안 포팅 진행 중
*  마이크로프로세서 프로그래밍에 대한 15부작 시리즈.

분류:임베디드 마이크로프로세서
분류:일본의 발명품
분류:명령어 집합 구조
분류:오픈 소스 하드웨어
분류:32비트 마이크로프로세서