'DSP'에 해당되는 글 3건

  1. 2009.06.25 DM6467 Develop Board 2
  2. 2009.01.30 DSP Design [2]
  3. 2009.01.15 DSP Design [1]
Embedded2009. 6. 25. 16:24
개발용으로 만든 TI DSP DM6467 + FPGA Board 입니다.

사용자 삽입 이미지
 Xilinx FPGA에다가 Video I/F 및 Audio Interface 그리고 PCI에 카메라 등등 FPGA+DSP 개발 솔루션으로 개발된 플랫폼 보드입니다.

컬러는 황금색이 좋았는데,
바빠서 (그리고 게을러서) 색지정 절차를 깜박했더니, 멤버들이 그냥 녹색으로 후딱 떠버렸습니다. 쩝..

그분 전용 붉은 컬러에서 그분이 두번째 기체인 황금의 기체로 바꾸어 타셔서,
우리도 붉은색 보드에서 황금색 보드로 만들고 싶었습니다.

다음에 보드는 꼭 황금색으로 떠야지..

'Embedded' 카테고리의 다른 글

Eclipse + eCOS =??  (0) 2009.11.23
H.264 SVC 참고 사이트 입니다.  (0) 2009.07.04
FFMPEG /X264를 MAC에서 빌드  (0) 2009.06.14
H.264 SVC 다운로드 커맨드  (0) 2009.06.12
LVDS Owner’s Manual [3]  (0) 2009.05.16
Posted by GUNDAM_IM
ASIC SoC2009. 1. 30. 16:18

DSP Design [2]


앞서의 글에서 공개된 아키텍쳐를 이용해서 만드는 것이 좋다고 말씀드렸습니다.

공개된 아키텍쳐 중에서 당장 눈에 뛰는 것은 4가지 입니다.


- OpenCores 와

- SUN Sparc Processor

- Core-A

- MIPS-I


각각의 프로세서를 간략하게 정리하였습니다.


2-1 OpenCore - 1000/1200


Damjanl Lampret 라는 사람이 만든 OpenCores에서 공개한 프로세서로서 32비트 및 64비트까지 지원하는

명령어 세트를 가지고 있습니다.


오픈 코아는 명령어 자체가 걸려있는 것이 아닌것으로 생각되어, 구현 해도 큰 문제는 없을 것으로 생각합니다.


다만 현재 있는 것도 잘 되어 있어서 큰 문제는 없고, 실제 사용한 적도 있기 때문에

굳이 구현할 필요까지는 없을 것 같습니다.

무엇보다 공짜인데.. 라는 생각이 강한 오픈 코아이기 때문에 개인적으로는 위화감이 있습니다.



2-2 SUN Sparc


요게 맘에 들긴 합니다.

뭣보다도 정식 라이센스도 가능하고, 컴파일러와 O/S도 다 갖추고 있기 때문에 구현후에 좋습니다.


선에서 구할 수 있는 것은  T1과 T2프로세서 입니다.


T2는 서버를 원칩에 담겠다는 개념으로 만들어서 코드네임도 “NAIAGARA"로 명명했습니다.

결과물을 보면 물량전에서 절대 지지 않는 울트라 리스크 러쉬라고 할까요 ?

그런 정도의 엄청난 물량을 가지고 있습니다.


사용자 삽입 이미지


T1도 잘 만들었고 실제 이넘에서 프로세서 하나를 떼서 사업화 하겠다던 회사도 있었습니다.

그후에 소식은 못들어서 또 역사의 물결 속으로 사라진게 아닌가 하는 의구심도 듭니다.


하여튼 개인적으로는 이러한  레지스터 윈도우 방식은 참으로 좋은 아이디어로 생각합니다.
일정 수준까지의 함수의 호출에서는 스택을 건드리지 않고 파라미터와 내용을 전달하기 때문에
속도가 아주 빠릅니다.


다만 일정 수준을 넘어가면 Exception이 발생하고, 그 후에 다시 처리하는 것이 조금 시간이 걸린다는 단점이 있습니다.


개인적으로는 Embedded IP에서 게이트 카운트에 압박을 벗어나는 시대이므로, 용량이 좀 되는 어플리케이션에서는 좋은 어프로치라고 생각합니다.



 2-3 Core-A


작년 여름께 발표된 것으로, 특허청과 국내 대학 연합에서 만들어서 발표한 아키텍쳐입니다.


아키텍쳐가 공개된는지는 모르겠습니다만, 명령어 세트를 구하는 것은 쉬운 것이라서

구현이 가능한 범주에 넣었습니다.


