• 북마크
  • 추가메뉴
어디로 앱에서 쉽고 간편하게!
애플 중고 거래 전문 플랫폼
오늘 하루 보지 않기
KMUG 케이머그

소프트웨어

[App 개발] Cell 아키텍쳐 (1)

본문

앞으로 몇 회에 걸쳐 Nicholas Blachford 사이트에 있는 Cell 아키텍쳐 설명 글을 번역해 올리도록 하겠습니다. 잡스가 Cell 을 보고 콧방귀를 뀌었다던데... 과연 왜 그랬는지 함 보죠. ^^

-------------------------------------------------------

셀 아키텍쳐

서론

Note: 셀 프로세서에 대한 최근 새로운 정보는 Updates & Clarifications 를 보십시오.

플스 3를 위해서 소니, 도시바, IBM 이 설계한 “셀 프로세서”는 외관상 가격에 비해 상당한 컴퓨팅 능력을 갖고 있는 것 같이 보입니다. 이 글에서는 셀 아키텍쳐의 기본적인 내용과 그 속에 숨은 깊은 의미를 게임기 측면보다 전체 컴퓨터 산업 측면에서 정말 이 칩이 피씨와 경쟁할 제품인지 살펴보고자 합니다.

STI (소니, 도시바, IBM) 연합이 지금까지 공개한 내용은 아주 모호한 편입니다만, 이 글의 내용은 시스템의 상세한 내용을 공개하고 있는 특허 출원서*를 기초한 것입니다. 불행히도 이 출원서는 읽고 이해하기 대단히 어려워서 기술자들조차도 이 내용이 교류되고 있지 않습니다.

저는 이 출원서를 해독하여 셀 프로세서와 이것을 실제 구동하는 “소프트웨어 셀” 에 대한 자세한 내용을 1장과 2장에 기술합니다.

지금 상태로는 어떤 성능 비교도 없으므로 제시하는 표들은 특허 출원서에 있는 내용, 혹은 4.6 GHz 칩의 내용을 인용한 것입니다. 따라서 모든 성능 비교는 가설의 최대치를 근거로 한 예측입니다.

셀은 벡터 프로세싱 아키텍쳐를 가지고 있고 이것은 사용에 약간의 제약이 있습니다. 출원서에서 소개하는 벡터 프로세싱이 가져다주는 많은 장점에 대한 내용은 3장에서 살펴보겠습니다.

셀 프로세서를 채용한 최초의 기계는 아마도 피씨의 성능을 능가하게 될 것이고, 계속 그 상황을 유지하게 될 지도 모릅니다만, 피씨 시장이란 항상 극심한 경쟁을 겪어왔고 항상 새 기술을 낡은 것으로 만들어 왔습니다. 4장에서는 왜 피씨가 셀을 이길 것이며 셀의 어떤 점이 패배의 요인이 될 지를 설명하겠습니다.

5장에서는 요약 정리하여 결론을 내리고 참고 문헌을 정리하겠습니다. 1장과 2장 내용을 읽고 싶지 않은 분들을 위해서 셀 아키텍쳐의 간략한 소개를 적었습니다.

* 이것은 마사카즈 스즈오키와 타케시 야마자키가 제출한 2002년 특허 출원서를 번역한 것입니다.


1장: 셀의 내부

1장과 2장에서는 셀 아키텍쳐에 대해 설명합니다. 1장은 셀 프로세서의 컴퓨팅 하드웨어에 대한 내용입니다.

셀을 자세히 분석하는 것은 그리 쉽지 않습니다. 셀에 대해서 처음 발표한 내용은 아주 모소했고 특허가 공개되기 전까지 그 내용은 알려지지 않았습니다. 많은 사람들이 별로 주의를 기울이지 않았고 단지 inquirer 가 이 내용을 소개했습니다.

불행히도 이 특허 서류는 마치 텍스트 모드 겐투를 실행한 로보트 변호사가 쓴 글 같이 어렵기 때문에 이것을 해독하듯 읽지 않으면 안됩니다. 서류에는 최종 시스템의 개요를 설명하지 않지만 몇 가지 다른 옵션이 있음을 기술하고 있습니다.

최근 발표된 새로운 셀 웍스테이션의 개요와 상세 설명으로 셀 기반 시스템이 어떤 모습을 갖게 될 것인지를 볼 수 있게 되었습니다.

특허 서류는 방대하고 복잡한 문서이지만 저는 시스템의 개요에 대해서 설명할 만큼 이해할 수 있게 되었습니다. 그러나 실제 셀 프로세서는 특허 서류에서 설명하지 않은 내용이나 변경된 사항이 있을 수도 있습니다.

배경

이 제품은 원래 플레이스테이션 3를 위한 기술로 선전되었지만, 셀은 훨씬 더 많은 용도로 설계되었습니다. 주요 전자기기 생산업체인 소니와 도시바는 다양한 전자부품을 구매하고 있으며, 셀을 개발하게 된 이유는 자신들의 전용 부품을 만듦으로써 비용을 절약하기 위한 목적이었습니다. 블루레이, 고화질 TV, HD 캠코더, 그리고 플스 3 같은 차세대 가전 기술에는 고성능 컴퓨팅 성능을 만족하는 칩이 요구되었습니다. 셀은 이러한 용도에 사용될 것이며, IBM 은 이 칩으로 서버를 구축하며 서드 파티 생산자에게 판매도 할 것입니다.

