Bit-Slice



글: Andrew Siska & Meng He
싸이프레스 / www.cypress.com

 

"비트 슬라이싱"이란 용어는 각각의 구성요소들이 하나의 필드 또는 연산대상의 "슬라이스" 를 처리하는 보다 작은 비트 폭의 프로세서 모듈에서 프로세서를 구축하기 위한 한 방법으로 한때 회자되었다. 비트 슬라이스 프로세서는 보통 2, 4 혹은 8비트의 산술논리연산장치(ALU)와 컨트롤 라인으로 구성 된다.



다중의 보다 간편한 산술논리연산장치는 비용 효율적인 측면에서 컴퓨팅 파워를 향상 시키기 위한 하나의 방법으로 여겨졌다. 최신 시스템 온 칩(SOC) 기술은 프로세싱 작업을 지능적으로 다른 프로세싱으로 할당함으로써 메인 CPU를 오프로딩의 목적에 맞게 프로그램 할 수 있는 방식으로 비트 슬라이스를 되살린다.
 


비트 슬라이스는 어떻게 여러 해에 걸쳐 진화했을까?



1970년대 초, 아주 복잡한 많은 마이크로프로세서 설계가 아주 간단한 산술논리연산장치(ALU)를 이용하여 8비트 장벽을 통과했다. 이러한 정교한 프로그래머블 디지털 시스템은 8, 16 또는 32비트 마이크로프로세서를 이용하여 설계되지는 않았지만 오히려 비트 슬라이스 프로세서로 알려진 4비트 프로세서 작업을 단계적으로 진행했다.



이러한 프로세서는 아주 간단한 명령어 세트(오늘 날의 RISC 프로세서보다 훨씬 간단한)를 가졌지만 일부는 아주 정교한 처리작업을 수행했다. AMD의 Am2900 제품군과 내셔널 세미컨덕터의 IMP-16 및 IMP-8과 같은 디바이스들은 항공 시스템, 안내 및 추적 시스템, 그리고 초기 신호처리 애플리케이션 등에서 일반적으로 발견된다.
 


이러한 많은 비트 슬라이스 프로세서들은 thru-hole 구성요소 방식으로 갔으며, 현재 업계에서 볼 수 있는 32비트 프로세서를 통해 보다 인기 있는 8비트로 대체되었다. 그러나 비트 슬라이스 프로세서는 군사, 우주항공, 산업, 학문 설계 분야 일부에서 여전히 발견할 수 있어 사라진 것과는 거리가 멀다. 여러 줄어든 명령어 세트를 가진 PLD와 FPGA 같은 프로그래머블 로직의 결합은 디지털 설계자들을 위한 새로운 영역을 오픈 시켰다.

 

비트 슬라이스 기술의 프로그래머블 페이스-오프
 


현재 시장에 나와 있는 수 많은 마이크로프로세서와 마이크로컨트롤러 제품들을 감안할 때 왜 하나는 비트 슬라이싱 기술을 이용하여 설계를 만들까? 독자들이 자신들의 설계 경력 동안 이수한 많은 임베디드 설계를 감안하면 대답은 간단하다.



수많은 작업들이 소프트웨어보다 하드웨어에 의해 수행되었을 때 더 좋았다는 것이다. 생산 비용을 줄이기 위해 고성능 프로세서를 선택하고 소프트웨어에서 하드웨어 기능을 구현하는 것이 보다 비용 효율적인 것이다. 고성능 프로세서를 선택하지 않는다면 설계자는 프로그래머블 로직과 많은 간단한 명령어 세트의 산술논리연산장치(ALU)를 포함한 저렴한 마이크로프로세서를 이용할 수 있었을 것이다.
 


그러면 프로그래머블 로직과 산술논리연산장치(ALU)가 더 복잡하고 더 높은 비트 폭의 프로세서를 처리할 동안 마이크로프로세서는 간단한 작업을 수행할 수 있었을 것이다.
 

