<aside> 💡 목차
</aside>
<aside> 💡 ISA란?
명령어 집합 구조를 의미합니다.
ISA는 프로그래머가 컴퓨터 하드웨어에 무엇을 해야 하는지 지시하는 명령어들의 집합입니다.
ISA는 하드웨어와 소프트웨어 사이의 인터페이스 역할을 하며, 프로그래머가 하드웨어를 제어할 수 있도록 해줍니다.
ISA가 없다면 프로그래머는 각 컴퓨터의 CPU마다 다른 기계어를 직접 코딩해야 합니다.
ISA가 있기 때문에 프로그래머는 고급 언어를 사용하여 코딩을 할 수 있습니다.
고급 언어는 ISA를 기반으로 작성되어 있기 때문에, 프로그래머는 ISA에 대한 지식이 없어도 고급 언어로 코딩을 할 수 있습니다.
→ ISA란 자주 사용하는 작업들을 명령어로 만들어둔것
<aside> 💡 따라서 교수님이 설명하고자 하신 것은 다음과 같습니다.
</aside>
→ ISA는 x86, ARM, MIPS 방식의 칩마다 다양한 버전이 존재합니다
<aside>
💡 한국인이든, 미국인이든 + 라는 행위를 표현하는 언어가 다를 순 있어도, 결국 같은것을 의미하지 않습니까?
또한, 같은 언어를 사용하는 사람이더라도, 누군가는 계산이 빠르고 누군가는 계산이 느릴수도 있습니다.
</aside>
<aside> 💡 이처럼 하드웨어 **칩(사람)**마다, 그리고 명령어(언어) 마다 표현법이나 성능의 차이는 있을 수 있지만, 결과적으로 같은 행위를 수행한다.
마찬가지로, x86 ISA와 MIPS ISA는 표현법은 다르지만, 같은 의미를 가진 명령어 집합입니다.
</aside>
→ 추상화를 사용하는 이유와 이어집니다
<aside> 💡 추상화를 사용하는 이유는 공통적이고 반복적인 일을 간소화 하기 위해 사용하며, 복잡한 작업이더라도 세부의 단계로 나눠보면 사칙연산만 남게된다.
</aside>
<aside> 💡 ISA는 추상화의 한 예이기 때문입니다. ISA는 컴퓨터 하드웨어의 복잡한 동작을 간단한 명령어로 추상화한 것입니다.
컴퓨터에서 add를 구현하려면, 레지스터에 비트를 넣고, 비트가 ALU를 통해 연산되고… 복잡하게 구현되지만,
ISA로 그냥 add 로 간단하게만 표현한겁니다.
</aside>
<aside> 💡 또다른 추상화와 ISA 예시로 자동차가 있습니다.
즉, ISA란 추상화된 하드웨어와 소프트웨어간 인터페이스 입니다
프로그래머는 덕분에 기계어로 코딩 안해도 됩니다
</aside>
<aside> 💡 ISA 설계의 목표
성능을 극대화하고 비용을 최소화하면서
하드웨어와 소프트웨어 시스템(컴파일러 및 운영 체제)을
쉽게 구축하는것을 목표로 합니다.
</aside>