소니와 도시파는 플스 2 를 같이 제조하였고 이번에는 좀 더 강력한 성능의 설계가 필요했고 새로운 칩을 설계 제조할 수 있는 제 3 의 파트너의 협조가 필요했습니다. IBM 은 칩 디자인의 장점 뿐만 아니라, 반도체 제조 과정의 어려움을 해결할 수 있는 실리콘 공정의 선도 기업입니다. 반도체 제조업체가 제조공정상 어떤 문제에 부딪혔을 때 그 문제 해결 의뢰를 받는 기업이 IBM 입니다.

이번 프로젝트에 소요되는 금액은 어마어마합니다. 두 개의 65나노 칩 제조 공정이 개당 십억불에 건립되었으며 소니는 피쉬킬에 제조 라인을 설립하느라 수억을 IBM 에 지불했습니다. 그리고 실제 제조 공정에서 칩이 출하되기 전까지 수천만 불이 더 개발비로 지불되어야 합니다.

셀 아키텍쳐는 무엇인가

셀은 고성능 분산 컴퓨팅을 위한 아키텍쳐입니다. 셀은 하드웨어 셀과 소프트웨어 셀을 포함하는 것입니다. 소프트웨어 셀은 데이터와 프로그램(apulet)으로 구성되며, 이것을 하드웨어 셀로 전달하여 계산 결과를 돌려받습니다.

이 아키텍쳐는 한 가지 방식으로 고정된 것이 아닙니다. 만약 컴퓨터, 플스 3, HDTV 에 모두 셀 프로세서가 탑재된다면 이 기기들을 서로 한 데 묶을 수 있습니다. 업계에서는 이러한 방식에 대해서 예전부터 논의해 왔지만 실제로 셀은 그 일을 할 수 있도록 설계되었습니다. 텔레비젼에서 “Contact” 를 보면서 플스 3 에서는 5분마다 SETI@home 을 통해서 백그라운드 계산을 수행한다고 할 때, SETI 유닛의 계산이 어느 정도 속도로 수행되는지 아시면 엄청나게 놀라실 것입니다. 셀은 아주 빠릅니다.

여기서 더 나아가 셀은 소프트웨어를 네트웍을 통해서 전 세계로 퍼뜨릴 수 있습니다. 셀은 PDA 로부터 서버까지 통용될 수 있도록 설계되어 있어서 서로 다른 시스템을 모아서 고성능 셀 컴퓨터를 만들 수도 있습니다.

Cell_Distributed.gif

스케일링은 셀의 기능중 하나에 불과합니다. 개별 시스템은 그 자체만으로도 충분한 능력이 있습니다. 셀 시스템의 개별 계산 유닛을 Processing Element (PE) 라고 하며, 개별 PE 자체는 각각 250 GFlops 의 이론적인 계산 능력을 가진 강력한 프로세서입니다. 컴퓨팅 세계에서 제시되는 표들 (대역폭, 계산능력, 처리능력) 등은 이론적인 최대치이며 현실적으로는 거의 일어나지 않습니다. 셀은 이런 경우와 달라서 실제 최대 계산 능력에 가까운 힘을 발휘하게 될 것입니다.

상세 개요

개별 프로세싱 엘리먼트 (하드웨어 셀) 은 다음의 요소로 구성됩니다.

프로세싱 유닛 (PU) 1개
어태치드 프로세싱 유닛 (APU) 8개
DMA 컨트롤러
I/O 인터페이스

Cell_Arch.gif

전체 상세 개요는 아직 발표되지 않았지만 몇 가지 내용은 공개되었습니다.

4.6 GHz
1.3v
방열판을 부착한 상태로 섭씨 85도
6.4 Gb/sec off-chip communication
모든 내부 프로세싱 유닛은 고속 메모리와 I/O 시스템이 반드시 필요합니다. 소니와 도시바는 이를 위해서 램버스사로부터 “옐로스톤”, “레드우드” 기술을 라이센스하였습니다. 6.4 Gb/s I/O 는 램버스의 설계 중 일부입니다.

프로세싱 유닛 (PU)

살펴보신 대로 PU 는 64비트 “파워 아키텍쳐” 프로세서입니다. 파워 아키텍쳐는 파워피씨와 파워 프로세서에서 채용되어 온 IBM 의 기술입니다. 현재 이에 해당하는 프로세서는 3 종 (POWER 5, POWER 4, POWER 4 의 변종 PowerPC 970 (G5) ) 입니다.

IBM 의 보도자료에 따르면 셀 프로세서는 “멀티 쓰레드, 멀티 코어” 이지만 APU 는 멀티 쓰레드가 아닙니다. PU 는 아마도 POWER 5 코어를 베이스로 한 것 같습니다. IBM 은 현재 “next generation 970” 이라는 혼란스러운 이름을 가지고 이런 종류의 칩을 개발중이라고 확인하였습니다.

물론 IBM 이 위에서 설명한 것과는 전혀 다른 64비트 CPU 를 설계할??가능성도 있습니다. IBM 은 이런 종류의 일을 그 전에도 했던 적이 있으므로 전혀 불가능한 생각은 아닙니다. 440CPU 를 이용한 블루진 슈퍼 컴퓨터 프로세서의 이름은 440 이지만 임베디드 시스템에서 사용하는 칩과는 전혀 다른 제품입니다.

