이제 곧 컴퓨터 구조를 배우는데..

geneven의 이미지

본격적으로 CPU에 대해서 배우는거 같더라고요..
교수님께서 수업소개때 하신 말씀이 인텔의 아키텍쳐는 별로다라고 하셨는데
CPU의 아키텍쳐는 최근에 설계된 것일수록 좋은건가요? 예를들면
트렌스메타의 칩은 최근에 개발된건데ㅇ...

withlhw의 이미지

음...

CPU는 크게 RISC 구조와 CISC 구조로 나누어 집니다.

RISC는 CISC 구조에서 가지는 단점인 Instruction Set의 방대함에 따라

그 Instruction set을 줄여 놓은 겁니다. 거의 200-300여기의 instruction만

가지고 이 instructin 들을 조합하여 하나의 결과를 만들어 내죠..

Intel CPU는 CISC 구조를 가집니다. 하지만 현재 가장 많이 사용하는

CPU이고 다른 CPU에 비해 뒤지지 않는 성능을 내고 있습니다.

su2014의 이미지

음ㅁㅁㅁ RISC랑 CISC랑 있는데

CISC같은 경우는 속도의 향상을 위해서 클럭스피드를 높이면서 파이프 라인을 많이 사용해서 속도를 증가시킴 (펜티엄3가 파이프라인이 20~40 사이던데 기억이 가물가물) RISC같은 경우는 어찌보면 시퀜셜 로직처럼 구현 되어있는데 그래서

CISC의 경우는 가장 느린 계산에 초점을 맞추어서 클럭 스피드랑을 맟추는 반면에

RISC의 경우는 average case가 되는거죵ㅇㅇㅇ

그래서 머 펜티엄 칩이 2기가가 된다구 해도 500메가의 RISC칩에 않된다는 말이 나오는거구용ㅇㅇㅇㅇ

아 설명 맞나 몰라... 일단 Instruction set은 RISC가 적구요. 레지스터가 듸게 많아요 한 200개가 넘는걸루 ^^;; 인텔은 32개인가 그러던데..

그런데 요즘에는 CISC RISC구분 별루 않짖구 서로를 혼용해서 만든다구 그러던데 ... 머라나 하이브리드라구 그런가

Risty의 이미지

기존 프로그램들에 대한 호환성을 유지하려다 보니 구조가 비효율적이 된다는 말을 들은 적이 있습니다. 심지어 예전 8086 시절에 짰던 프로그램이 현재의 펜4 3.2기가에서도 문제 없이 돌아가는데, 이렇게 기존 프로세서용으로 만든 프로그램을 계속 이용할 수 있게 하면서도 그러면서도 여러가지로 추가한 것이 많다 보니 구조가 지나치게 복잡해지고 있죠. 명령어 세트만 하더라도 대략 8086(정확한 명칭은 모르겠음), 286, 386, (FPU), 486, 586, MMX, 펜2(686), 펜3(SSE), 펜4(SSE2) 정도로 나눌 수 있겠는데 이 모두를 만족시킬 수는 없을 것입니다. 비효율적이라는 말이 꼭 '속도가 느리다'는 것을 뜻하는 것은 아닌 것을 생각해 보면 비효율적인 것이 맞는 것 같습니다.

반드시 성능 하락에 영향을 끼친다고는 볼 수 없지만(하지만 그럴 것 같음) x86 명령어 코드를 보다 보면 가끔씩 하나의 메모리 번지나 플래그 등이 몇 비트는 이쪽에 있고 몇 비트는 저쪽에 있는 등 조각조각 나뉘어진 것을 볼 수 있는 것도 예전 명령어셋에서 이용하던 구조를 최대한 보존하기 위한 것이죠.

인텔의 64비트 프로세서인 아이테니엄에 직접적인 하위 호환성을 없애고 에뮬레이션 모드로 수행하게 하려는 것도 이것과 무관하지 않다 봅니다. 이것이 꼭 좋은 것인지는 판단하기 어렵기는 합니다만.

vacancy의 이미지

우선 RISC와 CISC에 대해 좀 적으면요.

CISC는 여러 복잡한 작업에 대한 명령들을 각각 만들어서 사용하는데 반해,
RISC는 명령어의 수는 줄이고,
복잡한 명령은 단순한 명령을 여러개 사용해서 실행하자는 취지에서 나왔죠.
CISC가 보다 먼저 나온 쪽이라고 할수 있습니다.

