컴퓨터 구조로 알아보는 프로세스 친화

2019. 5. 9. 19:59임베디드/리눅스시스템프로그래밍

개발하는 소프트웨어가 컴퓨터 시스템 상에서 동작하기 때문에 이를 잘 알아야 성능이 좋은 소프트웨어를 작성할 수 있다

 

 

코어 = CPU, 독립적인 레지스터, ALU, Component로 구성되어 있다 최근 프로세서는 다중 코어로 만들어진다. 그리고 Multi-thread는 Hyper-Threading 기술을 이용해 하나의 코어를 논리적으로 2개의 쓰레드로 나눈 기술이다

프로세서와 프로세서간의 입출력 프로토콜은 QPI(QuickPath Interconnect)을 사용한다. 하나의 프로세서에서 다른 프로세서의 메모리를 참조하려고 할 때 QPI 프로토콜을 이용해서 이동하지만 여러 장치들이 이 프로토콜을 사용하기 때문에 Latency 문제가 생기게 된다. 따라서 장치마다 처리에 좀 더 원할한 프로세서에 붙여놓는 것이 소프트웨어 개발자가 해야할 일이다.

 

하나의 프로세서에는 여러 코어가 있고 각 코어마다는 L1, L2, 캐시를 가지며 L3 캐시는 모든 코어의 공유 캐시로 사용된다. 캐시는 레벨이 작을수록 용량이 작은 대신 코어 접근 속도가 빠르다. 따라서 어떤 코어가 가지고 올 데이터가 같은 프로세서 안에만 존재해도 상당히 빠른 속도로 가져올 수 있다. 따라서 프로세서 바깥에서 데이터를 가져올 땐 캐시의 이득을 보지 못하게 된다

 

 

 

'임베디드 > 리눅스시스템프로그래밍' 카테고리의 다른 글

pthread_create  (0) 2019.05.12
지정한 CPU에서 프로세스 동작  (0) 2019.05.09
main의 argv 첫번째 인자  (0) 2019.05.09
exit와 _exit의 차이  (0) 2019.05.09
자식 프로세스의 메모리 공간  (0) 2019.05.09