Kiến trúc Nehalem đã chính thức ra mắt người dùng với nhiều cải tiến, bổ sung trong thiết kế cũng như công nghệ báo hiệu sự thay thế thời đại "thống trị" của kiến trúc Core trên những BXL Intel. Chúng ta sẽ xem xét một số thay đổi quan trọng nhất mà kiến trúc Nehalem đem lại cho những dòng vi xử lý tương lai. Hệ thống bộ nhớ đệm (cache) chính là một trong những thay đổi mạnh mẽ nhất trong kiến trúc Nehalem so với kiến trúc “tiền bối” Core. Trong Core, bộ nhớ đệm (cache) cao nhất mà một BXL có là dung lượng cache L2 được đem chia sẻ giữa hai nhân. Dung lượng cache L2 trong những dòng vi xử lý 45nm gần nhất có thể lên đến 6MB, có 24 đường liên kết và độ trễ là 14 hay 15 chu kỳ. Trong khi đó, hệ thống cache trong Nehalem được tăng thêm một mức cache L3 có dung lượng lớn (8MB) và dùng chung cho tất cả các nhân. Mỗi nhân còn sở hữu riêng hai cache L1 (64KB) và L2 (256KB, độ trễ thấp hơn 12 chu kỳ và có 8 đường liên kết). Bộ nhớ đệm L3 trong các BXL nền Nehalem hoạt động với tần số độc lập và có hệ thống cấp nguồn riêng biệt với các nhân để đảm bảo độ ổn định và giảm xác suất lỗi. Ưu điểm của thiết kế cache L3 này là giúp việc trao đổi dữ liệu giữa các nhân hiệu quả hơn mà không cần thông qua các cache bên trong của mỗi nhân. Tuy nhiên, cache L3 cũng có ảnh hưởng đến hoạt động của cache riêng trong mỗi nhân. Mỗi dòng lệnh trong cache L3 chứa 4 bit đánh dấu nhân nào có chứa bản sao của dòng lệnh đó trong những cache riêng của mình. Cụ thể, khi một nhân truy vấn L3 và “thấy” bit đánh dấu mang giá trị 0 thì sẽ “hiểu” là trong cache riêng của nó chưa có bản sao dòng lệnh đó, và ngược lại, nếu bit đánh dấu mang giá trị 1 thì có khả năng cache riêng của nó đã có bản sao của dòng lệnh đó. Hơn nữa, giao thức truy xuất dữ liệu trong cache của các nhân cũng có sự chuyển biến thành giao thức MESIF (Modified, Exclusive, Shared, Invalid and Forward). Sự phối hợp của những bit đánh dấu và MESIF giúp giảm bớt tần suất truy cập cache của các nhân nên sẽ giải phóng nhiều băng thông hơn cho những dữ liệu thật sự cần thiết trong các cache. Đây là một cải tiến rất quan trọng giúp nâng cao hiệu quả của tính toán song song. Trước đây, các BXL theo kiến trúc Core sẽ thực hiện giao tiếp với chipset của hệ thống qua tuyến truyền (bus) có tên Front Side Bus (FSB). Điều này nghĩa là quá trình giao tiếp của BXL và bộ nhớ phải được thực hiện trên cùng một tuyến bus với các thiết bị ngoại vi khác, dẫn đến hiệu suất hoạt động của bộ nhớ sẽ bị giảm. Vấn đề này cũng xảy ra tương tự với các thành phần khác trong hệ thống như đĩa cứng, card đồ họa, âm thanh... Để giải quyết điều này trong thiết kế của Nehalem, BXL sẽ “tiếp cận” trực tiếp với bộ nhớ RAM trong hệ thống bằng một tuyến bus riêng không cần thông qua chipset. Thay thế vai trò của chipset trong trường hợp này là một chip điều khiển bộ nhớ được tích hợp ngay trong BXL. Chip điều khiển này sẽ chỉ hỗ trợ cho bộ nhớ hiệu năng cao DDR3, cho phép chạy được chế độ bộ nhớ kênh ba (triple channel) thay vì chỉ chạy kênh đôi như hiện nay. Sau khi “loại bỏ” lượng băng thông dùng cho bộ nhớ, tuyến bus được sử dụng trước đây để BXL giao tiếp với chipset (giờ có tên là Intel QuickPath Interconnect - Intel QPI) sẽ trở thành tuyến bus “độc quyền” cho công việc trao đổi giữa BXL và các thiết bị khác trong hệ thống. Intel QPI sẽ gồm hai tuyến truyền nhận dữ liệu hoàn toàn riêng biệt với băng thông trên mỗi đường rất cao (ví dụ, trên Intel Core i7 965 băng thông Intel QPI có thể lên đến 25,6GB/s). Với cách thiết kế này những BXL thế hệ Nehalem của Intel đã thoát khỏi sự phụ thuộc băng thông giữa bộ nhớ và các thành phần ngoại vi từng có ở thế hệ BXL Core và cải thiện hiệu năng hệ thống thông qua việc gia tăng tốc độ giao tiếp giữa BXL nền Nehalem với các thành phần chính trong hệ thống như card đồ họa, đĩa cứng... Tuy nhiên, việc mở rộng tuyến bus nói trên đã góp phần làm tăng số lượng chân (pin) giao tiếp trên BXL. Do đó, việc sử dụng socket LGA775 với 775 chân không còn phù hợp. Vì vậy, trên các bo mạch chủ hỗ trợ các BXL nền Nehalem đều được trang bị socket LGA1366 (1366 chân). Một trong những vấn đề mà BXL Intel đang gặp phải là sự gia tăng dòng điện rò khi thu nhỏ kích thước công nghệ sản xuất BXL. Dòng điện rò này chính là nguyên chính gây ra sự tiêu hao điện năng trên các nhân xử lý ngay cả khi đang trong trạng thái nghỉ. Để giải quyết vấn đề này, Intel đã thay thế cách thiết kế transitor theo công nghệ Clock Gates sử dụng trên hầu hết các BXL Intel hiện nay bằng thiết kế mới theo công nghệ Power Gates giúp loại bỏ dòng điện rò trên những nhân đang “nghỉ” để đưa điện áp trên các nhân ấy về mức gần như bằng 0. Ngoài ra, trong vi kiến trúc Nehalem, Intel lần đầu tiên tích hợp trong BXL một chip điều khiển năng lượng PCU (Power Control Unit) để hiện thực công nghệ mới Turbo Boost. Chip PCU này sẽ dựa trên các cảm ứng được thiết lập tại các nhân xử lý để thực hiện giám sát về nhiệt độ, điện áp trên nhân. Dựa trên các thông tin trên, PCU sẽ thực hiện chức năng chính của nó là chuyển lượng điện năng không dùng từ các nhân ở trạng thái nghỉ sang những nhân đang hoạt động. Điều đó cũng có nghĩa một nhân đang hoạt động với tải công việc lớn có thể lấy phần điện năng không cần thiết từ các nhân đang được “nghỉ ngơi” và góp phần “đẩy” hiệu năng của mình lên bằng cách ép xung nhịp lên mức cao hơn. Đây là một giải pháp tốt để tiết kiệm điện năng khi tận dụng được lượng điện năng dư thừa từ các nhân không sử dụng. Hình 1. Sơ đồ khối của kiến trúc Nehalem. Vi kiến trúc Nehalem dựa chủ yếu trên kiến trúc đã được sử dụng trên những BXL Core 2 Duo để có thể cải thiện hiệu suất xử lý dòng lệnh bên trong BXL. Những chương trình thường được viết bằng các câu lệnh x86, tuy nhiên các đơn vị xử lý trong BXL không thể hiểu được các câu lênh này và cần được giải mã qua các vi lệnh (microinstruction). Trong vi kiến trúc Core, Intel đã giới thiệu một tính năng mới là Macro Fusion có khả năng dịch hai lệnh x86 vào thành một vi lệnh để thực thi trong BXL. Điều này giúp cải thiện đáng kể hiệu suất hoạt động của BXL cũng như giảm bớt điện năng tiêu thụ. Tuy nhiên, tính năng này chỉ có thể được thực thi với những câu lệnh x86 so sánh và rẽ nhánh (lệnh điều kiện). Giờ đây, vi kiến trúc Nehalem sẽ cải thiện Macro Fusion theo hai hướng: tăng số lượng câu lệnh rẽ nhánh hỗ trợ, và sử dụng được cho cả các câu lệnh ở chế độ 64 bit bên cạnh chế độ 32 bit đã từng được hỗ trợ trên các BXL Core 2 trước đây. Ngoài ra, vi kiến trúc Core trước đây còn được tăng cường một bộ phát hiện dòng lặp (Loop Stream Detector) thực tế là một bộ đệm nhỏ chứa 18 lệnh được đặt giữa bộ đưa lệnh và bộ giải mã từ lệnh x86 sang vi lệnh (decoder). Khi BXL đang thực thi một vòng lặp thì BXL sẽ không cần đưa lại những lệnh trong vòng lặp từ bộ đệm L1 mà lấy trực tiếp từ bộ phát hiện dòng lặp. Do đó, BXL sẽ tắt tạm thời hai thành phần đưa lệnh và dự đoán rẽ nhánh, giúp BXL tiết kiệm điện năng. Trong khi đó, những BXL theo kiến trúc Nehalem lại thay đổi đôi chút với việc đưa bộ phát hiện dòng lặp ra sau bộ giải mã. Vì vậy, thay vì giữ những câu lệnh x86, bộ phát hiện dòng lặp sẽ lưu giữ những câu vi lệnh sau khi đã được giải mã (lên đến 28 câu vi lệnh). Điều này sẽ giúp cải thiện khả năng xử lý khi BXL không phải thực hiện lại công việc giải mã những lệnh trong dòng lặp mà lấy trực tiếp kết quả từ bộ đệm phát hiện dòng lặp. Nhờ vậy, trong BXL nền Nehalem, bộ phận giải mã cũng sẽ được tắt đi trong quá trình xử lý dòng lặp bên cạnh việc cho thành phần đưa lệnh và dự đoán rẽ nhánh “nghỉ ngơi”, giúp tiết kiệm điện năng thêm một bậc. BXL theo kiến trúc Nehalem cũng được thêm vào hai bộ đệm phụ TLB (Translation Lookaside Buffer) thứ hai với 512 điểm nhập (entry) và BTB (Branch Target Buffer) thứ hai. Như đã biết, TLB là một bảng dùng để chuyển đổi từ địa chỉ vật lý sang địa chỉ ảo bằng một mạch bộ nhớ ảo. Bộ nhớ ảo là công nghệ giúp BXL giả lập nhiều RAM hơn trên một tập tin nằm ở đĩa cứng để máy tính có thể hoạt động ngay cả khi không đủ RAM (bạn hẳn còn nhớ tập tin tráo đổi swap). Trong khi đó, bộ đệm BTB là một mạch cố gắng dự đoán bước tiếp theo của một chương trình, tải vào chương trình những lệnh mà nó nghĩ là BXL cần để thực thi tiếp theo và nếu... “may” mà nó tải đúng thì BXL sẽ không tốn thời gian để tải lệnh này từ bộ nhớ. Bộ đệm BTB thứ hai được bổ sung sẽ cho phép mạch này tải thêm nhiều lệnh hơn nữa, cải thiện hiệu năng của BXL. Bạn đã từng biết đến công nghệ siêu phân luồng (Hyper Threading) trên các dòng xử lý Intel Pentium trước đây nhưng sau đó “biệt tích” vì được cho là thiếu hiệu quả và không cải thiện được nhiều về hiệu năng. Tuy nhiên, giờ đây công nghệ này đã bắt đầu trở lại khi xuất hiện kiến trúc Nehalem. Như đã biết, với công nghệ siêu phân luồng, mỗi nhân trong BXL sẽ hỗ trợ đồng thời hai luồng xử lý; với BXL bốn nhân thì hệ thống có thể hoạt động với 8 luồng xử lý đồng thời. Nếu so với các BXL Intel Pentium thì thiết kế của vi kiến trúc Nehalem đem lại lợi thế hơn cho công nghệ siêu phân luồng khi có băng thông bộ nhớ và dung lượng cache lớn hơn, vì thế dữ liệu được cung cấp cho các nhân rất nhanh và dễ dàng để chia vào hai luồng xử lý trên mỗi nhân. So với dòng xử lý Penryn (bổ sung tập lệnh đa phương tiện SSE4.1), các BXL nền Nehalem được cung cấp thêm một tập lệnh con SSE4.2 với 7 lệnh gồm CRC32 (dùng cho việc tính toán thông số checksum dùng trong lưu trữ hay mạng), PCMPESTRI, PCMPESTRM, PCMPISTRI và PCMPISTRM (dùng so sánh chuỗi), PCMPCTQ (so sánh dữ liệu), và POPCNT (thao tác trên bit dữ liệu để đếm số lượng bit được gán lên 1). Trong các BXL kiến trúc Core, một trong những vấn đề mà các hệ thống gặp phải khi sử dụng công nghệ ảo hóa là việc giả lập các thiết bị ngoại vi cho các máy ảo đang chạy trên hệ thống. Chúng ta đều biết kỹ thuật giả lập là một giải pháp ảo hóa các thiết bị ngoại vi bằng phần mềm với ưu điểm là không yêu cầu bất cứ thay đổi nào về phần mềm hay trình điều khiển thiết bị trên hệ thống đang chạy. Tuy nhiên, cách làm này lại không thật sự hiệu quả vì tiêu tốn quá nhiều tài nguyên BXL để thực hiện giao tiếp giữa máy ảo và thiết bị được giả lập. Vì thế, công nghệ ảo hóa trong kiến trúc Nehalem sử dụng kỹ thuật VT-d (Intel Virtualization Technology for Directed I/O) cho phép người dùng gán trực tiếp thiết bị vật lý trong hệ thống (thay vì phải giả lập) cho một máy ảo nên sẽ cải thiện hiệu năng của các giải pháp ảo hóa. Kiến trúc Nehalem được bổ sung công nghệ Extended Page Tables (EPT) để tăng hiệu quả giao tiếp của các máy ảo với bộ nhớ bằng giải pháp phần cứng. Công nghệ này sẽ sử dụng bảng TLB (Translation Lookaside Buffer) dung lượng lớn để chuyển đổi địa chỉ ảo của các máy ảo sang địa chỉ vật lý của hệ thống. Mỗi điểm nhập (entry) trong bảng TLB được thêm một trường ASID (Address Space ID) để xác định địa chỉ này thuộc về máy ảo nào. Nhờ cách thiết kế này, việc chuyển đổi giữa các máy ảo không cần thiết phải xóa đi các entry trong TLB. Do đó, việc chuyển đổi máy ảo cũng như truy xuất bộ nhớ của các máy ảo trở nên dễ dàng và nhanh chóng hơn, tăng hiệu năng hoạt động của các hệ thống máy ảo. Những BXL đầu tiên theo kiến trúc Nehalem đang chuẩn bị được tung ra thị trường Việt Nam, tuy nhiên ngay tại thời điểm này, có lẽ những “thượng đế” đam mê công nghệ đang thật sự háo hức để có cơ hội thử nghiệm sức mạnh xử lý cũng như chờ đón “bộ sưu tập” công nghệ mới của dòng sản phẩm này. Hình 2. Sơ đồ các tuyến giao tiếp mới trong Nehalem. PCWORLD