CISC의 경우 명령이 많아 명령의 Decoding 과정이 복잡하기 때문에,
파이프라인에서 Decoding 과정에 걸리는 시간이 길어지게 되고,
클럭이 일정 이상 향상되기가 힘듭니다.
RISC의 경우 이런 문제가 없기 때문에 클럭 향상이 쉽죠.
대신 CISC보다 많은 명령을 수행해야 하기 때문에 손해도 있습니다.
총체적으로 봤을때 RISC가 좀더 이득인 것 같고요.

Intel x86 Architecture는 외부적으로는 CISC이긴 한데,
내부적으로는 명령을 Micro-operation으로 변환해서 RISC처럼 동작합니다.
이 과정이 사실 부하가 되는 셈이기 때문에 사실 좋은 방식은 아니지만,
기존과의 호환성을 위해 어쩔수 없이 선택된 방법이죠.

RISC는 그 외에 장점으로 같은 명령 사이즈를 채택했을 때,
CISC에 비해 명령을 넣는데 여유가 있기 때문에
( 이건 수업을 들으시는게 좋겠습니다. 여기선 설명하기 좀 -_- 길겠네요. )
보다 많은 레지스터를 사용해도 부담이 적은 편입니다.
많은 명령을 사용해야 한다는 단점을 극복하고
명령 넣는데 여유가 있다는 점을 고려해
RISC 칩은 대부분 CISC에 비해 많은 레지스터를 사용하는 것이 보통이고요.
이것은 Compiler 기술이 이전과 비교할수 없을만큼 좋아졌기 때문에
가능한 일이라고 할수 있습니다.
( Compiler 기술이 낙후되어 있었다면 RISC 칩은 쓰기 좀 곤란했을 겁니다. )
( 무슨 상관일까 싶으시겠지만 -_- 이유는 강의를 들어보시면 아실겁니다. )

요즘 잘나가는 RISC 칩들의 경우는
명령을 넣는데 여유가 있다는 것을 더 많이 이용해서
마치 CISC처럼, 기본명령이 아닌 것도 많이 넣어 사용하고 있습니다.
ARM이나 ( 솔직히 ARM 명령셋은 CISC라고 해도 과언이 아니죠 -_- )
PowerPC가 그러한 예라고 할 수 있죠.
정말 단순한 명령 셋을 사용한 아키텍처에는 MIPS가 있습니다.

트랜스메타의 cpu는 다른 cpu와 사실 좀 개념이 다르다고 할수 있고요.
실제로 트랜스메타의 main cpu는 x86과 호환성이 없습니다.
외부 칩에서 호환성을 만들어주는 역할을 하는 것이고요.
장단점이 있으니 뭐 꼭 낫다 아니다 하기 어려운것 같네요.

어쨌든 x86의 Architecture가 낙후된 것이라는 건 사실입니다.
그런데 Architecture와 성능은 사실 별개의 것이기도 하니,
성능을 기준으로 좋다 나쁘다 나누기는 어려운 것 같네요.
하지만 어셈블리 명령/기계어 코드 셋을 좀 보시고,
파이프라인에 대해 좀 공부하고 나시면 -_-
x86 Architecture가 정말 억지로 사용되고 있단 생각이 드실겁니다.
MIPS가 그런점에선 참 멋있긴 한데 -_-a 멋있는 것 뿐이긴 하죠.

sadpeople의 이미지

재미있는 기사가 있어서 올립니다.
결론은 ... 목표로 하고 있다. 라는 거군요.. -.-

예전에 앞으로는 양자컴퓨터(?)가 나온다는 기사를 본것 같은데 아시는분 답글 바랍니다.

1개의 칩으로 초고속 컴퓨터 수준의 처리 능력!? IBM과 텍사스 대학이 개발

IBM Research와 텍사스 대학 오스틴교는 ,슈퍼 컴퓨터 수준의 처리 능력을 실현한 마이크로 프로세서의 개발을 명확하게 했다.

신 아키텍처는 TRIPS(Tera-op Reliable Intelligently-adaptive Processing System)라고 불리고 있고,1초간에 1조 이상의 계산을 처리할 수 있는 칩이 가능해진다고 말한다.유연성이 뛰어나는 것도 특징의 1개에 ,데스쿠톱,시그널 프로세싱,그래픽스,서버등,다양한 어플리케이션에 대응할 수 있다.폭넓은 시장을 커버한 칩이 된다고 한다.