POWER 프로세서가 PU 에 채용된다면 그리 높은 클럭속도를 가지지는 않을 것입니다. 왜냐하면 POWER 코어는 전력을 많이 소모하므로 전력 소비를 줄이기 위해서 클럭 속도를 줄여야 할 것이기 때문입니다.

플스 3 에는 4 개의 셀이 채용될 것이라고 알려져 있으므로 시스템에는 모두 네 개의 POWER 5 베이스 코어가 탑재되는 꼴입니다. 게다가 PU 는 단지 컨트롤러에 불과할 뿐이고, 실제 동작은 APU 에서 이루어진다는 점은 매우 놀라운 것입니다.

Attached Processor Units (APU)

셀에는 8개의 APU 가 탑재됩니다. APU 는 각각 독립적인 벡터 프로세서를 탑재합니다. 128 x 128 비트 레지스터를 가지고 있으며 32GFlops 의 성능을 가진 네 개의 부동소숫점 유닛과 32 GOps 의 성능을 가진 네 개의 정수 유닛을 가집니다. APU 에는 캐시 대신 128 KB 의 로컬 메모리가 있어서 실제 동작에는 가상 메모리 시스템이 필요치 않습니다.

독립 프로세싱

APU 는 코프로세서가 아닙니다. 이들은 자체적인 권한을 가진 독립된 프로세서입니다. PU 는 소프트웨어 셀을 할당하여 작업을 수행하도록 합니다. APU 는 소프트웨어 셀의 apulet 을 종료할 때까지 혹은 작업 중단 지시가 있을때까지 계산을 수행합니다. PU 는 원격 프로시져 콜로 APU 를 설정합니다. 이것은 APU 를 직접 호출하는 것이 아니라 메모리 입출력을 수행하는 DMA 컨트롤러를 이용하여 호출됩니다.??

벡터 프로세싱

APU 는 벡터(SIMD) 프로세서이며, 한 번의 명령으로 여러 작업을 동시에 수행합니다. 벡터 컴퓨팅은 1970년대부터 슈퍼컴퓨터에 사용되었으며 최신 프로세서에는 동일한 개념을 가진 미디어 가속기 (SSE, AltiVec) 등이 탑재되어 있습니다. 각각의 APU 는 사이클당 4 x 32 비트 연산 (8 곱셈-덧셈) 능력이 있습니다. 이를 위해서 프로그램은 “벡터화” 되어야 하며, 비디오, 오디오, 3D 그래픽, 과학계산에서 이를 이용할 수 있습니다.

AltiVec과의 관계

벡터 유닛은 PowerPC G4 와??G5 에서도 찾아볼 수 있습니다만 몇 가지 차이점이 있습니다. 먼저 레지스터의 갯수가 AltiVec 은 32개이지만 APU 는 128 개이며, APU 는 로컬 메모리를 사용하며, AltiVec 은 기존의 PowerPC 명령어에 부가된 기능으로 PowerPC 의 일부분으로 동작되지만 APU 는 완전 독립된 프로세서입니다. 두 가지에는 비슷한 점이 많이 있지만 직접 호환성은 없을 것입니다. 그러나 이들간의 프로그램 개수는 어렵지 않을 것으로 보입니다.

Cell_APU.gif

APU 로컬 메모리

캐시 메모리와 가상 메모리 시스템이 없다는 것은 APU 가 기존 CPU 와는 다른 방법으로 동작된다는 뜻입니다. 프로그램을 작성하기는 더 어렵지만 복잡도를 줄이고 성능을 향상시킬 수 있는 방향으로 APU 는 설계되어 있습니다.

일반 캐시

일반 CPU 들은 레지스터에서 명령을 수행하여 메모리를 읽거나 씁니다. 메인 메모리에서 직접 작업하는 것은 상당히 느리기 때문에 캐시 (고속 메모리의 일종) 를 이용하여 메인 메모리 조작 속도의 문제를 해결합니다. 캐시는 현재 프로세서에서 작업중인 메모리의 일부분을 정합니다. 만약 1MB 메모리 공간에서 작업중이라면 캐시에는 그 중의 일부분만 반영될 것입니다. (대략 수백 바이트 정도) 캐시를 더 늘이거나 혹은 전체 데이터를 모두 읽어오는 캐시 설계방법도 있지만 가격이 비싸거나 속도가 더 느려질 수 있습니다.

작업중인 데이터가 캐시에 없으면 CPU 는 정지되고 필요한 데이터가 불러들여질 때까지 기다립니다. 이렇게 되면 프로세서는 약 수백 사이클 정지되는 셈입니다. 최신 서버 CPU들 (POWER나 이타늄같은 대용량 고속 캐시 제품)은 필요한 메모리를 기다리는데 대략 80% 의 시간을 소모하는 것으로 추산됩니다.

요즘 보편화되고 있는 듀얼 코어 CPU 는 캐시를 공유합니다. 만약 두 개의 코어나 다른 시스템 장치가 동일한 메모리 공간을 사용하려 할 때 캐시에 저장된 데이터는 쓸모없어지고 다시 새로 업데이트 되어야 합니다.

