버스 부호화

Bus encoding

버스 인코딩은 데이터를 버스에서 시작하기 전에 다른 형식으로 변환/인코딩하는 것을 말합니다.버스 부호화는 핀 수 감소, 전송되는 데이터 압축, 비트선 간 크로스 토크 감소 등 다양한 용도로 사용할 수 있지만 시스템버스[1][2]의해 소비되는 동적인 전력을 줄이기 위해 시스템 설계에서 널리 사용되는 기술 중 하나입니다.버스 부호화는 버스상의 2개의 연속된 값 사이의 해밍 거리를 줄이는 것을 목적으로 합니다.액티비티는 해밍 거리에 정비례하기 때문에 버스 부호화는 전체 액티비티 계수를 감소시켜 시스템의 동적 전력 소비를 감소시키는 데 효과적이라는 것이 증명됩니다.

이 문서에서 시스템은 어떤 요소에서 다른 요소(바이즈)로 데이터가 전송되는 모든 요소를 가리킬 수 있습니다.시스템 칩(SoC), 컴퓨터 시스템, 임베디드 시스템 온보드 등

동기

오늘날 전자 시스템의 소비 전력은 다음과 같은 이유로 우려되고 있습니다.

  1. 배터리 작동 장치:배터리로 동작하는 디바이스의 편재성과 배터리의 2회 충전간의 지속시간을 최대화할 필요가 있기 때문에, 시스템의 소비 전력(및 에너지)은 가능한 한 삭감할 필요가 있습니다.
  2. 환경 제약:환경을 보호하기 위해 우리는 사용 가능한 에너지를 보존할 필요가 있다.전자시스템에 의해 소비되는 에너지가 급격히 증가하고 있기 때문에 환경을 보호하기 위해서는 전자시스템의 에너지 소비를 최소화하는 것이 중요합니다.
  3. 소비전력:무어의 법칙에 따라 반도체 소자는 점점 더 적은 면적에 트랜지스터를 채워왔다.이로 인해 유닛 면적당 소비전력이 증가하여 패키징 및 열냉각 시스템 설계가 복잡하고 비용이 많이 듭니다.따라서 이 문제를 해결하려면 저전력 전자 시스템이 필요합니다.

전자 회로에 의해 방산되는 동적 전력은 로직 게이트의 출력에서 볼 수 있는 활동 계수 및 부하 캐패시턴스에 정비례합니다.버스의 경우, 버스는 여러 모듈에 접속하여 더 오래 라우팅해야 하며 액티비티 팩터도 높기 때문에 부하 캐패시턴스가 보통 높습니다.부하 캐패시턴스와 액티비티 계수의 값이 높기 때문에 일반 시스템에서는 버스 전력 소비가 총 전력 소비량의 최대 50%를 차지할 수 있습니다.버스 부호화는 버스 회선의 액티비티(토글 수)를 삭감하는 것에 의해서, 이 전력을 삭감하는 것을 목적으로 하고 있습니다.특정 시스템에 사용되는 버스 부호화의 종류는 대상 어플리케이션과 시스템에 관한 환경 제약이 알려진 경우에 가장 잘 결정될 수 있지만, 아래에 설명된 버스 부호화 기술은 대부분의 시스템에서 버스 전력을 줄이는 데 도움이 됩니다.

따라서 버스 부호화는 모든 전자 시스템 [citation needed]설계에 중요합니다.

저전력을 실현하기 위한 버스 부호화의 예