TRIPS에는 「Block-oriented Execution」라고 불리는 디자인이 채용되고 있다.조금씩 계산을 처리하고 가는 것은 아니고,대량의 계산 처리를 블록화하고 실행 유닛에 배치하고,보다 많은 명령을 평행하고 실행할 수 있도록 지난다.IBM Research는 어플리케이션의 최적화를 도모함과 동시에,TRIPS에 유연성과 다양성을 갖게 하기 위한신 회로 및 디자인 수법을 개발한다고 말한다.

개발 팀은 ,대략 30개월에 기본형을 완성시키는 예정이다.기본형은 4개의 코어를 갖고,각각이 클록 해당하고 16의 오퍼레이션을 실행할 수 있다.독특한 캐시 구조도 TRIPS의 효율성에 연결된다고 말한다.2억 5,000만 이상의 트랜지스터를 탑재하고,500MHz로 동작한다.최종적으로는,2010년을 목표에 ,1초당 1조 이상의 계산 처리를 실현한 10GHz의 칩의 완성을 목표로 한다.

TRIPS에는 ,DARPA(Defense Advanced Research Projects Agency)가 1,110만 달러를 던지고 개발을 서포트하고 있다.DARPA는 ,미국방 총생의 기술 연구·개발부 문이다.8월 중순에 스탠포드 대학에서 행해진 Hot Chips 15로는 ,DARPA의 마이크로 시스템 연구부문 디렉터인  Robert Leheny 성이 기조 강연 가운데에서,「개별적의 병사가 들고 다닐 수 있는 1회용 슈퍼 컴퓨터」의 가능성을 화제에 하고 있다.

DARPA는 ,국가안전보장의 중요하다 전략으로서 ,초 고성능인 계산 환경의 정비를 목표로 한 High Productivity Computing Systems(HPCS)라고 한 프로그램을 설치하고 있고,그 안으로 IBM의 PERCS(Productive,Easy-to-use,Reliable Computing Systems)프로그램에 5,330만 달러의 서포트를 행하고 있다.PERCS는 ,복잡한 작업 내용을 자동 분석한 것으로 ,다양한 작업에 적용할 수 있는 컴퓨터의 설계를 목표로 하고 있다.

[/code]

봉쥬르 라이프~~

너굴사마의 이미지

양자컴퓨터 개발까지는 아직 10년정도 남았다고 하더군요...

국내에서는 카이스트에서 연구 중인걸로 압니다.

http://mrm.kaist.ac.kr/qc/ 여기 가보세요...

----------------------------------------------------------------------------
"It is more important to know where you are going than to get there quickly"
- Mabel Newcomber

penrose의 이미지

[ RISC ]
Instruction의 사이즈가 일정함 (Instruction Decoding 회로가 간단)
파이프 라이닝 구현이 비교적 쉬움
Instruction의 갯수가 비교적 적음 (대략 100개 이하)
Instruction 수행 시간이 비교적 일정
LOAD/STORE를 제외하고는 메모리를 직접 접근하지 않음
레지스터 갯수가 비교적 많음 (무려 500개에 달하는 것도 있음)
컴파일러의 성능이 중요 요소로 부각됨
Addressing 방식 갯수가 비교적 적음 (1~2개)
Control Logic이 비교적 간단함

CISC는 HLL(High Level Language)를 쉽게 구현하기 위해서, HLL의 각종 구문에 해당하는 CPU Instruction들을 추가하려는 과정에서 생겨난 것입니다. 여러 사이클이 걸리는 복잡한 명령을 하나의 Instruction으로 제공하니 프로그래머 입장에서는 상당히 편리하고, 또한 프로그램 실행 코드도 상당히 줄어들어서 메모리 가격이 비쌌던 당시에는 상당한 호응이 있었습니다.

그러나 차차 메모리 가격이 하락하고, Pipeline에 관한 연구가 시작되면서 CISC가 제공하는 복잡한 Instruction들이 실제 구문에 적용되기 위해서는 상당한 제약조건이 따르고, Pipeline을 설계하는데도 좋지 않다는 것이 밝혀졌습니다. 차라리 명령어를 간단하게 하고 각 명령어의 수행 시간을 일정하게 해서 Pipeline을 Schedule하는 데 편리하게 하는 대신, 컴파일러를 최적화시키는 것이 더 낫다는 것이죠. 그 결과 RISC가 유행하게 되었지요.