PLD 혼합물로 "데이터 경로"를 호출할 이러한 산술논리연산장치(ALU)를 가진 디바이스를 탐험 해 보자. 아래 그림 1에 표시된 데이터 경로는 다음의 것들을 포함하고 있다.

 

1. Add, subtract, AND, OR, XOR, PASS를 포함한 범용 기능들을 수행할 수 있는 8비트 single-cycle ALU
2. 연결된 비교 및 조건생성 회로
3. 내장 Cyclic Redundancy Check(CRC) 및 Pseudo Random Sequence(PRS) 생성
4. 임의의 폭 디지털 기능을 위해 지정되어 프로그램 할 수 있는 가변 Most Significant Byte(MSB)
5. 2개의 4바이트 deep FIFOs, 2개의 8비트 와이드 데이터 레지스터 및 2개의 8비트 accumulators
6. 서로 다른 유형의 데이터 입력을 지원할 수 있는 데이터 입력 : 구성, 제어, 직렬 및 병렬 데이터
7. 조건부, 상태 데이터 등과 같은 다양한 신호들을 가질 수 있는 데이터 출력
 
 

이러한 8비트 데이터 경로의 각각의 하나는 8비트 데이터 경로 이웃에 결합될 수 있으며, 그것은 차례로 그 이웃에게 결합될 수 있다. 이러한 성질의 아키텍처는 다중 8비트에서 n-비트 프로세서로 8을 효과적으로 생산한다. 데이터 경로에서 FIFO, 데이터 레지스터, accumulator, 그리고 ALU는 이러한 방식으로 모두 n-비트로 구성될 수 있다는 점을 참고한다. 이와 함께, 멀티 바이트 데이터 경로 모듈은 8비트 데이터 경로, 모듈에서 데이터 경로의 각각에 대한 컨트롤 시그널 및 출력 상태를 자동으로 함께 묶는다.



예를 들어, 8비트가 특정 애플리케이션에 충분하지 않다면 데이터 경로는 16비트 혹은 그 이상의 비트 프로세서를 구성하기 위해 이웃하는 데이터 경로와 결합될 수 있다. 이런 아키텍처의 추가적인 장점은 각각의 명령이 단 1 클록 사이클만을 필요로 한다는 것이다. 그 결과, 설계는 프로세서 상태의 속도 대신 하드웨어 속도로 실행될 것이다.



샘플이 넘치거나 가장 높은 클록 속도를 필요로 하지 않는 애플리케이션에서 데이터 경로에 있는 싱글 ALU 블록은 두 세트의 레지스터 및 상태 생성기와 효율적으로 공유될 수 있다. ALU 및 시프트 출력은 등록되며, 후속 사이클에서 입력으로 사용될 수 있다. 이러한 사용의 사례는 하나의(8비트) 데이터 경로에서 16비트 기능을 위한 지원과 데이터 이동 작업과 함께 CRC 생성 작업을 인터리빙 하는 것을 포함한다.




표준 비트 슬라이스 아키텍처에 이루어진 강화기능은 프로그래머블 로직을 포함하는 것이다. 이는 개발자들이 Verilog를 이용하여 표준 상태의 머신을 포함할 수 있게 해준다. 이와 함께, 일반적으로 많은 로직 게이트를 소모하는 산술 함수는 더 이상 염려하지 않아도 된다. 왜냐하면 이러한 함수는 표준 ALU에서 구현될 수 있고 상태 머신에 의해 제어될 수 있기 때문이다.



또한 메인 프로세서와 ALU는 개별 블록에서 작동할 수 있다는 점을 참고한다. 예를 들어, 코어 프로세서는 24MHz에서 시간을 기록할 수 있는 반면 ALU는 48MHz 이상에서 시간을 기록할 수 있다.




아래 그림 2는 3개의 8비트 ALU 또는 데이터 경로가 24비트 프로세서를 형성하기 위해 함께 묶여있는 것을 보여주고 있다.