다음으로 다양한 시나리오에서 버스 부호화를 사용하여 동적인 소비전력을 저감하기 위한 구현의 일부를 나타냅니다.

  1. 회색 인코딩:[3]대부분의 컴퓨팅 시스템에서 버스의 어드레스 라인은 공간적 인접성에 의해 연속되는 수치로 증가합니다.버스에 통상적인 바이너리 부호화를 사용하는 경우, 2개의 연속된 주소 사이의 최소 해밍 거리가 보장되지 않습니다.주소 라인을 인코딩하는 데 회색 코드를 사용하면 연속된 2개의 주소 버스 값 사이의 해밍 거리가 1이 됩니다(공간적 인접성이 유지되는 한).지연 [4]오버헤드를 줄이기 위해 Shifted Gray 부호화라는 이름의 이 방식에는 다양한 종류가 있습니다.
  2. 시퀀셜 어드레싱 또는 T0 코드:[5]어드레스 버스의 경우, 프로그램에 존재하는 공간적 인접성 때문에, 대부분의 전환은 다음 연속된 값으로 주소를 변경하는 것을 수반합니다.가능한 부호화 방식은 현재 천이가 다음 증분 주소인지 아닌지를 나타내는 추가 라인 INC를 버스에 사용하는 것입니다.연속된 주소가 아닌 경우는, 수신측은 버스의 값을 사용할 수 있습니다.다만, 연속하는 주소의 경우, 송신기는 버스내의 값을 변경할 필요는 없고, INC 회선을 1로 아사트 할 필요가 있습니다.이 경우, 연속 어드레싱 스킴의 경우, 버스상에서 전혀 천이가 없고, 버스 액티비티 팩터가 0이 됩니다.
  3. 숫자 표현:센서에서 데이터를 가져오는 시스템의 예를 생각해 보겠습니다.대부분의 경우 센서가 약간의 노이즈를 측정할 수 있으며, 이 예에서는 측정되는 값이 (0)과 (-1)인 것으로 간주합니다.32비트 데이터 버스의 경우 값 0은 0x000000000000000000000000000000000000000000000000000000000000000000000000)으로 변환되며 (-1)은 2의 보완 표현으로 0xFFFFFFFF(111111111111111111111111111111111111111111111111111)로 변환됩니다.이 경우 해밍 거리는 32로 되어 있습니다(32비트 모두 상태가 변화하고 있기 때문입니다.대신 부호 있는 정수 표현을 사용하도록 버스를 인코딩하는 경우(MSB는 부호 비트), 0x00000000000000000000000000000000000000000000000000000000x800001(1000000000000000000000000000000000000000000000000000000000000000001)로 나타낼 수 있습니다.이 경우 숫자 사이의 해밍 거리는 2에 불과하다는 것을 알 수 있습니다.따라서 부호화된 산술 부호화에 대한 2의 보수를 사용함으로써 액티비티를 32배에서 2배까지 줄일 수 있다.
  4. 반전 부호화:[6][7]이것은 INV라는 이름의 추가 회선이 버스 회선에 추가되는 버스 부호화의 또 다른 구현입니다.INV 라인의 값에 따라 반전 여부에 관계없이 다른 라인이 사용됩니다. 예를 들어 INV 라인이 0이면 버스 상의 데이터가 그대로 샘플링되지만 INV 라인이 1이면 버스 상의 데이터가 반전된 후 처리됩니다.3에서 사용한 예를 참조하면 부호 있는 정수 표현을 사용하는 대신 2의 보수를 계속 사용하고 반전 부호화를 사용하여 동일한 액티비티를 줄일 수 있다.따라서 0은 INV=0인 0x000000으로 표시되고 -1은 INV=1인 0x000000으로 표시됩니다.INV=1이므로 수신기는 데이터를 소비하기 전에 데이터를 반전하여 내부적으로 0xFFFFFF로 변환합니다.이 경우 버스를 통해 1비트(INV 비트)만 변경되어 인자1의 액티비티가 발생합니다.일반적으로 반전 부호화에서는 인코더는 현재 값과 다음 값 사이의 해밍 거리를 계산하고 이에 따라 INV=0 또는 INV=1 중 어느 쪽을 사용할지 결정한다.
  5. 값 캐시 인코딩:[8]이것은 버스 인코딩의 또 다른 형태로 주로 외부(오프칩) 버스에 사용됩니다.사전(값 캐시)은, 송신측과 수신측의 양쪽 모두에서, 공통으로 공유되는 데이터 패턴의 일부에 대해서 보관 유지된다.송신측은, 데이터 패턴을 매번 전달하는 대신에, 수신측에서 사용하는 값 캐시로부터의 엔트리를 나타내는 1비트를 토글 합니다.값 캐시에 존재하지 않는 값만 전체 데이터가 버스를 통해 전송됩니다.가치 캐시의 히트 수를 최대화하기 위해 이 기술을 다양한 방식으로 수정했지만 근본적인 생각은 동일합니다.[9][10]
  6. 섹터 기반 [11]부호화, 반전 부호화의 변형과 같은 다른 기술들도 제안되었다.경로 [12][13]지연에 대한 영향을 최소화하면서 누전 전력 소비를 줄이고 크로스톡을 줄이는 버스 인코딩을 사용하는 작업이 진행되어 왔습니다.

버스 부호화의 기타 예

그 외의 많은 종류의 버스 부호화가 다양한 이유로 개발되고 있습니다.

  • 개량된 EMC: 많은 버스에서 사용되는 차동 시그널링 및 MIPI C-PHY 카메라 시리얼[14] 인터페이스에서 사용되는 보다 일반적인 고정 무게 코드는 둘 다 외부 간섭에 대한 내성이 강하며 다른 장치에 대한 간섭이 적습니다.
  • 버스 다중화:많은 초기 마이크로프로세서와 초기 D램 칩은 시스템 버스의 모든 주소 비트와 데이터 비트에 핀을 할당하는 것이 아니라 버스 멀티플렉싱을 사용함으로써 비용을 절감했습니다.하나의 접근방식은 기존의 PCI에서 사용되는 접근방식인 데이터 버스 [15]핀에 대해 다른 시간에 주소 버스 핀을 재사용합니다.다른 접근방식은 주소 버스의 상반부와 하반부에 대해 동일한 핀을 다른 시간에 재사용합니다.이것은 많은 다이내믹 랜덤 액세스메모리 칩에 의해 사용되는 접근방식으로 제어버스에 2핀(RAS)과 컬럼주소 스트로브(CAS)를 추가합니다.

실시방법

SoC 설계의 경우 전용 인코더와 디코더를 버스를 통해 인스턴스화함으로써 버스 부호화 방식을 RTL에서 가장 잘 구현할 수 있습니다.구현될 수 있는 또 다른 방법은 시뮬레이션의[16] 트레이스로서 힌트를 합성 도구에 전달하거나 필요한 인코딩 유형을 정의하기 위해 합성 플러그마를 사용하는 것입니다.

버스에서는 마스터 모듈과 슬레이브 모듈 사이에 작은 저전력 IC를 배치하여 부호화 및 복호화 기능을 구현할 수 있습니다.

인코딩 함수의 속성

버스 부호화/복호화 함수는 바이젝션이어야 합니다.이를 위해서는 기본적으로 부호화 함수가 다음 동작을 [3]보유해야 합니다.

  1. 버스상에서 기동하는 모든 데이터는, 일의의 부호화 값을 가지고, 모든 부호화 값은 일의로 같은 원래의 값으로 디코딩 할 필요가 있습니다.
  2. 소스에서 생성할 수 있는 모든 값을 인코딩 및 디코딩할 수 있어야 합니다.

트레이드오프/분석

  • 버스 인코딩을 추가하면 버스상의 액티비티 계수가 감소하고 다이내믹 파워가 감소하지만 버스 주위에 인코더와 디코더를 추가하면 설계에 회로가 추가되어 다이내믹 파워도 일정량 소비됩니다.전력 절약량을 계산할 때 이를 고려해야 합니다.
  • 추가 회로는 설계/회로/시스템/SoC의 누출 전력도 증가시킵니다.시스템 버스의 기본 액티비티 계수가 그다지 높지 않은 경우, 버스 부호화는 높은 누출 전력으로 인해 전체적인 에너지 소비량을 저하시킬 수 있기 때문에 그다지 실행 가능한 옵션이 아닐 수 있습니다.
  • 버스 타이밍이 크리티컬 데이터 패스에 있는 경우 패스에 회로를 추가하면 타이밍 패스가 저하되어 악영향을 미칠 수 있습니다.사용하는 버스 부호화의 종류를 판단하려면 , 이 분석을 신중하게 실시할 필요가 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Pedram, Massoud; Abdollahi, A., Low Power RT-Level Synthesis Techniques: A Tutorial (PDF)
  2. ^ Devadas; Malik (1995), "A Survey of Optimization Techniques targeting Low Power VLSI Circuits", DAC 32: 242–247
  3. ^ a b Cheng, Wei-Chung; Pedram, Massoud, Memory Bus Encoding for Low Power: A Tutorial (PDF)
  4. ^ Guo, Hui; Parameswaran, Sri (April–June 2010). "Shifted Gray encoding to reduce instruction memory address bus switching for low-power embedded systems". Journal of Systems Architecture. 56 (4–6): 180–190. doi:10.1016/j.sysarc.2010.03.003.
  5. ^ Benini, Luca; De Micheli, Giovanni; Macii, Enrico; Sciuto, D.; Silvano, C. (March 1997). "Asymptotic Zero-Transition Activity Encoding for Address Buses in Low-Power Microprocessor-Based Systems". Proceedings Seventh Great Lakes Symposium on VLSI: 77–82.
  6. ^ Stan, Mircea R.; Burleson, Wayne P. (March 1995). "Bus-Invert Coding for Low-Power I/O". IEEE Transactions on Very Large Scale Integration (VLSI) Systems. 3 (1): 49–58. CiteSeerX 10.1.1.89.2154. doi:10.1109/92.365453. 1063-8210/95$04.00.
  7. ^ http://www.eng.auburn.edu/~agrawvd/COURSE/E6270_Fall07/PROJECT/JIANG/Low%20power%2032-bit%20bus%20with%20inversion%20encoding.ppt. {{cite web}}:누락 또는 비어 있음 title=(도움말)
  8. ^ Yang, J.; et al. (August 2001). "FV encoding for low power data I/O". Islped 2001: 84–87.
  9. ^ Basu; et al. (2002). "Power protocol: reducing power dissipation on off-chip data buses". MICRO.
  10. ^ Lin, C.-H.; et al. (2006). "Hierarchical Value Cache Encoding for Off-Chip Data Bus". ISLPED.
  11. ^ Aghaghiri, Yazdan; Fallah, Farzan; Pedram, Massoud. "Transition Reduction in Memory Buses Using Sector-based Encoding Techniques" (PDF).
  12. ^ Deogun, H.; Rao, R.; Sylvester, D.; Blaauw, D. (June 2004). "Leakage- and crosstalk-aware bus encoding for total power reduction". Proceedings of the 41st Design Automation Conference: 779–782.
  13. ^ Khan, Z.; Arslan, T.; Erdogan, A. (January 2005). "A novel bus encoding scheme from energy and crosstalk efficiency perspective for AMBA based generic SoC systems". Proceedings of the 18th International Conference on VLSI Design: 751–756.
  14. ^ "MIPI C-PHY/DPHY 서브시스템 디스테이트화 - 트레이드오프, 과제 채택"(미러)
  15. ^ 돈 랭커스터.'TV 타자기 쿡북'.섹션 "버스 구성" 페이지 82.
  16. ^ Benini, Luca; De Micheli, Giovanni; Macii, Enrico; Poncino, Massimo; Quer, Stefano (December 1998). "Power Optimization of Core-Based Systems by Address Bus Encoding" (PDF). IEEE Transactions on Very Large Scale Integration (VLSI) Systems. 6 (4).

추가 정보