이런 모든 경우를 해결하기 위해서는 특별한 구조와 수행 시간이 필요하며 이러한 요소들이 기존 시스템이 메모리를 억세스하는 속도를 저하시킵니다. 시스템에 프로세서가 더 많이 탑재될 수록 이 문제들은 더 복잡하게 됩니다. 캐시는 기존 CPU 의 메모리 억세스 속도를 높여 주지만 이를 위해서 소모되는 시간도 발생합니다.

APU 의 로컬 메모리는 캐시가 아니다

캐시 디자인의 이런 복잡성을 해결하고 속도를 향상시키기 위하여 셀에서는 이 구조를 채택하지 않습니다. 그 대신 8 개의 로컬 메모리가 있어서 개별 APU 에 하나씩 할당됩니다.

APU 는 로컬 메모리에서 입출력된 데이터를 레지스터에 받아서 명령을 수행합니다. 로컬 메모리는 1024bit 블럭씩 메인 메모리를 억세스할 수 있지만 APU 는 메인 메모리를 직접 억세스할 수 없습니다.

캐시 구조를 사용하지 않는 대신 캐시를 채용함으로써 필요한 복잡성을 줄일 수 있게 됩니다. 로컬 메모리는 개별 APU 만 억세스할 수 있습니다.

이는 시스템의 유연성을 떨어뜨리고 프로그램의 복잡성을 증가시키게 되지만, 이러한 구조는 데이터를 APU 레지스터에 엄청난 속도로 전달할 수 있습니다. 만약 사이클당 2 개의 레지스터가 로컬 메모리를 억세스할 수 있다면 초당 147 기가바이트를 처리할 수 있는 시스템이 됩니다. 이것은 단지 하나의 APU 에 해당하는 것이며, 전체 로컬 메모리의 총 bandwidth 는 테라바이트 수준을 넘게 되며, 캐시 시스템을 채택한 프로세서는 이 정도 성능에 근접할 제품이 없습니다. 셀은 데이터 공급 방식의 APU 와 로컬 메모리 방식의 설계로 이것을 달성하였습니다.

간섭

APU 메커니즘이 있으려면 간섭 메카니즘도 있어야 합니다. 두 개의 APU 가 동일한 메모리를 사용하는 것을 방지하기 위해서 RAM 에 약간의 가외 데이터와 로컬 저장소에 가외의 “busy” 비트를 첨가한 메카니즘이 사용됩니다. 이 메커니즘을 소화하려면 특허 청원서에 소개된 여러 개의 다이어그램과 자세한 설명을 읽어야 합니다. 하지만 이 구조는 단지 데이터 읽기를 가능/불가능하게 하는 것과 어떤 APU 가 메모리를 사용하는지를 기록하는 것이므로 캐시를 계속 업데이트하는 구조보다는 훨씬 간단합니다.

이 시스템은 메모리 억세스를 복잡하게 하여 속도를 떨어뜨리게 됩니다. 가외의 데이터 저장 장소를 칩에 내장하여 속도를 높일 수는 있지만 현재 상태로는 실리콘 용적을 늘려 단가를 높이는 것은 실효성이 없어 보입니다.

아직까지 PU 에 대해서는 “파워 아키텍쳐” 를 채택했다는 것 외에 알려진 바가 많지 않지만 일반적인 CPU 디자인상 보통의 캐시와 간섭 메카니즘을 내장하고 있다고 보는 것이 좋을 것 같습니다. (아마 메모리 서브시스템에 맞게 변형되었겠지요)

데이터가 제대로 공급된 APU 는 엄청난 성능의 프로세싱 능력을 나타낼 것입니다만…

APU 는 연결될 수도 있습니다. 스트림으로 프로세스 데이터를 여러 개의 APU 에 병렬로 공급할 수 있습니다. 이 경우 셀은 이론적인 한계로 250 GFlops 의 프로세싱 성능을 가집니다. 2장에서는 이 기능과 셀의 나머지 부분, 그리고 아키텍쳐의 다른 측면을 살펴보겠습니다.
0 0
로그인 후 추천 또는 비추천하실 수 있습니다.
포인트 228,692
가입일 :
2003-02-18 14:12:30
서명 :
미입력
자기소개 :
미입력

최신글이 없습니다.

최신글이 없습니다.

댓글목록 3

영환군님의 댓글

으흐.. 너무 어려워요.. -_-;
몇번을 봐도.. 어려워요.. ㅠ.ㅠ

hongjuny님의 댓글

제 번역 실력이 영 파이라서 그렇습니다. ㅡㅡ;
일단 번역이 다 끝나고 난 다음에 제 나름대로 다이제스트 버젼으로 하나 정리해 보도록 할테니 그걸 보시면 훨씬 더 간단하게 이해가 되어서 다른 곳에서 아는체를 하는데 도움이 되실 것으로 생각합니다. ㅎㅎㅎ

영환군님의 댓글

ㅎㅎㅎ 역시나 hongjuny님은 KMUG 지식in 입니다~ 잇힝~
Cell 프로세서가 PC에 적용된다면.. 어느정도 퍼포먼스일까.. 에 대한 것은 아마 관심이 많은 분들이 많을텐데.. +_+

전체 529 건 - 9 페이지
2006.05
13

[App 개발] [질문] xcode는 인스톨 아니면 안되나요?

