i7 6700을 사용중에 있습니다. 최근에 성능에서 무언가 발목잡히는 듯한 느낌이 들어 이번에 CPU를 왕창 올려보고자 합니다. 그런데 막상 올리려고 하니 좀 걸림돌이 있더라구요.
이번학기 학교 수업에서는 버츄얼박스를 이용해 리눅스의 소스를 들여다보게 됩니다. 그 와중에 하드웨어 인터럽트 레벨까지 내려가서 공부하는 경우도 많구요. 이때 C / C++이 아닌 .S 즉 어셈블리 코드를 가끔 보게됩니다 (...)
문제는 CPU가 바뀔때 어느정도까지 이게 어느정도까지 바뀔지가 예측이 안되더라구요. 혹여나 이러한 코드에서 변화가 생겨서 갑자기 보고서 전체를 뜯어고쳐야 한다던가 (...) 그런 불상사가 생기지 않을까 걱정입니다. 인텔과 AMD의 코드가 좀 다르지 않을까 하는 걱정도 앞서고 있구요.
또, 현재 도커와 MySQL도 돌리고 있습니다. 도커와 MySQL자체는 운영체제 레벨이라 착착 붙어서 돌아갈 것 같지만, 혹시라도 뭔가 문제가 생길 여지가 있을까요?
CPU는 현재 라이젠과 인텔중 고민중에 있습니다. 아무 문제가 없다는 확신이 들어야 움직일 것 같아서요.
단, 인텔 칩과 AMD 칩에서 "최적의" 루틴은 다를 수 있겠습니다. 그리고 컴파일러가 이를 고려해서 컴파일을 다르게 하는 것도 가능은 합니다. 그래서 이미 컴파일 된 명령을 들고 오는 게 아닌 C언어로부터 새로 컴파일을 할 경우 빌드 플래그과 환경에 따라서는 뭔가 바뀔 가능성이 있기는 한데요. 근데 뭐 설정으로 대부분 해결가능한 부분이고 기본적으로는 x86은 그게 그놈이라고 보시면 됩니다.
그리고 둘 다 사람이 만든 물건인 만큼 두 회사의 제품이 100% 호환되는 건 아니고 야악간의 명령어 차이나 호환성 차이가 있을 수는 있는데, 뭐 대부분의 상황에서 크게 유의미한 차이는 아닙니다. 애초에 그게 그렇게 큰 차이가 나면 당장 윈도우부터 안켜지겠죠..
덧붙여서 같은 C 코드로부터 같은 기계어 명령어가 나오게 하는 것을 reproducible build라고 합니다.