System & Reversing

CPU 아키텍쳐에 대한 간단한 고찰.

_방탄유리_ 2023. 3. 12. 05:09

오늘 알아볼 것

- 아키텍쳐란 무엇인가.

- 아키텍쳐 종류별 특징.

 


열어가는 글(아키텍처란 무엇인가).

아키텍쳐(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

https://ko.wikipedia.org/wiki/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

 

마이크로아키텍처 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 인텔 코어 마이크로아키텍처. 마이크로아키텍처(microarchitecture) 또는 CPU 아키텍처는 컴퓨터 공학에서 컴퓨터의 CPU 또는 이와 관련된 디지털 신호 처리기의 전자

ko.wikipedia.org

https://crone.tistory.com/459

 

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

https://kldp.org/node/102650

 

왜 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

https://phil-baek.tistory.com/entry/ARM-Cortex-%EC%8B%9C%EB%A6%AC%EC%A6%88%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EB%A0%A4%EC%A3%BC%EC%84%B8%EC%9A%94

 

ARM Cortex 시리즈에 대해 알려주세요

ARM Cortex 시리즈는 ARM11 이후에 나온 시리즈로 모든 ARM 시리즈 중 가장 잘나가는 시리즈이다. 역대 ARM 시리즈에 대한 정보는 아래에서 확인할 수 있다! ARM 아키텍처의 역사 ARM Cortex-M3 시스템 프로

phil-baek.tistory.com