NOP를 명령어 비트에 집어넣은 발상으로 만들었기 때문에 Data forwarding이 필요 없다는

개념을 가진 아키텍쳐로 보입니다.

컴파일러와 시뮬레이터가 아직 완전하지 않은것으로 보여 이 부분에 대한 보완이 시급한 것 같습니다.


하지만, 이제 시작이고  국내에서 EISC외에 새로운 아키텍쳐가 나왔다는 점에서 의미가 있다고 생각합니다.


2-4 MIPS-I


사용자 삽입 이미지

위의 사진은 도시바에서 만든 MIPS-4400입니다.

MIPS WIKI페이지에서 옮겼습니다.


ARM과 쌍벽을 이루면서, 미국에서 자존심을 걸고 지켜주는 프로세서이죠

프로세서 아키텍쳐 바이블 서적인 Computer Organization and Design: The Hardware/Software Interface 에서 설명하는 구조입니다.

프로세서 공부하시는 분들은 모르는 사이에 한번 공부한 아키텍쳐죠..



사용자 삽입 이미지

MIPS의 클론 프로세서를 검토한다면 렉서라라는 회사에 대해서 알아야 합니다. 이것에 대해서는  아래 링크를 한번 읽어보시면 좋겠습니다.

(눈물 없이는 읽을 수 없는 글입니다.)

http://jonahprobell.com/lexra.html

LEXRA는 MIPS-I 클론을 만들었고, 특허를 피해가기 위해서 노력을 했습니다만,  MIPS의 현질 공세에 밀려서 사라진 회사입니다.  저자는 MIPS가 Lexra에 대항했을 때의 그 노력으로 ARM에 대항했다면, 훨씬 좋은 결과를 만들었을 거라는 아쉬움을 이야기합니다.



MIPS-I에서 특허로 보호받는 부분은 명령어중 4개 정도 입니다. 그리고 이 명령어들은 Memory Miss Alignment에 대한 것들입니다.

이 것에 대해서는 우여 곡절이 많지만 하여튼 2006년 12월에 특허가 완전히 풀렸습니다.

따라서 구현에 법적인 문제는 없는것으로 되어 있습니다.


관련해서 오픈 코아의 Plasma프로세서가 MIPS-I을 이용해서 구현했습니다.

http://www.opencores.org/projects.cgi/web/mips/overview



앞서 말씀드린 바와 같이 MIPS-I의 특허는 완전히 풀렸기 때문에 이것을 이용해서 프로세서를 만드는 것이 가능합니다.


2-5 어떤 아키텍쳐를 ??


어떤 것을 구현하는게 좋은지는 법적인 문제와 실제 문제 그리고, 프로세서의 개발 환경 문제도 검토해야 합니다.

그리고  컴파일러의 최적화 문제에 대해서 고민을 해봐야 하고 또, 프로세서의 용도에 따라서 선택해야 하는 문제입니다.


이번에 만들고 싶은 프로세서는 고성능 DSP프로세서이기 때문에 명령어 확장도 가능한 형태로 가야 합니다. 이 부분을 고려하여서 위의 4가지 아키텍쳐 중에서 하나를 선택해서 구현합니다.



---------


그외에 공개된 아키텍쳐가 있다면 좋겠습니다.

이 자료는 현재까지 알고 있는 아키텍쳐에 대해서 검토한 과정을 정리한 것입니다.

언제나 그렇듯 제가 알고 있는 부분과 사실과 틀릴수도 있습니다. ㅋㅋ




Posted by GUNDAM_IM
ASIC SoC2009. 1. 15. 11:49

DSP가 필요해졌습니다. 에구~~


갑자기 DSP가 필요해졌습니다. 

엄밀하게 말하면 뜬금없이 갑자기 필요한것은 아니었지만, 

그동안 굳이 개발할 필요가 있겠냐 라는 마인드로 외면하면서 버티고 있었습니다.


SoC같은 부류의 일을 하다 보면 프로세서가 2가지 종류가  필요하게 됩니다.

하나는 내부 컨트롤을 위한 MCU이고, 나머지 하나는 고속으로 동작하며 필요한 정보 처리를 씩씩하게 해낼 수 있는 프로세서 입니다. 전자를 컨트롤러개념에 가까운 프로세서 이며,  후자를 데이터 처리를 위한 프로세서 개념으로 분류를 합니다.



필요해 진것은 표준에 부합된 프로세서가 아니라 필요한 기능을 재조립 가능한 데이터 처리용 프로세서입니다.

그것도 빵빵한 속도로 돌아가는 프로세서 입니다. H/W Accelerator만으로 해결 할 수있는 부분이 

