ISA (Instruction Set Architecture)
ISA란?
하드웨어와 소프트웨어 사이의 Interface를 정의하는 것. 하드웨어와 프로그램 사이의 매개체 역할을 하는 것이다.
ISA는 많다
세상에는 많은 ISA가 있다. 칩을 만드는 회사마다 ISA의 종류가 다르다. 회사마다 자신만의 ISA를 가지고 있는 것이다.
흔히 쓰이는 랩탑, 데스크탑, 심지어 서버 컴퓨터까지 전부 Intel, AMD 프로세서를 쓰는 아키텍처를 쓰고 있는데, 이 회사에서는 x86 ISA를 가지고 있다고 얘기를 한다. 그 외에 스마트폰에 쓰이는 ARM 프로세서가 있다.
이 x86과 ARM은 서로 다른 ISA라고 말할 수 있다. 즉, 데스크탑과 스마트폰은 다른 ISA를 가지고 있다고 말할 수 있다.
이것은 이렇게 말할 수 있다. 데스크탑에서 만든 소프트웨어를 바로 ARM 프로세서(모바일)에서 돌릴 수 없다. 왜냐면 Interface가 다르니 말이 통하질 않는 것이다.
ISA가 바뀌면?
ISA가 바뀌어서 하드웨어가 기존의 명령어를 없애거나 바꿔버리면, 소프트웨어도 바뀌어야 할 것이다.
그러나 옛날 컴퓨터에 최신 프로그램이 잘 돌아가는 경우를 보면 실제로 그렇지 않다는 것을 알 수 있다.
그 이유는 컴파일러, OS가 바뀌는 부분을 잘 핸들링해주기 때문이다.
그러면 Intel과 AMD는 같은 x86을 공통으로 사용하고 있는데 왜 다른 성능을 내나요?
이와 같은 질문이 나올 수 있다. 같은 ISA를 사용하는데 왜 Intel과 AMD는 다른 성능을 낼까?
이에 대한 답은 ISA를 구현하는 방법이 다르기 때문이다라고 말할 수 있다.
ISA를 구현하는 방법을 Microarchitecture라고 한다.
Microarchitecture란?
ISA가 하드웨어와 소프트웨어 사이를 연결하는 것이라면,
Microarchitecture란 ISA를 구현하는 방법을 말한다.
Intel과 AMD는 똑같은 x86이라는 Interface는 똑같지만 실제로 어떻게 만드는지, 공정은 뭔지, 코어는 뭔지, 캐시는 어떻게 되는지 등등 내부적으로 구현하는게 다르다. 그래서 성능도 달라지게 되는 것이다.
프로세서 뿐만 아니라 I/O device, disk, network 등 이런 장비들이 서로 어떻게 구성하는 지도 포함된다.
CPU processor를 만들기까지
실제로 Intel, AMD 이런데서 CPU processor를 어떻게 만들까?
칩은 Power, Performance, Throughput, Security 등등 굉장히 많은 것들을 고려해야 한다.
이것을 바탕으로 어떤 하나의 시스템을 만드는 것을 System architecture라고 한다.
많은 것을 고려하기 때문에 최적화된 design point를 찾는 것이 어렵다고 한다. 그러면 어떻게 할까?
매번 이러한 것들을 고려하기에는 시간도 많이 걸리고 비용도 많이 걸린다. CPU processor하나 만드려면 processor도 만들고~ 위에 올라가는 컴파일러도 만들고~ 어셈블러도 만들고~ 굉장히 많은 짓을 해야한다. 그래서 이 많은 짓을 하지 않고 하는 방법이 있다.
바로 C/C++로 만든 Simulation을 가지고 design processor를 만들어보는 것이다. Simulation은 소프트웨어이기 때문에 하드웨어를 굽는 것보단 비용이 훨씬 적게 들어간다. 칩을 만드는 회사들은 자신의 Simulator를 가지고 있고, 이를 기반으로 새로운 processor를 디자인한다.
이렇게 소프트웨어에서 Simulation한 뒤, 하드웨어에서 Verilog라는 HW description 언어가 있다. Verilog로 또 Simulation한다.
하드웨어에서도 검증이 된다면 실제 칩을 만드는 작업(Packaging)을 한다.
정말 간단하게 요약하면 C/C++ => Verilog => Packaging 이렇게 말할 수 있다.
(참고)
실제 우리가 사용하는 5초 걸리는 프로그램도 Simulation 단계에서는 하루, 이틀은 우습게 지나간다. 그래서 실제로 C++도 잘 안쓰고, C를 많이 사용한다고 한다.
[참고]
Computer Organization and Design 5th Edition. The Hardware/Software Interface / 저자 : David A. Patterson, John L. Hennessy / 출판 : ELSEVIER
'IT > 컴퓨터구조' 카테고리의 다른 글
[ 컴퓨터구조 ] MIPS Design Principles (0) | 2020.10.22 |
---|---|
[ 컴퓨터구조 ] MIPS Instructions (+Instruction to binary) (3) | 2020.10.22 |
[ 컴퓨터구조 ] 피연산자 (Operands of Computer Hardware) (1) | 2020.05.01 |
[ 컴퓨터 구조 ] 하드웨어 연산 (Operation of Computer Hardware) (0) | 2020.05.01 |
[ 컴퓨터 구조 ] Floating Point (0) | 2020.04.28 |
댓글