먼저 밑에서 전문용어 떡칠만 해놓고 설명을 안해놔서 저게 소린가 싶은놈들 있을텐데 용어부터 짚고 넘어가자


* PCIe : 컴퓨터 내에서 전반적인 데이터가 오고가는 속도와 대역폭을 규정하는 국제 표준 규격임. 너희들이 사용하는 컴퓨터는 라이젠2 3000번대의 X570 아니면 전부 PCIe 3.0 규격이고, X570 보드 이상부터 PCIe 4.0, 서버나 메인프레임 등에 쓰이는 PCIe 5.0 정도



PCIe 무슨 역할을 하는데 그래서? 이게 뭐누?


커다란 마을 하나를 상상해봐라. 거기에 여러 주민이 살고있고 여러 시설도 있을거아님? 주민센터같이 총괄지휘하는 , 인력센터처럼 일손 챙겨서 작업나가는 , 쉼터, 시설이 여러개가 있을거아니냐? 근데 시설 간에 거리가 떨어져 있다고 생각하면 편하다 거리가 떨어져있는 만큼 마을 내에 있는 도로들로 연결되어 있겠지? 도로의 폭과 거기를 다닐 있는 최대속도를 규정하는게 바로 PCIe . PCIe 버전이 높을수록 도로가 넓어지고 번듯하게 정비되고 (대역폭 한계가 확장되고) 다닐 있는 차량의 최대 속도도 훨씬 빨라진다 ( 전송속도 향상


PCIe 레인이 몇개니, 채널이 몇개니, 배속이 얼마니 하는 것들은 쉽게 비유하면 고속도로를 생각하면 된다

PCIe 레인은 x1, x2, x4, x8, x16 등으로 표기하는데, 뒤의 숫자가 차선 수라고 생각하면 된다. 당연히 1차선보단 4차선이 많은 차가 다니고, 16차선이 8차선보다 많은 차량이 빠르게 오다닐 있겠지? 이게 대역폭의 차이임. 반대로 배속의 경우는 다니는 속도라고 생각해. 100KM 도로보다 200KM 도로가 당연히 빨리 다닐 있듯이, 배속은 그만큼 속도를 가속시킨다는 뜻임

물론 PCIe 라는게 물리 하드웨어에 종속되는만큼 무한하진 않아서, 한정된 레인 수를 각각의 하드웨어에 분배하고 대역폭을 거기서 쪼개 먹어야 한다. 예를 들면 그래픽카드를 하나 꽂았을때는 CPU에서 온전히 할당된 x16 레인으로 동작하지만, 그래픽카드를 꼽았을때는 16레인이 반으로 나눠져 각각에 8레인씩 할당되는거임. GPU, 저장장치, USB 등이 PCIe 레인을 차지하고 규격 위에서 동작함

그리고 PCIe 레인 자체를 CPU에서 할당하는게 있고 메인보드 칩셋에서 제공하는게 있는데 이건 그냥 시퓨도 이걸 주고 칩셋도 이걸 주는구나 하는 개념 정도로만 생각하고 넘어가라...이거까지 깊게 설명하면 존나 복잡한 하드웨어 설명글됨. 그리고 CPU 칩셋 종류에 따라서도 제공하는 레인의 갯수나 분배 방식이 달라질 있음. 그래서 이렇다! 아니라 이런 개념이구나 하고 넘어가는게 좋다...

말하자면 그래픽카드 1 NVMe m.2 SSD 개가 물려져 있다고 하면 그래픽카드에 8레인, NVMe 쪽에 8레인을 반으로 쪼갠 4레인+4레인 으로 8 + 4 + 4 구성일수도 있고

반대로 칩셋이 2개의 레인을 한쪽 NVMe 에서 빼버려 반쪽짜리 성능으로 동작하게 만드는 8 + 4 + 2 라는 황당한 구성이 나올수도 있음. 이건 정말 칩셋 제조사별로 달라서 그냥 대역폭을 장치를 달면 달수록 지들끼리 쪼개먹는구나~ 성능이 그래서 반토막 되는구나~ 정도로만 알아두셈.


다시 밑글에서 다룬 걸로 돌아와서, PCIe 이제 무슨 개념인지는 이해했을거라고 믿음. 근데 이게 SSD 무슨 관계가 있느냐? 어마어마한 관계가 있음. PCIe 4.0 규격으로 동작하는 플스5 SSD 12레인을 쳐먹는다. 일반적인 CPU 경우 GPU에만 16레인을 할당하고 NVMe 같은 추가 레인 할당장치가 있는 경우 16레인 안에서 쪼개서 할당하게 되는데 GPU에만 할당되도 모자른 콘솔 하드웨어에서 NVMe 레인 + CPU 성능부하가 빠진다 = 게임 퍼포먼스 저하라는 수직적인 결과로 이어진다

그래서 플스5 다소 특이한 방식으로 문제에 접근했음

밑에서 설명한대로 입출력 프로세서를 오로지 SSD 제어 전담마크용으로 때려박은거임. 입출력 장치 + CPU 프로세서 ㅇㅋ?

SSD 포함한 모든 저장장치와 GPU, 컴퓨터 전반의 제어는 CPU 담당하는데 여기서 SSD 관련 내용을 빼서 전담 프로세서에 맡기고, Zen2 8C 16T 메인 프로세서는 게임 성능용으로 굴리는 구조라는 . 이게 보통 서버 장치에서 막대한 작업량 때문에 프로세서를 여러개 붙여놓고 각각 작업에 할당하는 방식인데 플스5 서버 하드웨어 방식을 벤치마킹한거임.

입출력 프로세서는 9코어 제품이고, 9코어가 오로지 SSD 데이터를 기록하고 데이터를 관리하고 필요할 데이터를 빠르게 내보내고 압축을 푸는 일련의 모든 과정을 도맡아 . 덕에 플스5 메인 CPU 게임에 필요한 데이터를 로딩할때 PC에서 흔하게 볼수있는 CPU 미칠듯한 점유율 상승이나 오버헤드 현상을 겪을 필요가 완전히 사라짐. 온전히 게임 퍼포먼스 용으로 8코어 16스레드라는 강력한 자원을 활용할 있게 거지.

그러면서도 12레인이 할당되어 8GB/s 라는 속도로 데이터를 뿜어낼 있으니 플스 개발자 입장에서는 어떤 게임을 만들때 더이상 데이터 로딩에 걸릴 시간을 의식해 레벨을 짜지 않아도 되고, 이게 게임의 구조에 있어 변화를 가져올거라는게 플스 5 SSD 핵심 내용이라고 있다.



반대로 엑박은 밑에서 설명한대로 데이터 압축/해제에 필요한 프로토콜 자체를 재설계했고, 하드웨어를 하나 추가하기보단 기존에 들어가있는 하드웨어의 성능을 극효율적으로 써먹는데 집중함. 사실 하드웨어가 암만 좋아도 구형 프로토콜을 쓰는 이상 압축 /풀기 시에 걸리는 막대한 CPU 부하를 피할수는 없다. 니네가 9900K / 3950X 같은 하이엔드 데스크톱 프로세서를 쓰더라도 게임 로딩 중에 CPU 점유율이 90% 넘게 치솟고, 로딩 중에 심하게 컴퓨터가 버벅여지는 바로 윈도우가 엄청 구형 프로토콜을 10까지 이어서 계속 쓰고있기 때문임

자원은 넘치지만 자원을 돌리는 프로그램이 엄청 비효율적인 셈인데, 마소는 아예 윈도우에서 쓰는 구형 프로토콜까지 대체할 계획으로 프로토콜을 짰고, 알려진 결과에 따르면 싱글 CPU 코어로 데이터 로딩 시의 압축 해제 과정에 해당 싱글코어의 10% 내외 자원만 사용했을 정도로 미친 효율을 뽑아내는데 성공함. 구태여 9코어 프로세서를 별도로 달지 않아도, 있는 CPU 코어 1 여유자원 정도로도 거대한 데이터 압축작업을 처리하 있게 .


작업을 처리할 하드웨어를 추가해 해결했는가? vs 하드웨어를 제어하는 프로토콜을 개선해