제한적이 될 것 이고, 내부에 고속으로 동작하는 프로세서가 있어서 이놈이 역활을 크게 해야 할 것으로 

생각합니다.


컨트롤로와 데이터 처리 프로세서 중에서 DSP를 먼저 설계하는 이유는 DSP에서 컨트롤러로 가는 것은 쉽지만, 컨트롤러에서 DSP로 가는 것은 결코 쉽지 않습니다  그래서 DSP를 먼저 설계하고, 튜닝해서 컨트롤러로 다운 사이징을 하는 것이 맞다고 생각합니다.




사용 가능한 것들을 총 망라해보면 비싼(?) 상용 프로세서를 사용하자니.. 곤란하구요.. 

벤쳐에서 언강생심 ARM이나 MIPS를 쓴다는 것은 큰일입니다. 그것도 데이터 처리를 위한 프로세서에

넣자고 하면 만만치 않은 투자 비용이 들어갑니다.



OpenCore에서 개발된 프로세서를 사용하는 것도 가능합니다. 그런데  이 프로세서의  재미있는 부분이 초기에는  OpenCore Processor 저자가 라이센스가 무료입니다 하고 외쳤지만, 어느날 부터인가는 조용해지더니 지금은 떡 하니 회사를 차려 놓고 있습니다.


실제로 국내에서 모 회사가 이 회사랑 계약하였습니다. 

그래서 돈주고 라이센스 하여야 하는것이 아닌가 하는 상태까지 의심이 갑니다. 실제로 국내에서 계약한 회사는 초기 라이센스 비용이 있다고 하였습니다. - 괜히 걸려서 오해사느니.. 이 OpenCore는 포기.. 


그외에는 SunSparc의 Clone프로세서인 Leon이 좋은데요. 실적도 있고 오픈도 되어 있습니다.

코드를 보신 분은 아시겠지만 VHDL이 아니라 거의 C++수준이라고 생각될 정도로 코딩이 되어 있습니다.

나중에 기능을 추가할려면,  골치아픈 구조라고 생각됩니다.


사용자 삽입 이미지
                                 위의 그림은 LEON3 프로세서입니다. 0.25 공정을 사용했다고 합니다. 

                               






공개된 프로세서를 사용하지 않고 개발한다면 몇가지 선결 과제를 고려해야 합니다.


 

 (1) 컴파일러는 어떻게 할 것인가 ?

       GCC에 포팅한다면, 프로세서의 최적화는 그렇다고 하더라도 인라인 어셈블러에 대해서는 웬만큼 

       익숙해지지 않고서는 사용하기 힘든 사태가 됩니다.  


 (2) 개발 환경은 어떻게 할 것인가 ?

       내부 용이긴 하지만, 그래도 어느정도 개발 환경을 지원해야 합니다.

       디자인 초기에 이 부분이 잘 정의 가 안되어 있으면 진행하는 과정에서 추가하는 것은 아주 어렵습니다.

      

 (3) 내부에 연산 크기는 어떻게 할 것인가 ?

       오디오 용인지 , 비디오 용인지 ,  신호 처리 용인지 등에 따라서 연산자가 많이 바뀌어야 합니다.

       복잡한 연산을 하드웨어가 한다면 편하지만, 프로세서가 한다면, 어떻게 연산자를 정하고 컴파일러/어셈블러에서 지원하는지 정의를 해야 합니다.



옵션에 따라서 파이프라인을 조절하면 컨트롤러 용으로 사용할 수 있도록 구성해 둘 생각입니다.


아키텍쳐로는 어떤게 좋을까 생각을 해보면,


(1) 상용 프로세서의 클론 프로세서로.. 하여본다.

(2) 새로운 아키텍쳐의 프로세서를 과감하게 설계해 본다.

   (3) 적당한 돈을 주면 아키텍쳐 라이센스를 주는 프로세서를 설계해본다.


중 하나를 선택해서 진행하여야 하겠죠


꿈을 가진 엔지니어라면 과감하게 (2) 번 모드로 진입을 하겠지만, 엄청난 닭질이 기다리기 때문에,

(1)번이나 (3)으로 가야겠죠. .그래서 (2)번은 아웃.. 예전에 한번 해봐서 굳이 이 모드로 갈 필요가 없습니다.


(1)번 모드일 경우 항상 두근거리는 스릴을 느끼면서 지내야 합니다. 몰래 MIPS나 ARM Clone을

만들어서 사용할 경우 당장은 무난하더라도 언젠가는 걸려서 큰일 한번 치루게 됩니다.


그래서 (3)번 모드로 갑니다.


나머진 다음에 또.. 2부에서.. 


Posted by GUNDAM_IM