위에 분 말씀처럼 요즘 RISC에서도 CISC 적인 요소를 많이 도입하고 있고, CISC에서도 RISC 적인 요소를 많이 도입하고 있습니다. PowerPC의 경우 RISC 치고는 엄청 많은 명령어가 있습니다. (200 개가 넘는 걸로 알고 있습니다.)

Decoding Logic, Pipeline, Branch Prediction 쪽을 보면 CISC 설계하는 사람들이 참 대단하다는 생각이 들더군요. RISC로 하기도 힘든걸 CISC로 하다니... 펜티엄이 데스크탑 시장이나 Floating-Point 연산이 별로 사용되지 않는 쪽의 서버 시장에서는 인기가 있을 지는 모르겠는데, 공학 계산용으로는 꽝입니다. CAD 툴 같은거 사용해보시면 SPARC CPU랑 펜티엄이랑 수행속도가 엄청 차이나죠. SPARC이 클럭 속도는 훨신 적지만요.

혹시나 컴퓨터 구조 쪽 관심있으시면 Hennessy & Patterson의 Computer Organization & Design이라는 책을 추천하고요, 둘다 상당히 유명한 사람들입니다. Patterson은 MISP CPU와 컴파일러의 초기 개발자이자 U.C. Berkeley 교수이고, Hennesy는 SUN에서 일했고 현재 Stanford 교수입니다.
더 심화된 책으로는 같은 저자의 Computer Architecture : A Quantitative Approach가 있습니다.

컴퓨터 구조 커리큘럼보다 RISC와 CISC의 차이만을 보신다면 Stalling의 Computer Architecture도 괜찮습니다. 거의 매 챕터마다 챕터 끝에 Pentium II와 PowerPC의 구조에 대해 설명이 나와있습니다.

What a wonderful world!

redbaron의 이미지

geneven wrote:
본격적으로 CPU에 대해서 배우는거 같더라고요..
교수님께서 수업소개때 하신 말씀이 인텔의 아키텍쳐는 별로다라고 하셨는데
CPU의 아키텍쳐는 최근에 설계된 것일수록 좋은건가요? 예를들면
트렌스메타의 칩은 최근에 개발된건데ㅇ...

컴퓨터 구조라면 아마 CPU 만이 아니라.. CPU 레지스터니 BUS 구조니 하는 그런 총체적인(!!)것들을 배울듯 합니다. 어셈블리나 논리회로쪽의 과목을 이미 이수하셨다면 큰 도움이 될 것으로 사료됩니다.

아마도 Computer System Architecture 란 책으로 배우시지 않을까 사료됩니다.("아님말고"류 발언)

힘내시길!(저도 상대평가로 C를..쿨럭)

penrose의 이미지

redbaron wrote:
geneven wrote:
본격적으로 CPU에 대해서 배우는거 같더라고요..
교수님께서 수업소개때 하신 말씀이 인텔의 아키텍쳐는 별로다라고 하셨는데
CPU의 아키텍쳐는 최근에 설계된 것일수록 좋은건가요? 예를들면
트렌스메타의 칩은 최근에 개발된건데ㅇ...

컴퓨터 구조라면 아마 CPU 만이 아니라.. CPU 레지스터니 BUS 구조니 하는 그런 총체적인(!!)것들을 배울듯 합니다. 어셈블리나 논리회로쪽의 과목을 이미 이수하셨다면 큰 도움으 될 것으로 사료됩니다.

아마도 Computer System Architecture 란 책으로 배우시지 않을까 사료됩니다.("아님말고"류 발언)

힘내시길!(저도 상대평가로 C를..쿨럭)

저도 컴퓨터 구조랑 마이크로 프로세서라는 과목을 모두 다 들어봤는데...
과목 이름이 마이크로 프로세서가 아닌 이상 CPU에 대해서만 배우지는 않을 거에요.
최소한 Instruction Set, Pipeline, Memory Architecture, I/O 정도는 배울거고
redbaron 님 말씀대로 Computer Architecture, Computer Organization, 혹은 Computer Systems라는 제목의 책을 사용할 것 같네요.

마이크로 프로세서 들으면 주로 Instruction Cycle, Instruction Set, Pipeline, ALU 알고리즘을 배웁니다.

What a wonderful world!