16비트 사례

 

이와 같은 예에서 싸이프레스 세미컨덕터의 PSoC 3 프로그래머블 시스템 온 칩 과 PSoC 크리에이터 개발 환경을 이용하여 우리는 지속적으로 밖으로 이동한 16비트 패턴을 가진 16비트 패턴 제너레이터를 만들 생각이다. 이 프로젝트에서 우리는 메인 CPU를 포함하지 않고 칩 내부의 디지털 부분만을 사용하고 있다.



하나의 데이터 경로는 최하위 8비트로 설정되며, 가장 중요한 8비트에 대한 또 다른 데이터 경로로 설정된다. 아래 그림 3은 16비트 패턴 제너레이터의 최하위 8비트에 대한 데이터 경로 구성을 보여주고 있으며, 그림 4는 16비트 패턴 제너레이터의 가장 중요한 8비트에 대한 데이터 경로 구성을 보여주고 있다.



그림 3과 그림 4 모두에서 ALU 지시는 동일하다. 재설정하거나 A0(accumulator 0)의 취소는 Dynamic Configuration 레지스터 0이 상태 머신(state machine)에 의해 지적될 때 실행된다. A0의 가치는 상태 머신이 Configuration Register 1을 지적할 때 바로 1 비트가 이동되며, A1(accumulator 1)의 가치는 Dynamic Configuration 레지스터 3이 지적될 때 증가된다. 높은 순서의 ALU가 밖으로 이동된 비트는 낮은 순서의 ALU로 이동된다. ALU의 안팎 이동은 낮은 순서 ALU(그림 3)에서 Static Configuration Register 6의 SIA 필드에서 CHAIN을 설정함으로써, 그리고 높은 순서 ALU(그림 4)에서 Static Configuration Register 6의 SIA 필드에서 CHAIN을 설정함으로써 달성된다.



높고 낮은 순서의 8비트 데이터 경로 모두 일반 클록에 의해 시간이 기록되기 때문에 싱글 16비트 프로세서로서 기능하며 중앙 프로세서와는 완전히 무관하다. 펌웨어, 프로세서 조정 혹은 도난 당한 프로세서 사이클은 패턴 생성기를 구동하기 위해 필요하지 않다. 이러한 간단한 프로젝트는 다중 데이터 경로 ALU를 어떻게 연결하는지를 보여준다.



실시간으로 무엇이 나타나는지에 대한 작업을 수행하기 위해 고성능 마이크로컨트롤러를 필요로 하는 것 보다는 오히려 개발자들은 애플리케이션을 관리하고 프로그래머블 로직과 결합된 다양한 ALU에 실시간 백그라운드 작업을 남겨두기 위해 간단한 마이크로컨트롤러를 이용할 수 있다.



시스템 온 칩(SOC) 기술은 다른 온 칩 프로그래머블 하드웨어에 지능적으로 프로세싱 작업을 지정함으로써 메인 CPU를 오프로딩 하는 목적에 부합하는 프로그래머블 방식으로 비트 슬라이싱을 부활하고 있다. 비트 슬라이싱 아키텍처로 개발자들은 표준 상태 머신을 개발할 수 있을 뿐만 아니라 많은 양의 로직 게이트를 일반적으로 소모하는 산술 함수 역시 개발할 수 있다.



둘 모두 염려할 근거가 없는데 이는 데이터 경로 로직에 포함된 표준 ALU에서 구현되거나 또는 PLD 기반의 상태 머신에 의해 컨트롤될 것이기 때문이다. 그로 인해 현대의 임베디드 시스템 엔지니어들이 전체 시스템 전력 소모와 효율성에 집중할 수 있게 해 준다.


그림 1. 데이터 경로 아키텍처

그림 2. 데이터 경로 아키텍처 체인

그림 3. 데이터 경로 구성 LSB

그림 4. 데이터 경로 구성 MSB
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지