os를 덮어씌우기 했습니다. 좀 찝찝하지만 넘 갑작스럽게 시스템이 맛이가서 어쩔 수 없이 그냥 깔았습니다. 맥에서 기존에 파일들을 다 백업해주고.. 응용프로그램도 다 해줘서 자잘한 설정파일만 복사해줬는데 xcode는 실행이 안되네요...뭐 다시 인…

2006.05
02

[App 개발] 네이트온같은 것을 리버스엔지니어링으로 맥용으로 만들 수 있나요?

전 프로그래머는 아닙니다만, 갑자기 궁금해져서요. 불법인점은 논외로 치고서라도 궁금해서 질문 올립니다.-_-;; 마소전용 플그램을 리버스 엔지니어링해서 맥용으로 만드는 것이 가능할까요 가능하다면 메신저로 메세지 주고받는 것만이라도 호…

2006.04
30

[App 개발] Apple pro apps의 GUI 스타일은 어떻게..

C++로 커맨드라인수준의 프로그래밍만 하다가 팔자에도 없는 Cocoa 및 GUI 프로그래밍을 해야하는 상황이 닥쳤습니다 ㅎㅎ; 일단 이래저래 공부를 시작하고는 있는 중인데, 한가지 궁금증이 생겼습니다. Apple의 pro apps(가령 Final …

2006.04
22

[App 개발] xcode에서 인텔리센스 기능..

인텔리센스 라는 용어가 맞는지 모르겠습니다. 자동완성;; 이라 해야되나 써본거라곤 vs6 밖에 없어서...;; 새로운 걸 하고 싶어서 과감히 전환을 시도하는 중입니다. 맥도 새로 구입하고 ㅎㅎ 하루하루를 맥에 푹 빠져살고 있습니다. x…

2006.04
15

[App 개발] [질문]Xcode 만 설치하면 맥용 개발툴은 다 설치한건가요?

우연히 OS Cd를 뒤지다가 Xcode Tools란 폴더를 찾았습니다. 폴더를 열어보니 Xcode Tools라는 파일이 있어서 설치를 했네요. 이것만 이스톨하면 개발툴은 다 인스톨 된건가요 제가 원하는 언어는 C,C++.JAVA 입니다.

2006.03
23

[App 개발] GNU Scientific Library 를 Xcode 에서 컴파일하다

과학, 공학 전공하시는 분들이시라면, 선호하는 계산 라이브러리가 있으실 줄 압니다. 가장 간편하고 인기있는 라이브러리는 역시 Numerical Recipes 라이브러리가 되겠지만, 요즘은 GNU Scientific Library (GSL) 이 대세죠 …

2006.03
11

[App 개발] 인텔맥에 대처하는 우리의 자세 ㅡㅡ;

이미 작년 6월 이후부터 꾸준하게 유니버설 바이너리 관련 개발자 정보들이 나왔기 때문에 지금은 그 충격이 거의 상쇄되어 버린 기분입니다. 그리고 새로 출시된 인텔 아이맥과 맥북 프로의 성능이 기존 제품을 훨씬 능가한다는 사실을 보면서 많은 개발자들이 …

2006.01
03

[App 개발] Xcode 2.2 에서 C++ 프로그래밍 하기

아직 초보라서 잘 모르는데 어떻게 하는지 알려주세요... Project를 어떤 것을 선택해야하는지...

2005.12
28

[App 개발] Xcode 2.2 에서 카본 프로그램 만들자 (7) 응용문제

지금까지 연습했던 기법들을 모두 동원하여 그럴듯한 게임 하나를 만들어 보겠습니다. 만들기 쉽고 이해하기 편하고 간단한 예제로 무엇이 좋을까 생각해보니, 퍼즐 게임이 있더군요. 비트맵 조작, 마우스 입력, 간단한 게임 데이터 관리 등을 모두 연습해볼 수…

2005.12
26

[App 개발] Xcode 2.2 에서 카본 프로그램 만들자 (6) Keyboard

이번 예제는 겉으로 보기엔 후즐근해 보이겠습니다만, 그 내용은 심히 유용한 것을 담고 있습니다. 1. 키보드 입력 이벤트를 처리하는 루틴에서 이번에는 입력된 키보드 값을 버추얼 키 값에서 우리에게 친숙한 ASCII 값으로 바꾸었습니다. 이 값을 …

2005.12
24

[App 개발] Xcode 2.2 에서 카본 프로그램 만들자 (5) Events

이제는 본격적으로 이벤트 부분을 파 들어가 보도록 하겠습니다. 이 세상 거의 모든 GUI 는 Event Driven 입니다. 이벤트에 의하여 전체 프로그램이 동작하게 됩니다. 이러한 점은 많은 초심자들이나 옛날 Procedual Programming …

2005.12
21

[App 개발] Xcode 2.2 에서 카본 프로그램 만들자 (4) ATSUI

비트맵 예제는 지난 글들을 살펴보시면 되겠습니다. 이제부터는 간단한 것 같으면서도 상당히 까다로운 주제인 텍스트를 다루어 보고자 합니다. 그래픽 환경으로 넘어오면서 오히려 텍스트 다루는 것이 점점 더 어려워지고 있습니다. 글꼴도 다양하고 예쁘게 만들어…

2005.12
19

[App 개발] Xcode 2.2 에서 카본 프로그램 만들자 (3)

이번에는 본격적으로 Quartz 의 Core Graphics 를 이용해서 그림을 그려 보겠습니다. 참고 자료로는 애플 홈페이지에서 다운로드 받으실 수 있는 Quartz 2D Programming Guide 입니다. 프로그램의 기본 구조는 이…

2005.12
17

[App 개발] Xcode 2.2 에서 카본 프로그램 만들자 (2)

윈도우 프로그래밍을 처음 공부한ㄴ 사람들이 한결같이 내놓는 불만은 "왜 이렇게 어렵냐" 라는 것입니다. 막말로, C 에서는 printf("Hello World\\n") ; 요거 하나만 하면 글을 볼 수 있는데, 윈도우에서는 글자 하나를 보…

2005.12
16

[App 개발] Xcode 2.2 에서 카본 프로그램 만들자 (1)

Xcode 새 버젼의 카본 어플리케이션 템플릿이 좀 더 친절해졌더군요. 한편, 지금까지 자기 고유의 이벤트 핸들러를 갖고 계시던 분들에게는 더 힘들어 졌더군요. ㅠㅠ 자 해 봅시다. 일단. Xcode 를 실행하고, File->N…

2005.12
08

[App 개발] PCWEB 이란 곳에 올라온 코코아 강좌(1)

제가 소개할 사이트는 http://pcweb.mycom.co.jp/column/objc/ 에 연재되고 있는 코코아 강좌입니다. 이번에 제 1회를 부족한 일본어 실력으로 해석해 보았는데, 해보니 번역기를 돌린것과 비슷하게 되어버렸습니다. 결국 그렇…

2005.12
07

[App 개발] Apple Development Document 중 일부가 업데이트 되었습니다.

12.6일자로 몇가지 문서가 새로 마이너 버젼으로 업데이트 되었습니다. - Apple Human Interface GuideLines - Dashboard programming Topics - Dashboard Tutorial - DVD P…

2005.12
06

[App 개발] C# VS Object C (1) - 터미날 프로그램을 사용할때 받는 인자를 활용해서 MS-DOS 의 Mdi…

우선 object C 를 활용한 프로그램부터... 제가 제가 잘 적었는지 모르겟습니다. 워낙 엉뚱한 말을 저도 몰래 쓰기 때문에..... 이 프로그래의 사용법은 다음과 같습니다. 우선 소스 파일을 받으면 Xcode 로 열수 있습니다. 그…

2005.12
06

[App 개발] OMIAI (아스키 코드 값를 이용해서 도형의 색갈을 바꾸어 주는 프로그램입니다.)

두번째로 케이머그에 올리는 글이네요. 약 한달전에 만든건데, 필요한 분에게 프로그램과 소스만 전해주고 그냥 하드 속에다가 묵혀두었는데, 이렇게 놔두는 것 보다 공개해서 수정이나, 부족한 부분도 남에게 자문도 받아보고, 이를 통해서 공부도 배울…

2005.10
22

[App 개발] 신형 듀얼 코어 2.3 GHz 의 속도 비교

제가 지금까지 쓰던 PowerMac G5 Single 1.8 GHz, 프론트사이드 버스 900 MHz 짜리 제품과 이번에 새로 나온 Dual Core PowerMac G5 2.3 GHz, 프론트사이드 버스 1.15 GHz 제품과의 성능 비교입니다…

2005.09
30

[App 개발] Apple에서 하드웨어 제어 ~_~

안녕하세요 ㅎ 컴퓨터로 하드웨어를 제어해서 프로토타입을 만들 일이 생겼는데 Mac에서 사용가능한 인터페이스가 있는지 궁금해요 >_< PC의 경우 K8055보드같은 USB인터페이스가 판매되고 있습니다만 제품 사양에 Mac은 언급되지 않았더군요…

2005.09
29

[App 개발] 요즘 이런 망상에 빠져.. ~_~;

개발실 게시판에는 정말로 오랫만의 포스팅입니다. 그동안 일도 바쁘고.. 개인적인 작업과 학업.. 모두 바쁜 관계로.... 이제 어느덧 9월도 마지막에 다가가고 있습니다. 최근에는 그냥 알바식으로 일하면서.. 인체 인식으로 PC를…

2005.08
25

[App 개발] IDE와 DB관련해서 질문있습니다.

제가 4학년 플젝으로 erp제품중에서 일부분을 자바로 해보려하는데요. 원래 회사에다닐때 사용하던건 비베랑 ms-sql이였습니다. (보고서는 크리스탈 레포트로했습니다.) 대부분 sp로 짜여져서 sp지원하는 어떤 db를 사용해야할지 난감합니다.…

2005.08
17

[App 개발] 코드 최적화 (6) 분기 예측

분기 예측 (Branch Prediction) 이라는 것은 프로세서의 파이프라인이 길어지면서 발생하게 되는 비효율적인 문제를 해결하기 위한 방법으로 도입된 것이지요. 이것이 우리 프로그래밍에 어떤 영향을 미치게 되는지를 살펴보기 위하여 간단한 예제를 …

2005.08
15

[App 개발] XCode 2.1로 Maya plug-in 개발하기..?

Maya 6.0에서 제공하는 Maya API를 이용하여 plug-in을 개발하려고 help문서를 뒤져보니.. xcode는 예제의 프로젝트 파일을 컴파일해보라고 나와있는데.. xcode의 버전때문인지 컴파일이 되질 않는군요..-.- MSVC로 프로…

2005.08
15

[App 개발] 코드 최적화 (5) Unrolling

언롤링이라는 기법은 언뜻 보기에는 거의 삽질과 다름이 없습니다. 지난 (4) 번 예제에서 사용된 코드를 언롤링한 코드의 예를 보시면 이야기가 더 쉽게 진행될 것 같습니다. for( j = 0 ; j < MAT_SIZE ; j++ )…

2005.08
14

[App 개발] 코드 최적화 (4) 행렬, AltiVec

이번에는 매우 고전적이면서 아직도 수없이 많은 곳에서 쓰이고 있는 행렬 곱셈 문제를 한 번 생각해 보겠습니다. for( i = 0 ; i < MAT_SIZE ; i++ ) { for( j = 0 ; j…

2005.08
13

[App 개발] 코드 최적화 (3) 인덱싱

매트릭스 연산은 여러 곳에서 널리 쓰이고 있습니다. 단순 반복적인 계산을 거듭하는 이 루틴의 효율을 어떻게 높이느냐에 따라서 컴퓨터의 최대 계산 능력을 끌어낼 수도, 혹은 전혀 이용하지 못할 수도 있습니다. 다음의 예제는 가우스 소거법 소스를 간…

2005.08
13

[App 개발] 코드 최적화 (2) 컴파일러

계산 밀도 (Computational Intensity)라는 것이 있답니다. 이것이 무엇이냐 하면 컴퓨터에서 어떤 계산을 수행할 때 계산 명령 (Operation) 대 계산 인수 (Operand) 의 비율을 말합니다. 비싼 값을 주고 사는 좋은 컴파일…

2005.08
12

[App 개발] 코드 최적화 (1) 캐시

이름은 거창하게 지어 봤습니다만, 별 것 아니고요... ㅡㅡ;;; 앞으로 몇 회동안 제가 직접 작성한 코드로 어떻게 하면 빠른 프로그램을 작성할 수 있을까를 같이 한 번 연구해 보았으면 합니다. 보유하고 계신 맥의 종류마다 약간씩 다르지만, 제가…

2005.07
28

[App 개발] openGL을 이용해서 만든 카툰렌더러 입니다.

가입하고 첫 글 올립니다. 제작중인 게임 엔진으로 카툰렌더링한 스크린샷입니다. 크로스 플렛폼을 목표로 제작중이라 엔진은 콘솔에서 라이브러리로 만들었고, 아직 코코아는 내공이 부족해서 opengl fullscreen 예제에 붙였습니다. 퍼포먼스 …

2005.07
23

[App 개발] Cocoa 책 구입했습니다.

출장온김에 한국에서 구하기 힘들었던 Mac 프로그래밍 관련 책을 Amazon.com 에서 구입했습니다. 싸게 샀네요. 이거 두권이면 기초부터 시작해서 한참 동안 볼 수 있을것 같죠

2005.06
15

[App 개발] Cell 아키텍쳐 글을 읽기위한 간단한 토막상식 (2)

뭘 이런 걸 2편씩이나... ㅡㅡ;;; * DSP DSP 라는 것이 각광을 받기 시작한 것은 80년대 말~90년대 초라고 여겨집니다. 그 당시까지는 DSP 라는 개념이 확립되어 있긴 했지만 이것을 실현할 수 있는 빠른 속도의 프로세서가 …

2005.06
15

[App 개발] Cell 아키텍쳐 (5)

솔직히 이번 마지막 요약 결론글은 무지 조악합니다. 별로 권하고 싶지 않은 글이군요. ㅡㅡ; 장미빛 청사진이 이번에는 총천연 시네마스코포로 펼쳐지는데, 낯간지러워서 번역하다가 그만 윈도우 닫을 뻔 했습니다. ㅡㅡ;;; 한 편이 더 남았군요. 최근…

2005.06
14

[App 개발] Cell 아키텍쳐 (4)

4장의 글은 이번 애플-인텔 연합 발표가 있기 전의 내용이라 현재의 인식과 많은 차이가 있고, 실제 셀 탑재 웍스테이션도 선보인 지금의 생각과도 역시 괴리감이 느껴집니다. 셀 칩의 스펙이 보여주는 장미빛 청사진 (청사진이 장미빛이라... 쿨럭~ ㅡㅡ;…

2005.06
13

[App 개발] Cell 아키텍쳐 글을 읽기위한 간단한 토막상식 ㅡㅡ;;

전자공학이나 컴퓨터 공학을 전공하지 않으신 분들, 그리고 컴퓨터 구조의 기본에 대해서 잘 모르셔서 아래 글들을 접수하기 곤란하신 분들을 위해서 필요한 내용을 해설해 드리고자 합니다. 컴퓨터 잘 아시는 분들은 읽지 마시고... ㅎㅎ 저도 빠삭하게 다 아…

2005.06
13

[App 개발] Cell 아키텍쳐 (3)

3장: 셀 컴퓨팅 셀은 그래픽 전용 칩이 아닙니다. 셀은 범용으로 개발된 칩입니다. 만약 플스 3 의 그래픽 칩으로 활용된다면 nVidia 에서 제공될 것입니다. APU 는 일반 마이크로프로세서처럼 범용은 아니지만 셀 프로세서는 일반 파워피씨 마…

2005.06
13

[App 개발] Cell 아키텍쳐 (2)

셀 아키텍쳐 ­ 2장: 셀의 내부 스트림 프로세싱 셀이 일반 프로세서와 다른 점은 APU 를 하나로 연결하여 스트림 프로세서로 동작시키는 기능이 있다는 점입니다. 스트림 프로세서는 데이터를 수령하여 처리하는 것을 순차적으로 처리합니다. 이러…

2005.06
12

열람중 [App 개발] Cell 아키텍쳐 (1)

앞으로 몇 회에 걸쳐 Nicholas Blachford 사이트에 있는 Cell 아키텍쳐 설명 글을 번역해 올리도록 하겠습니다. 잡스가 Cell 을 보고 콧방귀를 뀌었다던데... 과연 왜 그랬는지 함 보죠. ^^ -------------------…

2005.05
30

[App 개발] 인공지능에 대해 공부해보려는데...

자연어 처리와 인공지능에 대해 관심을 갖고 공부해보고 싶은데요.... 이론적인 측면에서 어디서부터 어떻게 시작하면 돟을까요

2005.05
14

[App 개발] xcode2.0에서 파일 오픈?

사실 2.0뿐만 아니라 1.5에서도 잘 안되네요.. 파일 오픈하는 방법은 vc++이나 같은거 아닌가요 처음 작업은 vc++에서 c++로 짰습니다. (gcc라 오픈하는 방법도 다른건지요..) 오픈하려는 파일을 프로젝트 폴더안에 위치해두고 …

2005.05
11

[App 개발] 마스크 이미지를 이용한 애니메이션

이번에도 역시 제목만 요란할 뿐, 내용은 별로 대단할 것이 없습니다. ^^; 지난 예제에서 한 번 비트맵 데이터를 이용하여 CGContext 를 작성하는 방법을 사용해 보았습니다. 이번에는 이것을 응용하여 투명 레이어에 조그마한 애니메이션을 출력…

2005.05
10

[App 개발] 투명 윈도우를 만들자

오늘도 역시 콜롬부스의 달걀입니다. ㅡㅡ; 엉망으로 짠 프로그램이지만, 나름대로 설명을 달아두면 도움을 받으실 만한 분도 계시겠지요 ^^; 프로젝트명을 거창하게 FullScreenCoreImage 라고 달았지만, 아쉽게도 코어 이미지는 여기…

2005.05
08

[App 개발] Carbon 에서 Core Image 프로그램을 짜는 법 (2)

일단은 샘플로 프로그램을 짜 보았습니다. ^^ QuickDraw 와 Core Graphics 와 Core Image 가 마구 뒤섞인 무시무시한 프로그램이 탄생하고 말았습니다. ㅡㅡ; 예외 처리라든지 그런 것이 하나도 안 되어 있는 완전 개발…

2005.05
05

[App 개발] Carbon 에서 Core Image 프로그램을 짜는 법

타이거의 등장과 함께 꽤나 주목을 받고 있는 Core Image, 그럴싸한 비됴 카드와 128 메가 메모리 없이는 구경도 못한다는 신비의 기술을 한 번 구경하기 위해 이곳저곳 자료를 뒤적여 보았습니다. 카본에서 Core Image 를 호출하기 위해서였…

2005.05
03

[App 개발] Xcode 2.0 + gcc 4.0

오늘 배달온 타이거를 설치하고 나서 맨 먼저 해본 것이 그간 가지고 놀았던 매트릭스 연산 프로그램의 속도 측정이었습니다. Xcode 1.5 에 gcc 3.5 를 가지고 대략 17~20초 사이에 완료하던 작업을 8~9 초만에 끊습니다. 이는 gcc 4.…

2005.04
06

[App 개발] 코코아 개발 서적좀 추천해 주세요.

자바도 관심이 있긴 하지만 퍼포먼스 측면에서 코코아가 더 끌리네요 mfc로 약간 개발 경험이 있는데 역시나 맥쪽은 관련 자료가 드무네요.. 코코아 추천 서적좀 부탁드립니다 ^^

2005.03
26

[App 개발] 프로그래밍 공부하시는 분들이나 개발자 분들은 어떤 컴파일러를 이용하시나요?

오랫만에 개발실에 글을 남기네요.. 영환군입니다~ 최근에 ibm PC를 XP pro SP2로 세팅하면서 다시금 간단히 EditPlus와 Java SDK로 자바 코딩을 세팅하고.. 간단한 C++ 부터 windows APP까지의 컴파일을 위해 여…

2005.03
16

[App 개발] MSN 메신저 프로토콜 해부 1/3

원본은 여기에 있습니다: http://www.devarticles.com/c/a/HTML/The-MSN-Messenger-Protocol-Torn-Apart-Part-1/ ----------------------------------------…

2005.03
14

[App 개발] MSN 메신저 프로토콜

다음 글은 Venky's World (http://www.venkydude.com/articles/msn.htm) 의 글을 번역한 것입니다. MSN 메신저의 기본적인 동작 원리를 이해하는 데 도움이 될 수 있는 쉬운 글입니다. ----------…