|
'마이크로 프로세서'에 해당되는 글 26건
[babyworm, 2010/01/30 23:40, 개인적인]
사실 여러가지 이유로 2010년에는 2월 설날이 올때까지 신년이 아니라 생각하기로 하고 잠수탈 생각이었습니다. :)
결심~! 이런것은 아니고 (글 안쓰는 것도 결심인가.. 쯧쯧..), 새로운 일에 적응하는 과정과 정신 없는 육아와 졸업을 위해 노력하고 있는 안사람의 바쁨과 책 번역 와중에 정신의 여유를 가지고 글을 쓸 수 있다는 것이 어느 순간 호사스러운 일이 되는 상황이 된 것뿐이지요. 그러다보니, '사실 나의 2010년은 음력으로 시작해요~' 라는 말도 안되는 이유를 붙일까.. 라는 생각이 든 것이지요 :) 그러다 글을 쓰게 된 이유는 왠지 2010년 1월 archieve가 0 이 떠 있으면 한참 후에 log없는 삶이었나.. 라는 생각이 들것 같은 느낌과 착하게도 일 열심히 하라고 딸래미와 같이 친정에 가준 마누라님(올레~ 상황이랄까요..) 덕분에 잠시 시간이 생겼다는 것 정도.. 여하튼, 잘 살고 있습니다. :) 바쁜 만큼 기쁜일이 많고 스카이 스포츠 형식으로 평점을 매기자면 "babyworm (7); lively" 정도는 줄 수 있을 것 같습니다. 아.. 글을 쓰게 된 중요한 이유 중에 하나는 좋은 블로그를 발견해서 입니다. babyworm 추천 1월의 블로그 정도로 할까요? http://recipes.egloos.com/ 역시 세상에 고수는 널렸어요. 소위 이야기하는 실력도 있고 글빨도 있는 분이군요. 언젠가 저도 저의 언어로 좋은 내용을 담은 글을 쓸 수 있는 날이 있으면 좋겠네요. 아.. 빼먹고 안썼는데.. 이번에 나온 iPad는 좀 실망이죠. ARM instruction 기반의 프로세서에서 항상 강조하는 것이 성능 대비 전력소모인데, 1GHz 동작 속도에서 10시간 동작이라니.. Intel UltraThin 계통에서 이미 이룬일이라 별로 임펙트가... 물론, LCD나 기타 다른 부분의 전력 소모가 더 많을테니.. 라고 프로세서는 별로 중요하지 않다고 이야기할 수 있습니다. 하지만, 그런 명제를 걸게되면 전력 대비 성능이 좋은 프로세서를 쓰는 의미가 없어지지요. 애플이 PA-semi를 인수하여 만든 결과물 치고는 좀 실망스럽지만, 그래도 뭐 좋아지기는 하겠죠.
[babyworm, 2009/07/28 09:55, 개인적인]
네이밍이라는 것이 아주 중요하다고 생각합니다. 회사에서도 학교에서도 네이밍이란 것이 중요하다고 생각하고 있는데, 이건 저만 그런것이 아니고 H&P 책의 저자이기도 한 David Patterson교수의 주장이기도 합니다. 좋은 이름, 부르기 좋은 이름을 만들고 좋은 뜻을 만드는 것이 중요하다는 거죠. 오늘의 완벽 잡담은 이 네이밍에 대한 이야기입니다. ^^; 자주 가는 사이트에 가끔 "한국에 절대 진출이 불가능한... "이라는 글이 올라오는데, 오늘은 우리말로 부르면 약간 많이 그런 이름을 가진 가수가 소개되었습니다. 제 생각으로도 절대 진출 불가 아닐까 싶습니다. 이런 비슷한 것이 JOT note 같은 건데(욕 아닙니다.. ^^; jot down 이라는 것은 메모하다는 의미로 아주 아주 많이 사용되는 구문이죠. ), 메모 노트 프로그램인데.. 참..노트도 있구요.. 여하튼 어감이 그래서 우리나라에서는 사용하기 어려울 것 같습니다. 지금은 몇번의 이름 변경을 통해서 SoC Forum 정도로 바뀌었지만, 예전에 우리나라 비메모리 반도체 기업체들의 협회도 참 어감이 그랬더랬다.. ASIC Design Association.. 줄여서 ADA... (아마도 어감이 별로라서 이름을 바꾼것이 아닐까? ^^;) 물론, 내외부에서 '에이다'로 불러줄 것을 요청받았습니다만, 다들... 또 지금은 사라졌지만, 국내 IP 유통의 1세대라 볼수 있는 System Integration and IP Authoring Center 도 그 줄임말로 이야기가 많았죠. 줄임말은 당연히 SIPAC. 물론, 당연히 내외부에서 '싸이펙'으로 불러줄 것을 요청 받았습니다만, 다들.... 여기서 또 옆길로 빠지자면 SIPAC이 사라진 것에 대해서는 여러가지 이유가 있습니다만.. 사실 전 개인적으로 바른 정책적 판단이었는지는 의문입니다. 물론, IP를 담당하는 기관이 SIPAC과 ETRI 산하의 기관으로 나뉘어져 있었으니 통합할 필요가 있었을 것인데.. 통합에 의하여 사라진 것이 아니라 SIPAC을 KIPEX라는 기관으로 이관하였을 뿐이고, KIPEX라는 기관도 이번에 저희쪽의 프로세서 지원 센터 쪽으로 통합 운영되는 것으로 가닥이 잡혔지요.(물론, 저희는 IP 유통에 관여하지 않고 단지 특허청에서 만든 IP에 대한 보급만 관여하게 됩니다.) IP 유통이라는 것이 실제적으로 빈번하게 일어나고 있지만, 대부분 기업대 기업으로 일어납니다. 물론, 정보는 D&R 과 같은 사이트를 통해서 정보를 얻은 후 기업간에 거래가 일어나는 경우가 많습니다. 즉, IP 유통이라는 건 아마도 돈을 벌수 있는 모델이 없을 것이라 보는데, 이것이 기업체에 의해서 운영되었을 때는 음.. 글쎄요.. 실제적으로 IP 유통이 원활하게 이루어지려면, 표준화된 IP 보호 장치가 필요한데, IEEE 등에서 노력 중입니다만, 아직 실무에서 보급되지는 않은 상태이니 시간이 좀 더 필요하겠지요. 아.. 또 옆길의 옆길로 빠졌군요.. 다시 돌아오면, SIPAC 같은 기구는 비영리 기관으로 학교의 IP를 위탁 받아서 정비하고, 상용화 가능성을 모색할 수 있는 형태의 기관으로 커 나갔으면 어땠을까 하는 생각이 있습니다. 예전처럼 단순 유통이 아니구요.. :) 다시 네이밍 이야기로 돌아와서.. Core-A의 네이밍은 상당히 좋아요. 붙여쓰면 Corea도 되고 (물론 의도했겠지요?) 이름처럼 좋은 코아가 되길 바랍니다. 아직은 창출 사업쪽에서 비지니스를 위해서 필요한 것에 대한 인식이 부족하신 듯 한데, 저희 센터 쪽에서 적극적인 feedback이 있어야 겠지요.. EISC의 경우 네이밍이 의미상으로는 적절한데, RISC/CISC와 같은 거대 담론에 휩쓸리기 쉽게 네이밍 된 것이 못내 아쉽습니다. EISC의 경우는 compressed code RISC 형식을 가지고 있는 프로세서인데, 코드 밀도와 메모리 접근에 대하여 최적화되면서 몇몇 CISC적인 요소가 추가되었다는 특징이 있습니다. 그래서 RISC+CISC = EISC 라는 마케팅 용어가 만들어졌던 걸로 추정하는데(이 당시에는 제가 EISC 프로세서 설계 프로젝트에 처음 참여하던 시기라서요 ^^;), 학계에서는 이런 부분에 대해서 매우 꼼꼼하기 때문에 당연히 맹공을 받았지요.. ^^; 학계쪽으로는 compressed code RISC의 일종이라는 점을 강조했으면 좀 유연하게 풀었을 텐데요.. 그래도, 뭐 어찌보면 무관심보다야 논란이 더 좋죠 ^^; (마케팅에서는 그걸 노렸을지도..) 당시에 회사에서 적절히 대처하지 못한것이 못내 아쉬울 뿐인거죠 ^^ 이상 오늘의 완벽 잡담 끝..
[babyworm, 2009/07/23 15:38, SoC 설계 관련/마이크로 프로세서 이야기]
일단 마이크로 프로세서라는 분야에 대해서 설명이 필요할 것으로 봅니다. 학교에서 마이크로 프로세서 구현에 대한 연구는 EE(전자공학)에서 이루어지는 것이 대부분이며, 기업체의 경우 embedded microprocessor는 상당히 많은 업체에서 상용화에 도전하고 있습니다. 하지만, 마이크로 프로세서라는 분야는 그 특성상 몇몇 ISA(명령어 셋 아키텍쳐) 들이 그 점유율을 크게 가져가는 경우가 많기 때문에, 독자적인 ISA를 지닌 마이크로 프로세서를 만들어서 성공한다는 것은 매우 어렵습니다. 이는 사용할 수 있는 프로그램의 수가 많고, 개발자 pool이 튼튼한 프로세서가 계속하여 성장한다는 당연한 이야기(eco-system이라고 보통 표현되는..) 때문입니다. 일례로 PC/서버 계통에서는 x86 ISA가 완전하게 시장을 장악했다고 해도 과언이 아니며, 그 이외의 ISA가 들어오기는 매우 어려울 것으로 봅니다. (그런 측면에서 저는 ARM이 PC 마켓 - netbook이라 불리는 부분에 있어서도..-에서 점유율을 가져 오기는 매우 어려울 것으로 생각하고 있습니다.) 국내에서는 자체 ISA를 가진 프로세서를 설계하는 회사도 거의 없을 뿐 아니라, 이를 지원해 줄 수 있는 컴파일러와 OS를 만드는 회사도 거의 없습니다. 여러가지 여건 상 마이크로 프로세서를 하시는 분들께는 좋지 않은 여건이지요
그럼에도 기업체에서는 학교에서 마이크로 프로세서를 선택하신 분들에 대한 요구가 적지 않은 데요.. 그 이유는 마이크로 프로세서를 만들기 위함이라기보다, 마이크로 프로세서를 이루고 있는 여러 가지 기술을 기반으로 다른 기술에 적응이 빠르다는 장점 때문입니다. 마이크로 프로세서를 만드시는 분들은 소프트웨어와 하드웨어, 모델링 등에 어느 정도 넓은 지식을 갖추어야 하며, 하드웨어에 있어서도 연산기, 제어 유닛, 버스, 캐시 등에도 어느 정도 이상의 지식을 갖추어야 하는데 이런 폭넓은 지식들이 다양한 설계를 하는데 좋은 밑바탕이 되기 때문입니다. 특히 마이크로 프로세서를 공부한다는 건 제어와 연산, 메모리 접근을 최적화 시키는 데 있어서 상당히 깊은 지식을 얻게 되는데, 이러한 지식은 여러 종류의 프로세서 – video, multimedia, audio, network processor등-에 아주 유용하게 사용할 수 있는 기반을 갖추게 된다는 걸 의미합니다.
대충 마이크로 프로세서를 공부한다는 것이 어떤 의미인지는 설명 드렸으니, 그럼 프로세서를 하려면 뭐를 봐야 하느냐 하는 문제에 대해서 설명하겠습니다.
프로세서를 만드는 건 1) 상위 레벨 모델을 기반으로 작업하는 것, 2) RTL 수준까지의 설계, 3) gate 수준에서의 설계 정도로 나누어 생각해 볼 수 있겠습니다. 세 가지 모두 어느 정도 갖추어야 하겠습니다만, 학교에서 논문을 쓰기 위해서는 1)번을 잘해야 하고, 칩을 보고 싶으면 2)번을 잘해야 하고, 우리나라 회사에서 적응하기 쉬우시려면 3)번도 잘해야 합니다.
일단, 프로세서에는 다양한 스펙트럼이 존재합니다. 일례로 프로세서의 구조, 분기 예측, pipeline의 형태, 새로운 연산기나 명령어 적용, 값의 예측 등에 따른 performance변화나 전력 소모의 변화를 연구하게 되는데, 이런 것을 할 때 마다 실제 칩을 설계를 하게 되면 졸업할 수 있는 분이 없으실 테니 일반적으로 C 수준의 simulator를 이용하게 됩니다. 이러한 연구에 들어가기 위해서는 앞에서 이야기 된 S/W가 어떻게 컴파일 되어서 프로세서에게 인식되는지에 대한 이해(ISA)와 더불어 프로세서를 구성하는 여러 가지 요소 – pipeline, cache, virtual memory –에 대한 이해가 있어야지 연구가 진행될 수 있겠습니다. 생각보다 기본적인 데이터 통신이나 데이터 구조에 대한 이해는 아이디어를 얻어내는데 아주 많은 도움을 줍니다. 또한, 많은 경우에 수학적 모델을 세워야 할 필요가 있으므로, 수학적 모델에 대해서도 알아두실 필요가 있습니다.전력 측정 등을 하게 되면 당연히 기본적인 전자회로에 대한 이해는 필수적일테구요 이러한 상위 수준의 모델을 이용한 연구에 가장 널리 사용되는 것은 simplescalar라는 시뮬레이터지요. 이 시뮬레이터는 alpha 아키텍쳐에 기반을 두고 처음에 만들어졌는데 구조가 유연해서 ARM 버전도 있고, (EISC 버전도 있고..) 전력 측정을 위한 simplepower라던지 여러 variation들이 있습니다. 여러분들이 연구를 진행할 때도 마찬가지로 해당 시뮬레이터에 자기의 아이디어를 적용시켜 modify하고 성능을 보는 형태로 연구를 진행하고, 논문을 쓰는 거죠. 이런 일을 위해서는 기본적으로 "C/C++ 와 기본적인 데이터 구조 및 알고리즘에 대해서는 어느 정도 이상 할 줄 알아야 합니다." 몇 번 말씀 드렸습니다만, 이쪽 분야 엔지니어에게 있어서 C/C++은 그냥 언어나 다름 없습니다.
두 번째로 자신의 idea가 어느 정도 확정되었으면, 이것을 RTL(register transfer level)로 설계(보통 verilogHDL이나 VHDL을 사용합니다.)해서, 논리 합성이라는 과정을 거쳐야 합니다. 이때 아이디어가 좋았고, 아키텍쳐가 좋았어도 논리 회로에 대한 기본적인 이해가 없다면 좋은 회로를 만들어내기 어렵습니다. 따라서, "논리 회로에 대한 이해"와 "RTL 설계를 위한 언어 - verilog든 VHDL이던"는 기본적으로 필요합니다.
세 번째로 gate 수준의 설계는 국내 대기업에서 프로세서 작업을 할 때 많이 사용되는데요..(gate 수준의 최적화를 많이 하시니..) 저는 이 분야에 교양적인 지식 밖에 없어서 조언을 드릴 부분이 매우 작습니다. J
아.. 책 이야기를 빼 놓았군요. 저는 Architecture에 있어서는 처음 시작하신다면 Hennessy & Patterson의 computer organization & design이라는 책이나 M.Mano의 책으로 시작하시는 것이 무난하다고 봅니다. 이후에 Hennessy & Patterson의 책(CAQA라 불리는)과 Flynn의 책을 추천해 드리고 싶습니다. 쉽게 읽힐 분량도 아니고, 쉽게 읽히는 내용도 아닙니다만 꼭 한번은 완독 하시길 바랍니다. 깊이 있게 보다는 넓게 보시고 싶으시다면 Sima의 책(advanced computer architecture)도 추천해 드릴만 합니다.
설계의 교양이라는 점에 있어서는 ASIC이라는 책을 보시고 난 이후에 Chinnery의 Closing the Gap Between ASIC and Custom이라는 책도 괜찮습니다. 상당히 괜찮은 관점을 보여줍니다.
RTL Design에 있어서는 (VerilogHDL이나 VHDL과 같은 HDL을 아신다는 가정하에 – verilog에 관련된 책은 예전에 제가 추천한 적이 있습니다. ) Reuse Methodology Manual을 "반드시" 읽어보시길 권하고 싶습니다. 학교에서 짜여진 코드가 생각보다 구닥다리 코딩 스타일을 가지고 있는 경우가 많습니다. Software engineering과 마찬가지로 하드웨어에서도 요즘 중요한 문제는 HDL코드의 readability와 reusability 입니다. 아주 critical 한 부분이 아니라면 약간 타이밍과 면적에 손해를 보더라도 요즘 코딩 스타일을 따르시는 것이 지속적으로 코드를 갱신 할 수 있습니다.
Verification에 있어서는 Comprehensive functional verification이라는 책을 권해 드리고 싶습니다. SoC 시리즈 입문서이기도 하고 잘 쓰여진 책입니다.
마지막으로 마이크로 프로세서를 만드시려는 분들께 한가지만 더..
마이크로 프로세서를 만들 때 가장 중요한 것이며, 가장 간과하기 쉬운 것이 ISA 입니다. 사실 ISA의 설계가 마이크로 프로세서에 있어서 절반 이상이라고 봅니다. 마이크로 프로세서에 있어서 ISA는 이 프로세서가 지향하고 있는 점(철학이라고 하면 좀 거창하고...)을 가장 잘 표현합니다. 학교에 계신 많은 분들은 "어떻게 하면 쉽게 프로세서가 설계 될 것인가?"라는 관점에서 ISA를 설계하시는 경우도 많지요 ^^; 또한, 어떤 프로세서의 경우는 표면적으로 지향하는 바와 ISA가 전혀 매칭이 안되는 경우도 있구요.
EISC의 경우는 ISA를 설계할 때 다양한 실험을 통해서 "프로그램의 크기와 메모리 접근이 가장 줄어들도록 하려면 어떻게 해야 하는가?" 라는 관점에서 모든 명령어 셋이 설계 되었습니다. 이는 임베디드에서는 프로그램의 크기 = cost라는 공식이 성립하기 때문이기도 하고, processor와 memory간의 속도 차가 점점 벌어질 것이라는 관점, memory접근으로 인하여 발생하는 전력 소모의 문제 등을 고려하여 잡은 목표입니다(EISC의 요즘 마케팅 포인트 중의 하나가 energy efficient microprocessor 이지요). 이를 위하여 다양한 실험이 수행되었고, 이중에 가장 적합하다고 생각하는 명령어 형태가 결정된 것이지요. 한 비트 한 비트 설계가 쉽게 이루어진 것은 아니고, 모두 의미가 있지요. 이후에 추가된 DSP 확장 명령어들도 각기 다양한 DSP 커널을 분석하고 이를 기반으로 ISA가 정해졌고, 구현할 때도 이런 부분이 고려되었습니다. 이런 목표 하에 설계되어 명령어의 형태가 일반적인 compressed code RISC들 보다는 약간 더 복잡하고, 이는 디코더 복잡도를 높이는 단점으로 바뀝니다. 달리 이야기하면, ISA를 설계할 때 어떤 결정은 어떤 면에서는 장점이 되지만, 다른 측면에서는 단점이 되는 부분이 있으니 조심해서 결정해야 할 부분이 많은 거죠.
마이크로 프로세서를 공부하고자 하시는 분들께 마지막으로 말씀 드리자면, 최소한 1년 정도는 넓게 공부하시고, 되도록 책을 많이 읽으시라는 "아주 지극히 일반적인" 말씀만을 드릴 수밖에 없네요. ^^; 또 한가지는 프로세서를 하실 분들은 DSP, 데이터 통신에 대해서는 어느 정도 알고 계신 것이 여러모로 도움이 됩니다.
결론 없는 "공부하세요"라는 글이 되었군요. 아.. 요즘 나 왜 이래.. orz
[babyworm, 2009/06/26 18:22, 개인적인]
서울 그랜드 인터컨티낸탈 호텔 2층 오키트 룸 -- 국산 프로세서 지원 센터에 대한 글을 하나 올렸었는데요. 정작 중요한 장소를 안 썼더군요. :) 위와 같습니다. 별다른 행사는 없고, 간단한 소개와 식사 정도랄까요. 저의 넓대대한 얼굴을 보시고 싶으신 분은 오세요 ㅋㅋ -- 사실 이 글은 매우 길게 적었었습니다. (제목도 길었었고 ㅋㅋ) 요즘 국산 프로세서 지원 센터에 대하여 이런 저런 일이 일어나서요. 특허청의 도움 요청을 받고 국내에서 프로세서를 하는 사람으로써 대의적인 측면에서 이 사업에 참여하기 위하여 회사의 수 많은 분들을 설득시켜서 참여했건만 양측에서 공격받고 있어서 정말 참담한 심정입니다. 정말 뭐가 국산 프로세서를 위하여 도움이 되는 것인지만 생각하면 참 쉬운 이야기인데 선의를 악의로 해석하고, 정치적으로 풀려고 하니 일이 더 힘들어 지는 것 같습니다. 많은 이야기를 적었었습니다만, 똑똑한 Textcube에서 글을 씹어주어서 민감한 이야기는 빼고 많이 순화해서 글을 쓸수 있게 되었습니다. :) 이럴때는 컴퓨터의 에러가 얼마나 고마운지 모릅니다. :) (예전에도 온라인 장터에서 노트북 살 때 사기 당할 뻔 했는데, 송금 이체하는데 컴퓨터가 다운되어서 모면한 적이 있지요..당시로는 상당히 큰 사기 사건이었습니다. 여하튼 제가 컴퓨터신의 보호를 받고 있는지도.. ^^ v) 여하튼, 지난 한 주는 제가 선택한 길에 대한 깊은 회한을 느낀 한 주였습니다.
[babyworm, 2009/06/24 00:07, 개인적인]
이번에 회사에서 CANTUS라는 저가 MCU가 공식적으로 론칭했고, 론칭하자마자 양산 오더가 들어와서 양산에 들어갔습니다. 이 MCU는 저희 팀이 개발한 AE32000C-Lucida 프로세서라는 것이 처음 적용된 상용화 칩이지요. 기존에 AE32000C 시리즈에서 가장 많이 사용된 AE32000C-Lucifer프로세서1를 기반으로 기반 성능을 10% 이상 높이고 면적은 줄이고, 에너지 효율도 높이고, 디버거 형태나 효율도 높이고.. 이런 형태로 개발된 것이 AE32000C-Lucida 프로세서지요. 사실 내부적으로 개발이 완료가 된 것은 몇년 되었고, 라이센스나 데모 칩등은 몇번 나왔는데, 이제야 첫번째 상용칩이 나왔으니 상용화라는 것이 참 시간이 많이 걸리는 작업이긴 합니다. 이번에 나온 CANTUS는 범용 MCU로 응용에 필요한 수준의 SRAM과 NOR flash가 내장되어 있기 떄문에 3.3V 전원과 크리스탈만 연결하면, 동작시키는데 문제가 없다는 장점이 있죠. 좋은 음질이 필요치 않다면 CODEC이 내장되어 있고, EISC를 위한 MP3 디코딩 프로그램이 제공되니까 간단한 MP3 플레이어를 만드는 건 아~주 간단하죠. (물론, 좋은 음질을 원한다면 audio codec을 붙이는 것이 깨끗하죠.. 이를 위한 인터페이스도 있고요) 여담입니다만, 저는 저희회사에서 이런 MCU를 많이 하는 것이 좋을 것이라 생각해요. 아키텍쳐를 보급하는데는 수량이 많지 않은 멀티미디어 부분 보다는, 수량을 많이 소화하는 MCU가 더 좋을 것이니까요. (AVR같은 것 봐도 그렇지요 ^^;)
[babyworm, 2009/06/19 08:46, SoC 설계 관련/관련 새소식]
특허청의 Core-A라는 프로세서에 대한 상용화 지원을 도와달라는 부탁을 받은 것은 작년 말의 일인 것 같습니다. 개인적으로는 블로그에서 몇번 밝혔듯이 이 바닥 자체가 넓어지는 것이 제가 바라는 것입니다만, 프로세서 만들어 파는 회사에서 잠재적인 경쟁상대가 될 수 있는 프로세서에 대한 상용화 지원을 한다는 건 쉽지 않은 노릇이지요.
각 프로세서에 대한 포지셔닝에 대한 고민이 한동안 있었고, 결국은 상용화 지원을 도와주는 것으로 가닥을 잡았습니다. 단, 조건은 Core-A 뿐만 아니라 EISC 프로세서의 상용화도 같이 지원할 수 있는 지원 센터로 운용하겠다는 것이 중요한 부분이었습니다. 특허청에서 이런 저런 내부적인 논의가 있었겠으나 이를 받아들이면서 Core-A와 EISC를 아울어 지원해 주는 국산 프로세서 지원 센터가 출범하게 되었고, 공식적인 개소식이 6월 29일에 있을 예정입니다. 1 Core-A의 경우 아직은 기술적으로 해결해야 할 부분이 존재하고 있으므로, 본격적인 보급은 내년정도 부터 시작될 예정이고 올해는 기술적인 평가와 시장에 대비하기 위한 이런 저런 작업이 진행될 예정입니다. EISC 부분의 마케팅은 이쪽 센터 부분에 통합되어 강화되어 운영될 예정이구요 이번달 부터 운영이 시작되었는데, 특허청 분들이 너무 의욕적이라 저희 내부적으로 정비가 안된 상태에서 운영을 시작하면서 내부적으로 좌충우돌하는 중입니다. 차차 해결되려니 생각하고 있습니다. 제대로 돌아가려면 시간이 좀 걸릴 것이라고 생각하고 있습니다. 추후에 국산 프로세서 지원센터의 소식을 더 올리도록 하지요. p.s. 진작에 국가에서 비영리 기관으로 이런 기관을 만들어 주었으면 좋았을 거란 생각이 있습니다. 좀더 중립적인 입장에서 컴파일러와 프로세서에 대한 기술을 지원하고, 공동 마케팅을 수행할 수 있는 기관 말입니다. 비록 저희 회사지만, 치우치지 않고 업무를 수행하려고 노력하려 합니다. (사실 특허청 입장에서는 Core-A가 많이 상용화 되면 좋은 거고, 에이디칩스란 회사 입장에서는 EISC가 많이 팔리면 좋은 것이지만, 저의 입장에서는 바닥 자체가 넓어지면 좋은 거라서요..^^; )
[babyworm, 2009/04/13 19:13, 개인적인]
1. 그전에도 보안 카메라 쪽에서 나름 인지도가 있는 S 계열사의 Winner3, Winner4 시리즈에 EISC가 채택되었었는데, 이번에는 S사의 보안 카메라 부분의 A1이라는 칩에 채택되어 양산되었습니다. (http://www.dt.co.kr/contents.html?artic ··· 32718001) 이 제품들에 대한 라이센스가 몇 년전의 일인데, 이제야 성과물이 나오는군요. EISC 프로세서의 경우 그 동안 이것 이외에도 이쪽 저쪽에 라이센스가 좀 있는데, 작년부터 미미하지만 로열티 수입이 발생하기 시작한다는 점, 그보다 타사에서 상용화에 성공한 제품이 하나둘씩 나오고 있다는 점이 좋은 현상인 듯 합니다. 프로세서라는 것이 시장에서 받아들여지는데 참 오래걸리는 놈이라는 걸 다시 한번 깨닿고 있습니다. 2. COOLCHIPS를 보기 위하여 내일 출국합니다. Poster 섹션에 많은 한국분들이 있으시더군요. 기회되면 즐거운 시간을 :) 한가지.. 밤에 집에 가면 졸려도 참고 있다가 후다닥 달려와서 안기는 14개월된 우리 딸래미가 마음에 걸립니다.
[babyworm, 2009/04/08 13:27, SoC 설계 관련/관련 새소식]
제가 즐겨보는 microprocessor report가 이번에 행사(?)를 하는군요. 신규 가입만 가능하다니 ㅠㅠ; (기존 가입자를 위한 deal도 만들어라~)
저희 회사는 2년 짜리를 구매해 둔 상태라 관계 없는 상태입니다만, microprocessor report를 구매하시고자 하는 분들께는 좋은 소식이겠네요. 4월 30일까지구요. Processor watch라는 e-mail news letter에 가입자 대상인데, 이 뉴스 레터가 무료기 때문에 원래 가격(1년에 $895)보다 $200불 싸게 보실 수 있겠네요. (흠.. 환률 생각하면 흠.. 그래도 예전에 신청한 것이 유리한 것일 수도 있겠네요. ) 개인적으로 보는 건 힘들겠고, 도서 구입비가 남아있는 관련 기관/랩에서는 관심가져 볼만 하겠습니다. :) ---- Dear Colleague: During this time of economic strife, I would like to extend a special offer to all of our Processor Watch subscribers. From now until April 30, 2009, you will receive a $200 off of a one-year web-only subscription to Microprocessor Report by simply contacting me at 480-483-4441 or at epotter@reedbusiness.com. This offer is for new subscriber only. If you have questions, don’t hesitate to contact us. Best, Elaine Elaine Potter 480-483-4441 epotter@reedbusiness.com ----
[babyworm, 2008/12/06 16:31, SoC 설계 관련/마이크로 프로세서 이야기]
저희 팀에서 이번에 새로 만든 EISC processor인 Empress에 대한 기사가 많이 나오고 있습니다. 단신을 제외하고도 꽤 많이 나왔군요.
일단 정말 승질 머리 디러운 팀장의 강력한 태클과 갈굼을 이겨내고 좋은 결과를 거둔 팀원들에게 최고의 찬사를 보내고 싶습니다. 짝짝짝~! (제가 그 팀을 알아서 하는 이야긴데, 제가 그 팀장 밑에 있었으면 아마 회사 때려쳤을 겁니다. ㅋㅋㅋ) 여하튼, 새로운 프로세서에 많은 관심이 보여지고 있다는 점에서 상당히 기쁘긴 하지만, 대부분의 기사가 속도에 방점을 찍는 관점에서 많이 기술되어 있다는 점은 약간 아쉬운 점이지요. 사실 속도를 높이는데 여러 가지 요인이 있겠지만, 마이크로 아키텍쳐적인 접근을 제외한다면, 가장 중요한 것이 좋은 공정 + 좋은 cell library + 좋은 macro block을 사용하는 것이 중요합니다. 근데, 저희는 그다지 큰 회사가 아닌 관계로 좋은 공정은 물론이요 좋은 cell library(고속 cell library는 따로 비용 청구가 되지요)나 좋은 macro(특히 cache tag에 사용되는 CAM이 아닌 일반 High density single port SRAM을 사용하게 되면 속도차이가 심하죠..)를 사용하는 것이 비용의 문제로 쉽지 않다고 인식하고 있습니다. 따라서, 속도는 마이크로 아키텍쳐에서 할 수 있는 수준까지만 잡아놓자는 것이 저의 일관된 접근 방법입니다. 이번 Empress 프로세서는 단순한 MHz 단위의 클럭 속도보다는 면적이나 전력 소모를 줄이고, 클럭당 명령어 수를 높일 수 있는 방법, 그리고 자바 언어 가속 기술에 무게를 두고 만든 버전입니다. 그래서, 적은 면적(대략 동급 ARM의 절반 크기)에서 좀더 정교한 분기 예측기와 loop 처리 기법, out-of-order completion 방법, non-blocking cache등의 주요 기술을 저희 프로세서를 위하여 개발하는데 공을 많이 들였습니다. 물론 부족한 부분이 아직 많아서 좀 더 노력해야 할 부분이 많지요. 보도 자료 상에서도 위의 이야기가 많이 있었는데, 실제적으로는 거의 다루어지지 않아서 좀 아쉽습니다. (기자 분들께서 비 전문가를 위해서 가장 이해하기 쉬운 부분을 발췌하신다는 것은 알고 있습니다만..) 앞으로도 저희 프로세서는 특별한 일이 없는 이상(예를 들어, 가끔 정말 모르시는 분께서 '어찌되어도 좋으니 xxxMHz를 맞추어야 한다'라고 외압을 넣으신다던지..) 단순히 클럭 끌어올리기는 없으며, 1) 명령어 수준의 병렬성과 쓰레드 수준의 병렬성을 찾아가는 방향과 2) 자바와 같이 intermediate language를 이용하는 환경을 가속하는 방향으로 발전할 예정입니다. 특히 2009년, 자바 언어와 2D 벡터 그래픽은 embedded 분야에서 매우 중요한 명제가 될 것으로 예측하고 있습니다. 그래서, 저희 팀에서는 프로세서의 자바 가속뿐 아니라 2D 벡터 그래픽 분야도 같이 병행하고 있지요. 2009년 요맘때쯤 또 한번 재미있는 소식을 전해 드릴 수 있기를 바라고 있습니다. ^^; 내년 상반기 중에는 사내에서 사용하고 있는 linux수준의 OS 구동이 가능한 시스템 수준의 시뮬레이터인 ESCAsim(EISC System Cycle Accurate Simulator)의 소스 코드를 좀 정리해서 Open Source로 배포하는 것도 계획 중이며, IDEC과의 작업도 성공적으로 진행 중에 있고, EISC 개발 지원을 위한 Community site도 준비 중에 있습니다. 사람도 없는데, 참.. 벌이는 일은 많고 해서 걱정이긴 합니다. 어려울 때 한발자국 더 뛰는 사람이 내일을 기약할 수 있을 것이라 믿고, 힘들지만 몸땡이를 더 굴려보렵니다.
[babyworm, 2008/10/22 17:28, 개인적인]
요즘 MPSoC쪽 버스 문제 때문에 GALS(Globally asynchronous Locally synchronous)를 다시 들여다보고 있는데, circuit design을 배제하고 verilog netlist 수준에서 기존의 합성 툴을 이용할 수 있도록 생각하다 보니 자꾸만 생각이 제한됩니다. 조막만한 아이디어가 있긴 한데, 이게 구현 가능한 것인지 생각해 보는 것 자체가 고역인걸 보니 그간 머리를 안 돌리긴 안 돌렸나봐요. 요즘 회사에서 superscalar microprocessor/SMT 쪽 강좌(?) 세미나(?) 뭐 이런걸 진행하고 있습니다. 컴퓨터 아키텍쳐란 과목에만 한정되는 이야기는 아닙니다만, 이런 종류의 과목이 비교적 편한 과목이지요. (동의하지 않을 분들도 많을 것이지만. ^^;) Android의 Dalvik VM[참고자료]이 공개되었습니다. (원래 되어 있던 건가요? 소스공개는 오늘 되었다네요.. 여하튼). 특징적인건 이 VM에서 사용하는 bytecode가 java와는 동떨어진 형태네요. register 기반의 bytecode니까 말이죠. 아주 좋아요. ^^; 단, 호환성 문제는 어쩔라고 그러는지(살펴보니 .class는 .dex로 바꿔야 한다네요.).. JavaME에서의 Sun license를 피하기 위한 방법이라는데, register 기반이기 때문에 전반적인 성능은 java보다 좋을 확률이 좀 있군요. SIMD/Vector machine에 관심이 없던 건 아닌데, 좀 의외에 상황에서 건드려야 하는 상황이 발생했습니다. 인력의 문제로 사실 할까 말까를 한 2달 동안 고민했는데, 그냥 고민하고 앉아있는 시간이면 요상한 형태의 SIMD machine은 벌써 하나 만들었겠다라는 생각이 들었어요. 이것 저것 처한 상황 때문에 빠르게 진행될 가능성은 없지만, 간단하게 하나 만들어 봐야겠습니다. 대충 틀만 잡고 누구한테 떠넘겨 버릴지도. ㅋㅋ 회사차원에서 open source진영에 대한 지원을 고려하여, EISC 프로세서 관련 사이트 하나를 개설할까 개인적으로 생각중입니다. EISC processor/system시뮬레이터는 그냥 open source로 공개할 생각이고요. 예전에 작업된 이런 저런 시뮬레이터나 환경, 벤치마크 등도 같이 open해 버릴까.. 하는 생각입니다. 감추어두고 죽느니, 열어두고 살리는 것이 좋겠지요. IDEC과 공동으로 작업하는 MPW 지원 프로그램도 거의 정식 release 직전이고.. 이런 저런 "잡일"로 바쁘네요.
[babyworm, 2007/10/05 13:32, SoC 설계 관련/마이크로 프로세서 이야기]
ARM에서 Cortex-A9을 발표하였다고 합니다 [ZDNet 기사]. 일단 저에게 있어서는 한숨 쉬어지는 일이고(ARM의 행보가 점차 빨라지니, 저희같은 업체가 따라잡을 수 있는 여지가 줄어들고 있는 것이 사실이니 말입니다.), 업계에 있어서는 환영할 만한 일이겠습니다. Cortex-A9의 경우 4개 까지 MP로 구성이 가능하다고 하니(MP 구성을 따지는 것으로 보아, cache snooping이 고려된 SMP겠지요..), 대단한 성능을 기대할 수 있겠습니다. 여기서 재미있는 것이 Intel의 대응인데요. 기존에 ARM 기반의 프로세서를 만들다가 해당 부분을 과감히 정리하였지요. 근데, EETimes에 의하면 Intel이 ARC의 프로세서를 라이센스했다고 합니다[EETimes 기사]. ARM 기반을 정리할 때는 x86기반의 embedded processor쪽으로 무게를 둔다고 생각했는데, 범용쪽은 x86기반, 저전력이 요구되는 application specific한 부분은 configurable processor인 ARC쪽에 무게를 두는 느낌입니다. 그래도, x86기반에서도 충분히 configurable하게 만드는데 어려움이 없을 것인데.. 저전력을 위해서 이런 결정을 내린 것이 아닌가 하는 생각입니다. 이러한 행보에 맞추어 저희 회사에서는 Heterogeneous MPSoC쪽에 무게를 두고, 여기에 적합한 lightweight/low power processor와 interconnection에 무게를 두고 있습니다[네이버]. 몇 가지 재미있는 아키텍처적인 시도를 구상하고 있는데, 보도 자료에는 좀 이상하게 나간 느낌이 있습니다. 물론, 마케팅적인 측면을 위해서 빠른 프로세서를 만들어야 겠다는 생각은 변함이 없습니다만.. 실제로 MPSoC에서 중요한 것은 적절한 성능의 작은 footprint를 지닌 low power 프로세서들이니까요. (적절한 성능이란 것이 task에 따라 바뀌는 것이므로, 아주 강력한 프로세서를 개발해야 할 필요성도 있는 것이지요) 뭔가 흥미 진진해질 것 같아요.
[babyworm, 2007/09/13 21:13, SoC 설계 관련/마이크로 프로세서 이야기]
ISSCC'07에서 Intel에서 80개의 core를 집적한 Tera-FLOPS급 프로세서를 발표했었지요. 이번 HOT Chips 19에서는 Tilera라는 회사에서 TILE64 프로세서를 발표한 것이 화제가 되었습니다. 약간 비스므리한 과제를 기획하고 있어서 관심있게 몇 가지 프로젝트를 지켜보고 있었는데, TILE64는 사실 제가 알고 있던 프로세서는 아니었지요. 이는 NoC(Network-on-a-Chip)에 기반을 두고, 다수의 프로세서를 묶은 형태로 볼 수도 있겠는데요 (이런 프로세서가 처음은 아니지요. 기존의 intel의 network processor들이 이런 형태를 가져간 적이 있습니다). 사용하려는 application의 task parallelism이 상당한 경우에 유용한 형태라 볼 수 있습니다. [TILE64의 구조; 일본 MYCOM에서 Tilera의 것을 인용한 것을 재인용합니다.] 이렇게 다수의 프로세서를 집적하는 경우, processor 개개의 속도보다는 area와 전력 소모가 중요한 요소가 됩니다. 프로세서의 속도를 올리는 것 보다 프로세서의 수를 증가시켜 성능 향상을 도모하는 것이니까요. 사실, 성능 향상에는 clock frequency를 증가시키는 것이 더 유용할 수 있습니다.(예전에 speed-demon approach를 말씀드린 것 처럼) 어짜피 전력 소모는 동작 주파수에 비례하니, 전력소모가 급증하지도 않을 테구요. 클럭 주파수를 2배 올려서 얻는 전력의 불이익보다, 코어 2개를 써서 얻는 전력의 불이익이 클 수도 있겠지요? 클럭 주파수를 2배로 올리면 performance가 2배가 되는데, 코어 2개를 쓰더라도 parallelism이 없으면 소용 없으니 말입니다. 그럼에도 왜 클럭 주파수를 높이지 않고 multicore를 사용할까요? 우선, 클럭 주파수를 높이는 것이 그렇게 녹녹하지 않다는 것이지요. 클럭 주파수를 높이기 위하여 합성을 심각하게 하면 area는 exponetial로 증가하며, 클럭 주파수를 높이기 위해서 미세 공정을 적용하면서 leakage current가 심각한 문제로 나타나고, 클럭 주파수를 높이기 위해서 dynamic gate를 쓰다보니 clock frequency 조절에 문제가 생기고, 클럭 주파수를 높이기 위해서 pipeline을 깊게 만들다보니 명령어 처리 효율(insturction per cycle:IPC)이 떨어지고, 이를 회복하려다보니 복잡한 dynamic branch prediction을 적용시켜야 하고.. 등등등.. 클럭 주파수를 높이기 위해서 얻는 이득보다, 잃는 것이 많아지고 있는 것이지요. 즉, (parallelis이 어느 정도 존재한다면) 느린 코어를 여러개 쓰는 것이 유리한 시점까지 와버린 거라고 볼 수 있습니다. 문제는.. task 수준의 parallelism을 얻을 수 있는 application이 (현재로서는) 통신과 미디어 처리 부분이라는 것입니다. 이 문제의 극복은 쉽지 않아보이긴 합니다 ^^;
[babyworm, 2007/09/11 09:10, SoC 설계 관련/마이크로 프로세서 이야기]
프로세서 하는 사람으로 할 소리는 아닌듯 하지만, 사용자 입장에선 dual core 2개를 MCP하던, true quad core나 밥 적게 먹고, 일 잘하는 프로세서가 좋은 프로세서입니다. 예전에 포스팅에서 적은 적도 있지만, Intel의 전략은 일견 영악한 구석이 없잖아 있는 것이 사실이지만 사용자의 입장에서 그런 걸 따질 필요도 없으니, AMD가 굳이 "우린 true quad"라고 이야기할 필요도 없습니다. 단지, true quad의 장점을 보이면 되는 것이겠지요. 여기서는 잠깐 Quad core가 2x2보다 좋을 것 같은 부분을 짚어 보면,
장점만 있는건 아니니, 단점은
같은 코어를 집적한다면 2x2보다 quad가 좋을 것이라고(가격은 둘째 치고) 말씀드릴 수 있겠습니다만, 현재로서는 뭐라 말할 수 없는 것이 intel과 AMD의 microarchitecture가 다르니 좀 애매한 부분이 있습니다. 물론, 발표된 barcelona자료에서는 몇 가지 장점(특히 대역폭에서)이 보이지만, 이것이 실제 performance로 연결될지는 좀 의문입니다. core당 1MB내지는 2MB의 L2 cache를 내장하고 나면, L2 이후의 traffic은 많이 줄어들지 않을까 생각도 됩니다. 결론은 시장 출시후에 나오겠지요
[babyworm, 2007/07/15 21:37, 개인적인]
용인으로 이사왔습니다.
이사 뒷치닥거리로 바쁘기도 하거니와 결정적으로 인터넷이 연결되지 못한 열약한 환경이어서 글을 올리지 못했습니다. L모사 선후배를 통하여 언제나 권유받는 P 광랜을 연결했습니다. 인사고과에 반영된다는 말에 도저히 다른 것을 선택할 수 없더군요. 쩝.. 아무리 전쟁이라지만, 아군의 사기를 이렇게 꺾으면서까지 사업을 해야 하는지 의문이기는 합니다. 뭐, 덕분에 폭발적인 가입자 증가지만요. 최종적으로 시장에서 승리하려면 어느 정도 가입자 규모가 유지되어야 하는 사업이니 어쩔 수 없을 것이라는 생각이기는 합니다만.. 그러고보니, 시장에서 어느정도 점유율을 가져야지만 성공 확률이 높아지기는 CPU라는 것도 마찬가지군요.. 그렇다고 사원들에게 할당을 할 수도 없는 제품이니 고민이기는 합니다만.. ^^; 점점 빠른 행보를 보이는 ARM이나 MIPS에 대하여, 저희가 공략 할 수 있는 nitch market, 혹은 블루 오션을 찾아내는 것이 급선무겠지요.. 지난번에 아주 좋은 기회가 왔다가 손앞에서 사라진 것이 아깝기만 합니다. 일단은 EE에 중점을 두고 있습니다. 아시는 분은 아시겠지요.. EE :)
[babyworm, 2007/07/05 21:26, SoC 설계 관련/마이크로 프로세서 이야기]
착찹한 마음에 적은 글에 많은 분들이 격려해 주셔서 진심으로 감사드립니다. 착찹한 마음을 걷어내고 다시 나아기기 시작했습니다. 몇 번 적었듯이 쉽지 않은 길을 가는 것을 지지해 주고, 지원해 주는 회사에도 감사드리고 있습니다. 저희 프로세서에 부족했던 부분을 채울 수 있었던 좋은 기회였으므로, 너무나도 아쉽지만 EISC는 쉬운 길을 갈 운명은 아닌가 봅니다 ^^;
[babyworm, 2007/07/02 22:56, 개인적인]
음.. 원래 잉걸에는 손을 대지 않는 것이 정답이긴 한데.. 답답하긴 답답하네요.
몇번 쓴적이 있습니다만.. 개인적으로 프로세서를 만들어 봐야겠다는 생각에 이 일에 전념해 온지도 상당한 시간이 흘렀고, 어느 정도 가시적인 성과를 거둔 것도 있습니다. 아직은 마케팅력에 문제와 ARM의 거대함을 절감하고 있는 중이라는 것이 정답이겠지만.. 작은 회사에서 프로세서라는 하기 힘든 아이템을 가지고, 이만큼 버텨내면서 여기까지 온것이 자체도 대단하다고 생각하지요. 근데, 오늘 같은 일이 벌어지면, 제가 왜 프로세서를 했는지 참 의아합니다. 대중에게 잘 회자되지 않을 만한 무언가를 했다면 이슈화도 덜 되었을 것이고, 덜 힘들었을 것인데 말입니다. 예전에 회사에 좋지 않을 일이 있었을 때, 가장 먼저 나온 이야기가 "기술이 허깨비다"라는 말이지요. 그럼 제가 만든건 허깨비란 이야기지요 ^^; 뭐랄까요.. 많은 분들이 돈앞에서 이런 저런 이야기를 하는데, 그런 이야기를 보고 당시에 많은 엔지니어들이 회사를 떠났습니다. 자존심하나로 버티는 사람들이니까요. 이번에도 뭐 이런 저런 이야기 많습니다. 역시 또 나오는 이야기들 중의 하나가 "기술이 허깨비다"라는 이야기인데요.. 그 동안의 노력이 많은 분들의 말에 폄하되는 것이 참을 수 없군요. 여러 전문 위원들의 기술 평가 결과는 욕심 앞에서는 그냥 하나의 "글"일 뿐이고, 단지 뭔가 이유를 찾으려 하는 건 알고 있지만... 엔지니어로서 잘못이 있다면, ARM에 비하여 압도적인 performance를 내는 프로세서를 아직까지 만들지 못한 것이 잘못이겠지요. 이런 저런 말이 뭐가 필요하겠습니까.. ^^; 엔지니어는 기술로 자신을 나타내는 것이겠지요. Market 고려하지 않고 회사와 싸워서라도 제대로 하나 만들어야만 직성이 풀리겠습니다. 내년 9월 쯤을 기대해 주세요
[babyworm, 2007/06/23 13:28, SoC 설계 관련/마이크로 프로세서 이야기]
쓰고보니 상당히 거창한 제목입니다.
요즘 프로세서 로드맵 작성중이라는 말씀을 드렸는데, 회사에 중대한 일이 생겨서 전면적으로 홀드 상태입니다. 가용 자원이나 target이 약간 수정되어야 하니 말입니다. 그래도, 마이크로 프로세서가 나아가야 할 방향성은 크게 달라지지 않겠지요. 단지, 현재 상황에서는 targeting하기 어려울 것이라 생각했던 목표를 추가적으로 설정할 수 있게 되었다는 것이 중요하겠지요. Energy Efficient현재 microprocessor 개발에 있어서 (EISC나 ARM같은 embedded microprocessor에 한정하지 않더라도) 가장 중요한 목표가 무엇이겠습니까?아마도 energy-efficient 가 아닐까 생각합니다. 생각보다 많은 분들이 저전력 (low power)프로세서와 에너지 효율이 높은(energy-efficient) 프로세서를 혼용하여 사용하시는데, 사실은 약간 차이가 있습니다. 아시다시피 전력은 소모되는 에너지를 단위 시간으로 나눈 것이지요. 에너지는 일량. 즉 어떤 일을 끝내는데 필요한 힘이라 보시면 되겠습니다. Low Power와 energy-efficient가 어떻게 다른지 한번 간단한 예를 들어 봅시다. A라는 프로세서는 123.exe라는 프로그램을 한번 처리하는데 10초가 걸리며 100mw의 전력을 소모하는 반면, B라는 프로세서는 123.exe라는 프로그램을 한번 처리하는데 2초가 걸리며 200mw의 전력을 소모한다고 생각해 보죠. 어떤 프로세서가 energy-efficient하겠습니까? 당연히 B 프로세서입니다. 전력소모에 있어서는 A라는 프로세서가 더 저전력이지만 말입니다. Energy 단위의 중요성은 "동일한 일"을 수행하는데 얼마나 적은 에너지를 소모하는냐를 따지는 척도이기 때문에, 단순히 단위 시간당 얼마나 적은 "전력"을 소모하느냐와는 약간 다르다고 생각하시면 됩니다. 다른 관점에서 전력은 power supply가 얼마나 전력을 공급해 줄 수 있느냐와 발열에 영향을 미칩니다. 그래서 desktop/server에서는 평균적인 전력 소모가 얼마나 되는지가 중요합니다. 이에 반하여 Energy는 동일 용량 battery로 얼마나 버틸 수 있느냐를 결정할 때 매우 중요한 요소입니다. 단, 아무리 energy efficient하더라도 전력 소모가 크다면 (예를 들어 C라는 프로세서가 123.exe를 처리하는데 0.0001초가 걸리고 30W가 소모된다고 예를 듭시다), battery를 사용하는 시장 자체에 진입이 불가능할 수도 있습니다. 그런 관점에서는 low power와 energy-efficient가 밀접한 관계가 있는 것이겠지요. 요즘에 low-power보다 energy-efficient가 중요시되는 중요한 이유중의 하나는 dynamic power management 기법의 적극적인 활용입니다. Dynamic power management 기법은 "사용하지 않을때는 해당 유닛에 공급되는 전력을 최소화 한다"라고 생각하시면 되는데, 저전력을 위하여 느릿 느릿 오랫동안 일을 지속하는 것 보다, 빠른 시간에 작업을 끝내고 전력 소모를 더이상 하지 않는 것이 좋다는 것이겠지요. 여담입니다만, Dynamic power consumption 기법이 활성화되지 않았다면, 사실 energy-efficient와 low power는 동일한 언어로 표현되지 않았을까.. 라는 생각도 해봅니다. 또 다른 관점에서... Enenry-Efficient는 Hardware만의 문제가 아니라 Software도 같이 노력해야 하는 문제입니다. (물론, 저전력도 그렇습니다만) Energy란 "어떤 일"을 수행하는데 소모되는 시간이기 때문에, "어떤 일"을 빠르게 수행할 수 있도록 더 효율적인 코드를 만드는 책임이 소프트웨어에게 있는 것이지요. 프로그래머의 관점에서 프로세서를 사용하는 프로그래머에게는 약간 다른 관점이 있는데, 프로그래밍이 쉬워야 한다는 측면입니다. 프로세서 아키텍쳐는 벌써 dual core, quad core로 발전하고 있으며, GPU들도 programmable shader를 가지고 있으므로, 아키텍쳐적인 형태로 보았을 때는 heterogeneous multiprocessor의 형태를 이미 취하고 있다고 보셔도 됩니다. 문제는 프로그래머들은 아직 multiprocessor를 사용할 준비가 되어 있지 않다는 것입니다. Multiprocessor를 지원하는 OS와 compiler, library의 등장으로 물론 점점 multiprocessor를 효과적으로 사용해 나가는 상황이 되어가고 있는 것은 맞습니다만, 아직 프로그래머들이 multiprocessor가 제공하는 기능을 충분히 활용하고 있는 상태는 아닙니다. 점차 나아지겠습니다만, 프로그래머의 역량 강화가 매우 시급한 상황입니다.
[babyworm, 2007/04/11 22:31, SoC 설계 관련/마이크로 프로세서 이야기]
이 글은 MPR의 "gHOST in the machine"이라는 3주간의 연재 기사를 읽고 이를 토대로 "제 기억 남은 내용과 그 간의 어설픈 지식을 버무려" 쓴 글입니다. 관심 있으신 분은 microprocessor report를 보시는 것이 더 좋은 글을 읽으실 수 있습니다. 요즘 마이크로 프로세서에서는 "가상화(virtualization)"라는 기술이 각광받고 있습니다. Intel도 AMD도 서로 앞을 다투어 "가상화" 가속 명령어라는 것을 대대적으로 홍보하고 있지요. 그럼.. 가상화 기술이 대관절 무엇이관대 이렇게도 세상을 시끄럽게 하는지 알아보도록 하겠습니다. 우선, 생각해볼 문제가 가상화란 것이 무엇인가 하는 점입니다. 가상화란 "A"라는 머신에 "B"라는 virtual machine을 구동시키는 것을 의미합니다. 근데, embedded 분야에 종사하시는 분은 상당히 익숙하실만한 Intel CPU상에서 ARM이나 MIPS cpu simulator가 구동되는것도 엄연히 virtual machine이 구동되는 것입니다. (사실 마음 같아서는 제가 만든 EISC processor simulator인 ESCAsim도 끼워 넣고 싶지만.. ^^; 사용해 보셨을 분이 극히 제한적이라.. 그래도 나름대로 uCLinux까지도 구동 가능한 simulator랍니다.). 또한, 일반적인 사용자분들께서도 JVM(Java Virtual Machine)에 익숙하실 것입니다. 즉, 가상화란 "특별한 기술"이 아니라는 거죠. 다른 프로세서의 "동작"을 모사하는 것은 범용 마이크로 프로세서에게 있어서는 큰 문제가 아니라는 것이죠. 제가 가상화 가속 기술들이 속속 소개 될때 가장 궁금했던 내용이 "왜 가상화 가속이 필요한가" 였습니다. 일반적으로 모든 프로세서에서 큰 어려움 없이 되는 것에 대한 가속이라.. 근데, 문제는 다른 것이더군요. 그리고, 이 문제가 multithread/multicore processor를 이끄는 힘 중에 하나가 됩니다. 흥미 진진하죠? 시간은 거슬러 소프트웨어 업계의 가장 변태적인(저는 가끔 천재적인 = 변태적인으로 인식하게 되더군요..) 소프트웨중의 하나인 "VMWare"가 나타납니다. VMWare는 Virtual machine인데, 해당 프로세서뿐 아니라 해당 시스템에 있는 모든 시스템을 가상화시킨 하나의 독립적인 "시스템"으로서의 가치가 있습니다. 이 각각의 독립적인 가상 시스템에서 서버를 운용한다면 어떻게 될까요? 하나의 머신에서 A,B,C라는 세 개의 서버가 운용되고, A라는 머신에 문제가 발생해도 B, C라는 머신은 문제 없이 수행되겠지요? 즉, 안정성의 문제가 향상되고.. OS 하나가 만들어 낼 수 있는 thread보다 OS 세 개가 만들어내는 thread가 당연히 많고 parallelism도 높겠지요. 즉, multiprocessing/multithreading에 유리한 환경이 됩니다. 이 부분이 가상화 기술이 multicore/multithreading의 기치를 높이 들고 있는 현재의 microprocessor에게 있어서 병렬성의 문제를 확보할 수 있는 아주 좋은 수단으로 여겨지게 되는 것입니다. 그런데, 문제는 각 가상 시스템이 host OS의 application이라는 점입니다. 즉, host OS에 문제가 발생하면 전체 가상 시스템에 문제가 발생한다는 문제점이 있는거죠. 이 문제는 아주 치명적입니다. 여러 개의 가상 시스템이 한번에 모두 죽어버릴 수 있는 여지가 있는 것이니까요. 이 문제를 해결하고자 하는 방법이 기존의 user/supervisor 모델에 hypervisor라는 권한(혹은 권한 수준)을 추가하는 것입니다. 즉, 예전에는 O/S가 모든 하드웨어나 서비스에 접근했는데, 이중에 민감한 부분은 hypervisor(혹은 virtual machine manager)라는 firmware가 서비스를 담당하고, 그 위에서 각 OS(실은 VM이겠죠?)들이 도는 구조로 바뀌는 거죠. 예전에 application이 OS에 종속되고, OS가 다시 hyperviosr에 종속되면서 점점 하드웨어에 직접 접근해서 시스템 전체를 불안하게 만드는 것이 허용되지 않게 되는 것입니다. 가상화 "가속" 기술이란 말하자면, 이런 hypervisor를 추가하여 운용할 수 있도록 하는 명령을 추가하는 것으로 보시면 되겠습니다. Microprocessor report상에서는 각 프로세서간의 차이점등 아주 재미있는 내용이 많으니, 관심있으신 분은 꼭 보세요 :) (이 부분도 포스팅 하고 싶습니다만, 좀 내용이 너무 전문적일지도 모른다는 생각에.. 혹시라도 요청이 있다면 고려하겠습니다)
[babyworm, 2007/02/03 21:58, SoC 설계 관련/관련 새소식]
ZDnet의 기사를 보니 메탈 게이트를 사용하는 트렌지스터가 상용화된다는 이야기가 써 있군요. 이 이야기는 하드웨어 리뷰 사이트들을 통해서 개략적으로 접하고 있었는데, ZDnet의 기사를 통해서 좀더 자세히 알게 되었습니다. (이번 MPR에도 잘 나와 있습니다만, 한글로 읽는 것이 더 편해서 ^^;) 사실 저는 반도체 물성과 같은 부분은 전공이 아니라 잘 모릅니다. 학부와 대학원때 과목을 들은 정도지요.. ^^ 간략하게나마 뭐가 어떻게 돌아가는 건지 설명드리자면, 우선 간단히 CMOS에 대해서 설명드리고 시작하는 것이 편할 것 같습니다. 근데, CMOS transitor에는 문턱전압(Vth)이란 것이 있죠. Gate에서 어느 정도 전압이 가해져야 "문턱을 넘어서" 전류가 흐를 수 있는 것이냐는 것인데요.. 가끔 Gate에 전압이 가해지지 않더라도 문턱을 넘어가는 날랜 전자가 있습니다. 이런 넘들에 의해서 게이트의 상태에 변화가 없더라도 흐르는 전류가 바로 "leakage current"라고 보시면 됩니다. 말 그대로 줄줄 세는 거죠.. 이런 원리로 빠른 공정 = 낮은 문턱 전압 = 많은 leakage current로 연결됩니다. (뭐, 설명은 아주 대충했지만 말입니다.) 그래서, High-K라는 것이 나온 건데요.. K라는 것이 유전율(전자가 얼마나 빨리 흐를 수 있느냐)인데요.. K가 높아지면 문턱을 높인 다음에, 문턱을 약간만 내려도 그 좁은 길로 전자가 빨리 빨리 흘러갈 수 있다는 거죠. 좁은 대신 전자의 흐름 자체를 좋게 만들었으니까요.. (역시 쉽게 말하느라고 아주 정확한 표현은 아닙니다만..) 45nm에서 인텔에서는 그동안 사용하였던 poly silicon(지금까지 대부분의 공정은 silicon substrate위에 poly silicon으로 gate 얹어서 사용해 왔습니다. 이때 NMOS냐 PMOS냐에 따라서 N+/P+를 선택하는 거죠)대신에 NMOS나 PMOS에 맞는 Metal gate를 구성했다는 거죠. 아주 대단한 일입니다. 이로 인해서 속도는 유지하면서 leakage current는 잡을 수 있을테니 말입니다. 그리고, 또하나.. 이론대로라면 대부분의 전통적인 공정이 변경될 필요가 없을 것 같습니다. 단지 poly silicon대신 metal(물론 그렇게 쉽게 바뀔 부분은 아니지만 말입니다. ^^;)로 변경되는 정도니까요. 기사에서처럼 당연히 metal의 혼합비는 극비겠죠.. 뭘 물어보고.. IBM에서도 high-K를 채택한다고 하던데.. (이것도 어디 기사에서 봤는데 말이죠..), AMD와 IBM이 비교적 가까우니..이쪽 진영에서도 금방 바뀌지 않을까 생각합니다. Moore 선생님.. 기쁘시겠어요.. ^^;
[babyworm, 2006/12/25 20:40, SoC 설계 관련/마이크로 프로세서 이야기]
들어가기전에: 이 포스팅은 MPR 12월 11일자 내용을 읽고나서 감상 비슷하게 적은 것입니다. 1971년 11월 15일에 최초의 상용 마이크로 프로세서인 intel 4004가 발표되었으니, 올해로 마이크로 프로세서가 발표된지 35주년입니다. 마이크로프로세서 아키텍트를 하고 있는 사람에게는 어느정도 의미가 있는 해라 할 수 있겠지요. (4004를 최초의 마이크로 프로세서로 보는 것은 최초의 상용화된 one-chip standard part microprocessor라는 의미로 해석할 수 있습니다. ) 2250 transistor(equ gate로 약 500게이트쯤..), 740KHz 동작 속도, 10um PMOS 공정에서 제작된 4004에 비하여 지금의 마이크로 프로세서는 충실히 인텔 설립자인 무어의 법칙을 따라 성장해왔으니 격세 지감입니다. (사실, 무어의 법칙이란게 자연 법칙이 아닌 CEO가 세운 사업 목표 같은거라.. 그 밑에 있는 엔지니어들의 노력을 바탕에 두고 있는 것이지요. 요즘 NAND flash에서 적용되는 황의 법칙도 마찬가지입니다. 삼성 엔지니어들의 고생은 너무도 많이 듣고 있습니다. ) 4004 마이크로 프로세서의 설계를 통해서 메모리 반도체를 만들던 인텔은 일약 비메모리 반도체의 최전선에 서는 프로세서를 만드는 회사로서 성공적인 변신을 하게 되었구요. 4비트 ALU와 데이터 패스, 12비트 주소, 8비트/16비트 명령어 46개로 이루어진 4004는 요즘 학부 마이크로 프로세서 시간에 과제로 내 주기에도 너무 쉽다고 생각할 정도입니다. 집적회로 시간에 모든 회로를 그리도록 하는 과제라면 약간 재미있겠습니다만... 아직 진행형인 마이크로 프로세서의 진화에서 i4004를 회고해보는 것도 의미있는 일이군요. 여기에서 여러가지 재미있는 내용을 더 보실 수 있습니다.
|
||||||||||||||||||||||||||||||||||||||||||||










