CPU 아키텍쳐에 대한 간단한 고찰.
오늘 알아볼 것
- 아키텍쳐란 무엇인가.
- 아키텍쳐 종류별 특징.
열어가는 글(아키텍처란 무엇인가).
아키텍쳐(Architecture)를 나타내는것은 정말 많다.
- 하드웨어에서의 아키택쳐
- 소프트웨어에서의 아키택쳐
- 데이터적인 면에서의 아키택쳐.
-----https://www.ibm.com/kr-ko/topics/data-architecture
데이터 아키텍처란? | IBM
데이터 아키텍처가 수집부터 처리, 분배, 소비에 이르기까지 데이터 관리에 어떤 도움을 주는지 알아보세요.
www.ibm.com
등의 아키택처가 내포하고 있는 뜻은 정말 많다.
여기서 우리가 알아볼것은 하드웨어(CPU)에서의 아키택쳐이다.
아무래도 System & Reversing공부를 할때는 모든 아키택쳐의 정의를 알아가는 것이 중요하지만
지금 시스템, 리버싱공부를 하는데 당장 필요한 지식은 CPU를 나타내는 아키텍쳐다.
cpu가 가지고 있는 아키택쳐가 회사마다 다를 뿐 더러 그로 인해 기계어와 어셈블리어가 달라지기 때문이다.
마이크로 아키텍쳐(Micro Architecture)란?
CPU안에 탑재될 코어들의 위치 또는 캐시메모리 등 구성요소들의 배치를 하기 위한 밑바탕을 의미한다고 한다.
그냥 프로세서의 구조를 짜고, 어떠한 값을 받으면 어떻게 돌아갈건지 설계하는 것이라고 이해하면 될 것 같다.
그 intel i3/i5/i7이 x86-64기반 cpu인데 이 x86-64가 오늘 알아볼 아키텍처의 의미다.
마이크로 아키텍쳐의 종류
크게크게 나누면 RISC / CISC로 나눌 수 있다.
CISC (Complex Instruction Set Computer)
- 복잡하고 많은 종류의 명령어와 주소 지정 모드를 가지고 있는 cpu구조.
- 명령어의 개수 증가에 따라 프로세서 내부 구조가 매우 복잡해지고, 고속으로 작동되는 프로세서를 만들기 어려워짐.
- 주로 개인용 pc, 서버용 cpu로 많이 만들어졌다.
CISC 방식을 사용한 CPU들
Intel
x86
- intel이 1978년에 개발한 인텔 8086부터 시작된 아키텍처.
- 이에 대한 호환 프로세서와 후속작도 포함.
- 16bit에서 시작되어 32bit까지 발전.
- 지금까지 널리 이용된 cpu 아키텍처.
AMD64(x86-64)
- 1999년에 AMD에 의해 발표된 x86의 64비트 확장 아키텍처.
- 막상 AMD사에서 만들고 발표했지만, 인텔도 같이 쓴다.
- 앞으로 많이 쓰일 cpu 아키텍처.
그 외 나머지 회사들.
M68K(모토로라 68000시리즈)
- 모토로라에서 만든 16비트 기반 아키텍처.
- 32bit까지 확장해서 만들어짐.
RISC (Reduced Instruction Set Computer)
- CISC에서 실제로 쓰이는 명령어가 몇개 되지 않는다는 사실을 바탕으로 만들어진 cpu구조.
- 적은 수의 명령어 집합을 가지고 있는 간단 명료한 cpu구조.
- 적은 수의 명령어때문에 같은 내용을 처리하는데 더 많은 코드 용량이 필요하다.
- 주로 모바일 기기, 슈퍼컴퓨터 프로세서로 쓰인다.
RISC 방식을 사용한 CPU들
ARM사의 아키텍처
ARM(Advanced RISC Machine, Acorn RISC Machine)
- 1980년대에 Acorn Computer사에서 자체 설계를 해서 만들어진 cpu 아키텍처.
- 전력을 적게 소모하여 슈퍼컴퓨터에도 사용되는 cpu 아키텍처.
- 나중에 Advanced RISC Machines라는 회사로 빠져 나오고, 애플과 재휴를 맺는다.
- 그냥 정확히 말하자면 RISC방식의 cpu의 제품군이라고 한다. 'arm'에서도 하위종목으로 나뉘는 모양..
AArch64(ARM64)
- ARM에서 정의된 새 64비트 명령 집합 아키텍처. (cpu이지만 인텔 I7-8700처럼의 cpu가 아닌 그냥 x86-64와 같은 결.)
- arm에서의 하위종목.
--
그 외 다른 회사.
RISC-V
- RISC기반의 개방형 명령어 집합.
- BSD 라이센스로 무료로 쓸 수 있게 배포된 신기한 아키텍처
- ARM과 관련없는 RISC 아키텍처.
- MIPS라는 아키텍처가 여기로 이수됨.
PowerPC 시리즈
DEC 알파
----
이 AArch64등을 사용한 시리즈.
ARM Cortex-M/R/A (intel I3/I5/I7과 결이 같은)시리즈
- SoC(System on a Chip)형태로 되있고, 그 안에 cpu를 담당하는 칩.
- 퀄컴 스냅드래곤등에서 쓰임.
나중에 저 SoC안에 있는 칩들중에 버퍼 오버플로우와 같이 그런 종류의 취약점이 발견되지 않을까? 하는 상상중..
번외편. (지금은 거의 안쓰이는 아키텍처)
EPIC (Explicity Parallel Instruction Computing)
- 여러 명령어를 병렬로 실행 가능한 CPU구조.
- Intel에 의해 개발되고, RISC + VLIW조합으로 구성됨
VLIW? -> 여러가지 독립적인 연산 여러개가 하나의 명령어에 들어가 있는 구조.
EPIC 방식을 사용한 CPU들
Intel ITANIUM 시리즈
...
글을 마치며
위와 같이 아키텍처가 무엇인지, 그 아키텍처의 종류별 특징에 대해 알아보았다.
이번 아키텍처에 대한 글을 쓰는중 순간 인지부조화가 왔다.
intel i5이야기가 나온이유가 위에 쓴 이유였다..
그리고 x86, m68k, arm, risc-v등의 아키텍처를 알아보고나서 이 아키텍처에서 쓰이는 '명령어'가 다르다는걸 알았다.
즉, 각 아키텍처의 구분은 cisc와 risc이고, 그 2가지 아키텍처는 서로다른 명령어를 가진다는것을 알게 되었다.
cisc와 risc의 명령어를 비교하자면
cisc는 4 * 7 = 21와 같이 명령어가 많은 만큼 단축해서 쓰거나 빠르게 로딩이 가능한 환경이라면,
risc는 4+4+4+4+4+4+4와 같이 명령어가 적은 대신, 이걸 다 계산해야되서 느리다는걸로 이해했다.
그래서 나중에 취약점을 찾을때 쓰이는 명령어를 서로 다르게 알아야 하는것을 알 수 있었다.
출처 및 참고 -
https://linsaeng.tistory.com/35
아키텍처(Architecture)란?
안녕하세요 린생입니다. 개발을 이제 막 시작한 입문 개발자인 제가 갑자기 Architecture(아키텍처)라는 것이 궁금해졌습니다. 다들 "Architecture(아키텍처)가 뭐야?" 라고 하면 잘 설명을 할 수 있나요
linsaeng.tistory.com
https://velog.io/@yeongori/%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%9E%80
아키텍처란?
아키텍처는 무엇인가? 소프트웨어 분야에서 이 단어가 무엇을 의미할까?
velog.io
마이크로아키텍처 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 인텔 코어 마이크로아키텍처. 마이크로아키텍처(microarchitecture) 또는 CPU 아키텍처는 컴퓨터 공학에서 컴퓨터의 CPU 또는 이와 관련된 디지털 신호 처리기의 전자
ko.wikipedia.org
CPU Architecture 아키텍처란 무엇일까
시스템의 설계방법 이나 설계 원리 또는 구축 된 시스템의 구조의 틀을 아키텍처라 하며 아키텍처란 원래 건축 분야에서 설계사상 또는 건축 양식의 의미를 담고 있었지만 IT분야에서 IBM이 최초
crone.tistory.com
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ytghandsome&logNo=100065632980
Risc와 Cisc의 차이점
CISC(Complex Instruction Set Computer) 인텔의 8086은 16비트 프로세서로, 명령어의 길이가 1바...
blog.naver.com
https://cooling.tistory.com/19
[운영체제] 4. CISC와 RISC
CISC와 RISC ① CISC(Complex Instruction Set Computer) 1. 복잡한 명령어 집합을 가지고 있는 CPU 구조. 2. 명령어의 개수 증가에 따라 프로세서 내부 구조가 매우 복잡해지고, 고속으로 작동되는 프로세서를
cooling.tistory.com
https://xetown.com/topics/1531860
헷갈릴수 있는 리눅스 아키텍처(부제: AMD64는 AMD 전용 아키텍처일까)
리눅스를 설치하거나 유지보수하다보면 여러 아키텍처 이름을 접하곤 합니다. i386, i686, x86, x86_64, amd64, arm, armv7l, arm64, mips, 등등... 상당히 많은 아키텍처가 있죠. 아마 이중 몇몇개는 익숙하실겁
xetown.com
왜 32비트 환경을 x86이라고 하는걸까요?> | KLDP
64비트 환경은 x64 라고 하는데 왜 32비트 환경을 x86이라고 하는지 궁금하네요..
kldp.org
https://www.redhat.com/ko/topics/linux/what-is-arm-processor
ARM 프로세서란?
ARM 프로세서는 RISC(Reduced Instruction Set Computer) 아키텍처 기반의 중앙 처리 장치(CPU) 제품군입니다. ARM은 Advanced RISC Machine의 약어입니다.
www.redhat.com
ARM Cortex 시리즈에 대해 알려주세요
ARM Cortex 시리즈는 ARM11 이후에 나온 시리즈로 모든 ARM 시리즈 중 가장 잘나가는 시리즈이다. 역대 ARM 시리즈에 대한 정보는 아래에서 확인할 수 있다! ARM 아키텍처의 역사 ARM Cortex-M3 시스템 프로
phil-baek.tistory.com