Tại sao không thiết kế CPU – RAM chung một bảng mạch

Trong các câu hỏi cho vị trí ứng viên quầy chăm sóc khách hàng tại Apple Store, có một câu hỏi rất thú vị: “Giải thích RAM là gì với một đứa trẻ 5 tuổi?

Để dễ hình dung, RAM cũng giống như balo đựng đầy kẹo đeo trên lưng một đứa trẻ 5 tuổi để phát kẹo cho các bạn trong lớp vậy. Thay vì liên tục phải quay về lấy kẹo trong thùng mỗi lần phát hết, đứa trẻ đó có thể lấy kẹo luôn từ trong balo của mình để phát cho các bạn, nhanh hơn và tiết kiệm thời gian hơn.

Nó cũng tương tự như nhiệm vụ của RAM trong máy tính vậy, là nơi đưa dữ liệu cho CPU để xử lý các tác vụ, vì vậy, nó cần phải có tốc độ đọc ghi rất nhanh, do lúc đó tốc độ xử lý của CPU sẽ bị giới hạn bởi tốc độ đọc ghi dữ liệu từ RAM.

Nhưng nếu bạn nhìn vào bo mạch chủ của máy tính, bạn sẽ thấy CPU và RAM dù được đặt rất gần nhau trên bản mạch, vẫn có một khoảng cách nhất định giữa chúng. So với kích thước của mỗi bóng bán dẫn trên các bộ xử lý, khoảng cách này có thể trở nên vô cùng lớn. Vậy tại sao các nhà thiết kế máy tính không đặt CPU và RAM ngay trên cùng một die chíp để có tốc độ xử lý nhanh hơn, khi giảm được khoảng cách giữa chúng?

Bộ nhớ của CPU – bộ nhớ cache

Trên thực tế, bản thân CPU cũng có một vùng RAM riêng được gọi là bộ nhớ cache. Tuy nhiên, nó có chi phí đắt hơn nhiều so với RAM và vì vậy, nó làm giá CPU thường bị đội lên rất cao tùy thuộc vào dung lượng bộ nhớ của nó. Đó là lý do vì sao người ta thường chỉ thấy những bộ nhớ cache với dung lượng vài MB trên các CPU.

Bộ nhớ cache thực sự đã giúp tăng tốc xử lý cho CPU khi tối thiểu hóa thời gian bộ xử lý phải chờ đợi khi đang lấy dữ liệu từ RAM về. Khi cần truy cập vào bộ nhớ, đầu tiên CPU sẽ tìm kiếm trong bộ nhớ cache trước để xem liệu bộ nhớ cache có đọc/ghi giá trị đó gần đây hay không. Nếu cache có giá trị mà bộ xử lý cần, nó sẽ trả lại cho CPU, còn nếu không, bộ xử lý mới tìm đến RAM để lấy được giá trị nó cần – tất nhiên với tốc độ chậm hơn.

Vậy tại sao các nhà thiết kế chip không tăng dung lượng bộ nhớ cache lên, ví dụ ngang với dung lượng RAM để CPU tăng tốc độ xử lý và đơn giản hóa thiết kế?

Để đạt được tốc độ cao như yêu cầu, bộ nhớ cache của CPU sử dụng loại RAM tĩnh hay SRAM. Tuy có tốc độ rất nhanh, nhưng SRAM lại tiêu tốn nhiều điện năng và khá cồng kềnh. Để lưu trữ một “bit” dữ liệu, nó cần đến 6 bóng bán dẫn, và mỗi “byte” dữ liệu lại chứa đến 8 bit.

Nghĩa là nếu có thanh SRAM dung lượng 1 GigaByte (GB), nó sẽ phải chứa đến 48 tỷ bóng bán dẫn – một con số khủng khiếp nếu so với số lượng bóng bán dẫn trên CPU – ngay cả bộ xử lý Broadwell-E 6 lõi Core i7-3960X của Intel cũng chỉ có 2,27 tỷ bóng bán dẫn, và nó cũng chỉ có bộ nhớ cache 15 MegaByte (MB) mà thôi.

Như bạn thấy hình vẽ mô tả về bộ xử lý máy tính ở trên, trong khi các bộ xử lý đều có kích thước giới hạn, các mạch tích hợp của bộ nhớ lại rất phức tạp và tốn nhiều không gian. Vì vậy, nếu bạn tăng kích thước bộ nhớ cache trên chip lên, bạn sẽ không còn nhiều không gian để đặt CPU của mình vào trong đó nữa. Với kích thước hạn hẹp như trên, không lạ vì sao bộ nhớ cache trong bộ xử lý thường chỉ có dung lượng vài MB mỗi chip.

