현대 CPU 구조는 순차적/비순차적 슈퍼스칼라 또는 VLIW 구조로 파이프라인이 1개가 아니라 N개 임.
여기서 순차적 슈퍼스칼라/VLIW만 먼저 보자고.

VLIW나 슈퍼스칼라는 한번에 N개의 명령어씩 N개의 파이프라인을 채워줘야함. 슈퍼스칼라는 하드웨어 단에서 런타임에 코드를 병렬 스케쥴링 해줄수 있지만 window(스케쥴링할때 얼마나 뒷 코드들을 볼것인가 하는 범위) 사이즈에 따라 최적화 여지가 떨어지니 어쨌든 둘다 병렬적으로 채워줄 코드들의 스케쥴링을 컴파일타임때 어느정도 해줘야함.

하스켈은 pure functional 하니 다른 언어랑 달리 각 람다/함수마다 슬롯 하나씩 배정한다고 생각하면 되자나

실제 시피유 구조처럼 각 파이프라인이 가지고 있는 연산장치(FU) 종류가 다르다고 해도 대충 1~몇 안되는 사이클 동안 수가 부족한 연산장치 쓰는 어셈블리 코드들에 대해 스케쥴링 시켜주면 되니까

조금 더 최적화 하자면 함수 나 람다 수가 파이프라인 수보다 적은경우는 비는 장치에는 그 함수나 람다 내에서 지금까지의 언어들이 그랬던거처럼 ILP(명령어 수준 병렬성) 찾아 트레이스 스케쥴링 해주면 되고. 이래도 C 같은 언어들에비해 스케쥴러에 걸리는 부하가 월등히 적음 ㅇ

만약 비순차적 이라면 하스켈을 사용했을때의 장점이 CPU가 런타임에 비순차적으로 코드를 실행 할 수 있음으로 조금은 희석되지만 이득을 보는건 하스켈도 마찬가지고 어쨌든 아까 말한대로 비순차적 실행도 윈도우 사이즈에 한계가 있으므로 어쨌든 잘 짜여진 컴파일 시간 정적 스케쥴링의 도움이 있으면 좋음.

한줄요약 : 하스켈같은 순수함수형 언어가 현대 CPU에서 스케쥴링 하기 좋다.