"제 CPU의 FSB는 800MHz입니다. 제 메모리의 FSB는 400MHz인데 괜찮을까요?"
"제가 듣기로 AGP의 FSB는 66MHz이고 PCI의 FSB는 33MHz라고 하던데요."
최근 여러 하드웨어 관련 질문을 보면 FSB를 위와 같이 "버스대역폭" 정도의 의미로 사용하는 경우가 많은듯 합니다. 이런 잘못된 용어의 사용은 비단 하드웨어 초보자들 뿐만 아니라 각종 하드웨어 잡지나 전문 사이트, 혹은 업체와 같이 전문적인 정보를 다루는 곳에서도 종종 이루어지고 있습니다.
FSB(Front Side Bus)란 용어에서 보듯이 엄연한 특정 버스(Bus)의 명칭입니다.
보다 정확히 설명을 하자면, CPU의 L2캐쉬에서 메인메모리에 이르는 버스를 지칭하는 용어입니다.
FSB는 BSB(Back Side Bus)에 대비되는 개념으로서, 말하자면 CPU가 연산에 필요한 명령어와 데이터를 메인메모리로 부터 가져오는 전체 버스를 CPU를 기준으로 Back-side와 Front-side로 나누어 놓은것으로 이해하면 되겠습니다.
따라서 "제 CPU의 FSB는 800MHz"라는 일반적인 용어사용에서도 문제가 있다고 할 수 있습니다. FSB는 어떤 "동작클럭"을 나타내는 용어가 아니며, 정확한 쓰임으로 사용하려면 "제 컴퓨터의 FSB클럭은 800MHz"정도로 사용하는 것이 옳겠습니다.
2. FSB의 개념의 변화
FSB라는 버스의 개념은 사실 어떤 특정한 기능을 하는 버스나 특정한 역활을 하는 버스라기 보다는 CPU의 코어(Core)와 메모리간의 데이터 이동경로를 CPU를 기준으로 나누어 놓은 위치상의 개념이라 할 수 있습니다. 따라서 우리가 FSB라는 용어를 어떻게 쓰건 "CPU외부에서 메인메모리로 이어지는 버스"라는 개념 자체는 유지되겠습니다만, 메인메모리의 형식이 변화하고 클럭분배방식의 변화에 따라 우리가 편의대로 자주 사용하는 "FSB(혹은 FSB클럭)"라는 용어는 원래의 개념보다 다소 축소된 특정 버스만을 지칭하게 되었습니다.
오늘날 우리가 "FSB"라고 부르는 것은 원래의 개념이야 어떻게 되었건 CPU에서 ASIC(앞의 그림에서 보다시피, 오늘날 메인보드에서 North Bridge, 혹은 (G)MCH라고 부르는)사이의 버스, 즉 CPU의 외부버스에 국한되는 개념이 되었습니다.
FSB를 좀더 세분화해서 본다면, CPU와 ASIC간의 외부버스와 ASIC와 메인메모리간의 메모리 버스로 나누어 볼 수 있습니다.
메모리 버스와 외부버스의 관계가 보다 대등해지고 밀접해지게 된, SDRAM이 메인메모리로 자리잡게 된 이 후의 시스템을 예로 들어 살펴보겠습니다.
최초 등장한 방식은 CPU 외부버스의 동작클럭과 메모리 버스의 동작클럭이 동일한 동기방식 버스구조였습니다.
위그림과 같이, 동기방식의 대표격인 440BX칩셋을 예로 들어보겠습니다.
펜티엄2(데슈츠코어)와 440BX칩셋(82443 노스브리지칩), 그리고 PC-100 sdram을 조합한 시스템의 경우, CPU와 ASIC간의 외부버스의 동작클럭은 클럭제네레이터(Clock Generator : 클럭발생기)의 호스트클럭(Host Clock)으로 100MHz를 공급받게 됩니다. 그리고 메모리 버스의 경우, 호스트클럭의 1/1로 클럭디바이딩(Clock Dividing : 호스트 클럭의 특정 비율로 클럭을 조율)되어 마찬가지로 100MHz를 공급받게 됩니다.
따라서 이 경우, 호스트클럭(즉, 외부버스클럭)과 메모리 버스 클럭은 동일한 100MHz이므로, FSB클럭이라고 지칭하는 경우 외부버스클럭과 메모리버스클럭 모두를 지칭할 수 있었습니다.
동기방식구조 : 호스트클럭 = 외부버스클럭 = 메모리버스클럭 = FSB클럭
하지만 오늘날의 대부분의 메인보드의 경우, 더이상 위와 같은 동기방식구조는 적용하고 있질 않습니다.
즉, 대부분의 경우 CPU의 외부버스클럭과 메모리버스클럭을 반드시 맞추어줄 필요가 없다는 것입니다. 하나의 CPU에 다양한 메모리 조합이 가능하며, 이와 같은 경우 더 이상 "호스트클럭 = 메모리버스클럭" 이라는 등식은 성립하지 않게 되었습니다.
비동기방식구조 : 외부버스클럭 ≠ 메모리버스클럭
그럼 이 경우, FSB클럭은 어떤 버스에 맞추어야 할까요. 가령 166MHz버스클럭을 사용하는(데이터레이트는 333MHz) AMD의 Barton을 이용하는 사용자가 PC-3200 DDR-sdram(클럭 200MHz, 데이터레이트 400MHz)을 사용한다고 가정해봅시다. 이런 경우 외부버스클럭과 메모리버스클럭은 같지가 않습니다.(166 ≠ 200)
최근 유저들이 주로 사용하는 "FSB"는 이 경우 CPU의 외부클럭이나 데이터레이트를 지칭하고 있습니다. 즉, "Barton의 FSB(클럭)은 333MHz다"는 식으로 말이죠.
이상과 같은 개념에서 볼때, 맨처음에 언급한 잘못된 용어사용의 예인 "제가 듣기로 AGP의 FSB는 66MHz이고 PCI의 FSB는 33MHz라고 하던데요."와 같은 사용은 전혀 개념에 맞지 않는 말이란 것을 알 수 있을 것입니다. AGP버스의 동작클럭은 AGP(버스)클럭, PCI버스의 동작클럭은 PCI(버스)클럭이라고 부르는 것이 옳겠지요. 아무곳에서나 FSB라는 말을 쓰는것은 맞지 않습니다.
이런 경우 메모리에 대해서도 "PC-3200 DDR메모리의 FSB는 400MHz다"라고 하는것은 옳지 않은 사용법이라고 하겠습니다. FSB는 CPU를 기준으로 한 버스의 구분으로서, ASIC에서 메모리에 이르는 버스의 경우 메모리버스로 한정짓는 것이 옳습니다. 즉, 이러한 경우 "PC-3200 DDR메모리의 클럭은 400MHz다"라고 말하는 것이 맞겠습니다.
FSB란 프론트 사이드 버스(Front Side Bus)의 약어로 CPU와 메인 메모리간의 데이터 전송 통로를 말하며 CPU의 외부클럭과 같은 의미로 많이 사용됩니다. 보다 정확히 말하면 CPU와 칩셋의 노스 브리지간의 전송 속도를 말합니다. 예를들어 400MHz FSB라면 CPU에서 노스 브리지까지 400MHz의 버스 속도가 나오게 됩니다. 그리고 메모리 클럭이 266MHz라면 다시 노스 브리지에서 메모리는 266MHz의 버스 속도를 내게 되는 것입니다.
일반적으로 FSB가 높으면 당연히 시스템 속도도 빨라지지만 무조건 그런것은 아닙니다. 위와 같이 CPU - 노스 브리지 - 메모리로 이어지는 데이터 전송 관계에서 FSB에 비해 메모리 클럭이 떨어지면 병목현상이 일어나게 되는 것입니다. 예를들어 비교하면 CPU에서 노스브리지 까지는 폭 40.0m의 넓은 도로가 나있는데, 노스브리지에서 메모리로는 26.6m 폭의 도로로 좁아진다는 뜻입니다. 아무리 FSB가 높아도 메모리 전송 클럭이 이를 받혀주지 못하면 병목현상으로 시스템이 제 속도를 낼 수 없게 됩니다.
최근 나오는 펜티엄 4 프로세서를 보면 FSB가 800MHz 정도로 높은 편이며 차세대 프로세서에서는 1,066MHz의 보다 높은 FSB를 지원할 예정이라고 합니다. 하지만 현재 메모리는 주로 DDR SDRAM이 사용되며 시중에 나와있는 메모리들은 클럭이 높은 제품들이 500MHz(PC4000 DDR SDRAM), 566MHz(PC4600 DDR SDRAM) 정도입니다. 실제 보급이 많이 된 메모리들은 더 낮은 클럭인 266/333/400MHz급 제품들이 대부분입니다. 실제로 위와 같은 메모리 속도의 한계 때문에 많은 PC들이 제 속도를 못내고 있는 것이 사실입니다. 그래서 이런 한계를 극복하기 위해 새로운 기술들이 등장하고 있습니다.(물론 FSB와 메모리 대역폭을 최고로 사용하는 경우가 많지 않기 때문에 체감상 속도 저하를 느끼기는 어렵습니다.)
만약 800MHz FSB의 펜티엄 4 CPU와 메인보드에 400MHz 클럭의 PC3200 DDR SDRAM을 사용하게 되면 메모리 속도가 FSB의 절반에 불과하기 때문에 위에서 예로들었던 병목현상이 나타나게 됩니다. 이를 해결하기 위해 듀얼 채널이 사용되는데, 듀얼 채널은 동일한 메모리 2개를 동시에 장착하여 클럭을 2배로 높이는 기술입니다. 400MHz의 DDR SDRAM 2개를 장착하면 FSB와 같은 800MHz 클럭으로 동작하는 것입니다.
물론 보다 고속의 메모리를 사용하면 근본적이고 간단한 해결방법이 되긴 합니다. 현재도 DDR SDRAM에 비해 훨씬 빠른 클럭을 가지고 있는 램버스 DRAM이나 DDR2 메모리 등이 있지만 보급률 등 시장 상황과 지원 칩셋의 부재 등으로 아직 제대로 보급되지는 않고 있습니다. 램버스 DRAM은 현재까지는 DDR SDRAM과의 경쟁에서 밀려나 점유율이 낮은 편이며, DDR2 메모리는 시장 진입 초기 상태로 차기 시스템에서 많이 사용될 예정입니다.
P4 FSB 800MHz = 200MHz x 4 (쿼드 펌핑)
펜티엄3 이전의 CPU들이 불과 133MHz 이하의 외부 클럭이었던데 비해 최근의 CPU들은 FSB가 훨씬 높아진 것이 특징입니다. 이는 대역폭을 늘리기 위해 사용한 쿼드 펌핑(Quad-Pumped)이라는 기술 때문인데 이는 한번에 신호를 4개씩 전송하여 동작속도를 4배로 높이는 방법입니다. 펜티엄4에서는 위와 같은 쿼드 펌핑이 사용되며 AMD 애슬론XP+ 에서는 속도를 2배로 높여주는 더블 펌핑(Double-Pumped)이 사용됩니다. 애슬론XP+가 펜티엄 4에 비해 FSB가 많이 낮은 것은 이런 이유 때문입니다. 800MHz FSB의 펜티엄4나 400MHz FSB의 애슬론XP+나 실제 클럭은 200MHz로 훨씬 낮습니다. 예를들어 533MHz의 FSB를 가진 펜티엄4는 베이스 클럭이 133MHz입니다. 반면 333MHz FSB인 애슬론XP+라면 166MHz가 기본 클럭이 됩니다. 외부 클럭은 펜티엄4가 높지만 베이스 클럭은 애슬론이 더 높은 것으로서 동일 CPU 클럭의 펜티엄4에 비해 애슬론XP+의 성능이 높은 이유 중 하나가 됩니다.
(AMD는 신형 애슬론 64에 적용한 하이퍼트랜스포트라는 새로운 기술을 사용해 FSB를 1GHz까지 높이고, 칩셋을 통하지 않고 CPU와 메모리를 직접 연결시켜 데이터 전송을 보다 원활히 지원합니다.)
FSB의 클럭을 높이기 위해 쿼드 펌핑이나 더블 펌핑등의 기술이 사용되는 것 처럼 메모리 역시 기본 클럭을 높이기 위해 위에서 예로 든 듀얼 채널과 같은 기술이 사용되고 있습니다. 현재 가장 많이 사용되는 DDR SDRAM 역시 SDRAM을 기본 바탕으로 해서 DDR(Double Data Ratio) 기술에 따라 한번에 2개의 신호를 보내는 방식입니다.
참고로 메모리 네임의 숫자과 대역폭에 대해 보면 PC3200 DDR SDRAM은 400MHz 클럭으로 동작하는 메모리로 이름 앞의 숫자 3200이 대역폭을 나타내고 있습니다. 즉 3.2GB/s의 대역폭을 가지고 있다는 의미입니다. 대역폭은 최대 이동할 수 있는 데이터량으로 FSB x 8을 하면 간단히 계산할 수 있습니다.(정확히 말하면 FSB 클럭 x PCI 버스 폭 32비트 x PCI 버스 수 2 / 바이트의 비트 값 8 입니다. 32 x 2 / 8 = 8 이므로 FSB에 8을 곱하면 대역폭이 나오게 됩니다.) 400MHz의 펜티엄M 프로세서라면 400 x 8 = 3.2GB/s의 대역폭을 갖게 됩니다.
*** FSB에 대해 확실한 개념이 잡히지 않아 차례대로 질문드립니다.
FSB란 외부버스로 CPU가 보드를 통해 램과 통신하는 '외부통로'이며
BSB란 내부버스로 CPU와 L2캐시 사이의 CPU의 '내부통로' 인데...
1. 400 Mhz 의 FSB를 가지는 cpu를 생각해볼때,
그리고 그 대역폭을 계산하면,
400 Mhz * 8 Byte (64bit) = 3.2 G/s 가 되지요..
이것은 cpu 버스방식이 64bit 방식이라 저렇게 계산해주는걸로 알고 있는데...
이 64bit 방식이 BSB, 즉 cpu 내부에서의 대역폭에서도 적용이 되는지..?
아니면, cpu 내부는 다른 방식의 버스를 쓰는지?
그리고, 다른 방식의 버스를 쓴다면 어떻게 FSB와 BSB의 균형을 맞추는지..?
가령, BSB는 32bit 버스방식을 쓴다면, 같은 클럭에서 대역폭이 외부버스에서보다
1/2 이 되어 cpu 자체에서 병목현상이 발생하지 않을까요?
외부로 데이타를 전송해줘야 하는데 내부에서는 데이타 처리량이 단위시간당 절반밖에 못미치므로..
(물론, 이건 만약 FSB 와 BSB에서의 버스방식이 서로 틀린 경우 여쭙는겁니다...
둘다 똑같은 버스방식을 쓴다면 질문 무시하세요~~^^)
저는 당연히 FSB와 BSB 에서의 대역폭이 같게끔 cpu 가 설계되었을 것이다라는 가정으로
* FSB는 MCH(노스브릿지)와 CPU간의 통로구요 BSB는 L2캐쉬와의 내부통로입니다
FSB - Front Side Bus
※ 일반적인 경우에 대해서만 설명드리겠습니다.
예외 중 하나는 하이퍼트랜스포트를 사용하는 AMD 64계열과 같은 것입니다.
1. FSB는?
FSB는 CPU와 노스브릿지 간의 버스 혹은 그 버스의 동작주파수를 말합니다.
버스라는 것은 통로라고 이해하시면 되고 노스브릿지는 보드에서 CPU,RAM,AGP 등의 장치들을 관리하는 칩입니다.
2. FSB , 메모리 버스의 초간단 블럭다이어그램
일반적인 경우의 구조는 간단하게 아래와 같습니다.
CPU <=> 노스브릿지 <=> 메모리
이 때 앞쪽의 버스(<=>)를 FSB라고 이해하시면 됩니다. 즉 CPU와 노스브릿지 간의 통로 뒤쪽의 버스는 메모리 버스(<=>)라고 이해하시면 되고요 즉 노스브릿지와 메모리 간의 통로
3. FSB와 메모리 버스 간의 관계
FSB와 메모리버스 간 관계에서 실제로 중요한 부분은 동작클럭이 아니라 대역폭입니다. 즉 그 버스에서 초당 얼만큼의 데이터를 처리하는가 하는 점입니다.
예컨데 FSB가 400MHz인 경우의 처리 데이터는 400MHz x 64bit = 25600Mbit/sec 고로 초당 25600 메가비트를 처리합니다.
이것을 바이트(byte) 단위로 바꾸면 8bit가 1byte이므로 25600Mbit/sec x 1byte/8bit = 3200Mbyte/sec 고로 초당 3200메가바이트를 처리하죠.
DDR266 메모리는 동작유효주파수가 266MHz입니다.
(실제 주파수는 133MHz입니다만 DDR 효과에 의해 x 2가 됩니다.)
266MHz x 64bit x 1byte/8bit = 약 2100Mbyte/sec 고로 메모리가 266MHz로 동작 시 메모리 버스는 초당 2100메가바이트를 처리하죠.(PC2100이 이 대역폭을 뜻합니다.)
그러므로 이 경우 FSB와 메모리 버스간의 처리속도가 다르게 되는데(비동기) 그 결과 접점인 노스브릿지에서는 데이터 전송의 병목현상이 생길 수 있고 처리 속도를 모두 3200MB/s로 맞춘 상태(동기화 상태)와 비교하면 성능이 떨어지죠.
(메모리 자체의 처리성능도 떨어지지만 그 뿐만 아니라 버스의 전송능력도 떨어지겠죠.)
그럼 대역폭을 맞추기 위해서는 ? 메모리를 DDR 400(PC3200)으로 달면 됩니다.
400MHz x 64bit x 1byte/8bit = 3200Mbyte/sec 그런데당연한 얘기지만 보드에서 DDR 400 메모리를 지원해야 합니다.
미지원하는 보드라도 DDR 400 메모리를 달 수는 있지만 400으로 동작시킬 수는 없습니다.
이런 것이 아니라 실제로 DDR400 메모리를 달고 400MHz로 동작까지 지원해야죠.
4. 여담
DDR 266을 2개 달면 400보다 높은 것 아니냐고 하셨는데 2개 달아봐야 동작클럭은 266 그대로입니다. ^^;
듀얼채널이라는것을 잠깐 알아보면...
DDR SDRAM으로 공인된 클럭은 DDR400까지입니다.
그런데 FSB 800인 CPU를 출시하다보니 DDR400으로도 대역폭을 일치시킬 수 없습니다.
800MHz x 64bit x 1byte/8bit = 6400MB/s > 400MHz x 64bit x 1byte/8bit = 3200MB/s 그리하여 기존의 64bit로 동작하던 것을 128bit로 동작하게 하여 대역폭을 일치시키는 기술이 듀얼채널입니다. 물론 보드에서 듀얼채널을 지원해야 합니다. 이 듀얼채널을 400MHz 2개를 다니 800MHz로 동작하는 것으로 잘못 아시는 분들도 계신데
듀얼채널은 클럭을 높이는것이 아니고 대역폭을 64bit 단위에서 128bit 단위로 높이는 것이죠. 클럭은 400MHz 그대로입니다. DDR 266을 2개 달면 400보다 높은 것 아니냐고 하셔서 이런 부분에서 잘못된 정보를 듣고 오해하시나 싶어서 적어봅니다. 마지막으로 FSB 800MHz인 인텔 P4 CPU에서 FSB 800이 하이퍼쓰레딩(HT) 때문이라고 하셨는데 HT는 논리적으로 CPU가 듀얼처럼 동작하도록 하는 기술이지 FSB와는 전혀 관계없습니다. FSB 800MHz가 되는 것은 CPU 외부동작주파수가 200MHz고 거기에 QDR(x4)이 되기 때문일 뿐입니다.