Một trở ngại khác của việc gia tăng dung lượng bộ nhớ cache là chi phí. Bản thân bộ nhớ cache được làm từ loại bộ nhớ SRAM, có tốc độ rất nhanh nhưng cũng rất đắt đỏ, tăng dung lượng nghĩa là sẽ làm tăng chi phí cho mỗi bộ xử lý chứa CPU và bộ nhớ cache đó. Điều này đồng nghĩa với việc không nhiều người đủ tiền mua được các CPU này. Đánh đổi giữa hiệu quả kinh doanh để đổi lấy việc gia tăng một hiệu năng không phải là điều thực tế lắm.

Vẫn còn một loại bộ nhớ khác giá thành rẻ hơn

Đối nghịch với giá cả đắt đỏ của SRAM trong bộ nhớ cache là DRAM dùng phổ biến trong các thanh RAM máy tính hiện nay. Nó có giá thành ngày càng rẻ hơn và dung lượng lớn hơn. Hơn nữa nó còn có cấu trúc gọn gàng hơn so với SRAM khi mỗi bit dữ liệu chỉ dùng đến một bóng bán dẫn. Tuy vậy, nó lại có tốc độ chậm hơn đáng kể so với SRAM.

Vậy liệu có thể đặt DRAM vào trong CPU để tăng tốc độ và dung lượng bộ nhớ cho bộ xử lý không? Trên thực tế, kiến trúc đó cũng đã được Intel áp dụng nhưng không có nghĩa là nó thay thế được vai trò của RAM thông thường.

Vị trí của eDRAM trong bộ xử lý Intel thế hệ Haswell.

Bắt đầu từ chip thế hệ Haswell của Intel, hãng chip này đã tích hợp một bộ nhớ DRAM trên cùng một die chip với CPU, được gọi là eDRAM (hay Embedded DRAM – DRAM nhúng), và eDRAM vẫn được sử dụng trên chip Intel thế hệ Coffee Lake.

Cho dù nó mang lại các ưu thế về hiệu năng so với kiến trúc cũ, nhưng nó vẫn tồn tại các nhược điểm khiến nó không thể thay thế cả SRAM lẫn DRAM thông thường.

Đầu tiên là tốc độ của nó so với SRAM. Ngay cả khi được tích hợp ngay trên die chip bên cạnh CPU, xung nhịp của nó vẫn chậm hơn xung nhịp của CPU, trong khi SRAM lại có xung nhịp tương tự như CPU. Ngoài ra đặc tính của DRAM khiến nó phải liên tục được làm mới hàng nghìn lần mỗi chu kỳ để tránh bị mất dữ liệu, trong khi SRAM lại không cần phải làm vậy. Do đó, DRAM hay eDRAM vẫn có độ trễ lớn hơn nhiều so với SRAM và chỉ được sử dụng như bộ nhớ cache L3 hoặc L4 bên cạnh CPU.

Bên cạnh đó, eDRAM cũng không thể thay thế DRAM. Đầu tiên là vì dung lượng. Hiện tại bản thân eDRAM trên các CPU cũng chỉ có dung lượng 128 MB, quá nhỏ so với con số hàng GigaByte của các thanh RAM hiện nay.

Intel Kaby Lake G Core i7-8705G, bộ xử lý với CPU, GPU và RAM gắn cùng trên một die chip.

Phải đến các chip Kaby Lake G mới ra mắt gần đây, Intel mới bắt đầu đưa ra các con bộ xử lý với CPU, GPU và dung lượng RAM lớn (có dung lượng đến 4GB nhờ sử dụng HBM2 – loại giao tiếp bộ nhớ băng thông cao) được đặt chung trên một die chip. Tuy vậy, các máy tính trang bị bộ xử lý này cũng vẫn phải có các thanh RAM thông thường đi kèm.

Một lý do khiến eDRAM không thay thế được DRAM là vì cách hoạt động của bộ nhớ cache khác hẳn so với bộ nhớ RAM. Dữ liệu lưu trên bộ nhớ cache được ghi địa chỉ như nhau và hoàn toàn có thể bị xóa bất cứ lúc nào, trong khi dữ liệu trên RAM được đặt vào các vị trí riêng biệt cho mỗi ứng dụng.

Không những vậy, việc đóng gói RAM và CPU cùng với nhau sẽ khiến việc nâng cấp trở nên khó khăn hơn. Khi muốn tăng dung lượng RAM để chạy được các tác vụ ngốn nhiều RAM hơn, người dùng có thể buộc phải mua cả CPU mới, dù không cần thiết.

Trong khi việc đóng gói CPU và RAM máy tính thành một khối ít mang lại các giá trị thực tế khi bản thân CPU đã có sẵn rất nhiều loại bộ nhớ khác nhau được tích hợp ngay bên trong nó. Chúng giúp tăng tốc độ xử lý của CPU lên đáng kể nhưng không vì vậy mà chúng loại bỏ hoàn toàn vai trò của RAM trên máy tính.

Tham khảo Quora, StackExchange