Công nghệ siêu phân luồng được chế tạo như thế nào?

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Công nghệ siêu phân luồng được chế tạo như thế nào?

Bài gửi  NguyenXuanLinh(HLT3) on 11/5/2014, 01:00

HyperThreading là gì?


kỹ thuật siêu phân luồng (hyper threading) giúp CPU có khả năng chạy được nhiều ứng dụng cùng một lúc bằng cách chia thành các luồng xử lý khác nhau. Để có thể sử dụng các ứng dụng ở cùng một thời điểm
Hyper threading ( công nghệ siêu phân luồng) là công nghệ cho phép một CPU vật lý hoạt động trên hệ điều hành như là hai CPU và hệ điều hành không thể phân biệt được. Nhiệm vụ của hệ điều hành là gửi hai chuỗi lệnh tới hai CPU và phần cứng sẽ đảm nhiệm những công việc còn lại.kỹ thuật siêu phân luồng (hyper threading) giúp CPU có khả năng chạy được nhiều ứng dụng cùng một lúc bằng cách chia thành các luồng xử lý khác nhau. Để có thể sử dụng các ứng dụng ở cùng một thời điểm
Nguyên lý hoặt động
Về bản chất, một nhân xử lý không thể xử lý hai luồng thông tin vào cùng một thời điểm. Nếu chúng ta muốn cùng một lúc có được nhiều ứng dụng (hay thực chất là rất nhiều các process con, hoặc rất nhiều thread) chạy song song, hệ điều hành của chúng ta phải ra lệnh cho nhân xử lý liên tục và chuyển qua chuyển lại tác vụ xử lý cho từng thread. Quá trình này diễn ra rất-rất nhanh và hoàn toàn không thể nhận biết bằng mắt thường, tạo cảm giác như CPU của chúng ta xử lý tất cả các khối lượng công việc đó song song cùng một thời điểm.

Minh họa cho cách SMT (Hyper Threading) làm tăng hiệu quả xử lý của CPU

HyperThreading là tên của Intel đặt cho công nghệ SMT (Simultaneous Multi-Threading). Công nghệ này cho phép một nhân xử lý có thể thực sự xử lý song song các thread do các ứng dụng tạo ra, bằng cách trang bị thêm một số thành phần của nhân xử lý, khiến hệ điều hành nghĩ rằng nó đang làm việc với nhiều nhân xử lý. Như vậy, với một hệ điều hành tương thích bộ xử lý nhiều nhân hay nhiều bộ xử lý, nó sẽ sắp xếp để nhiều thread cùng được gửi đến các bộ xử lý “ảo” đó. Về mặt lý thuyết, khi chúng ta chỉ có một nhân xử lý thì nó có xử lý song song được bao nhiêu thread cũng không thể tăng tốc độ xử lý chúng lên được. Tuy nhiên trong thực tế, không phải bất kỳ lúc nào mọi thành phần của nhân xử lý cũng được sử dụng đến, và những thành phần không được sử dụng đến này có thể dùng để xử lý thread thứ hai (hoặc thứ ba, thứ tư…). Công nghệ SMT còn giúp bộ xử lý làm việc hiệu quả hơn bằng cách giảm bớt số lần nhân xử lý phải chuyển qua chuyển lại giữa các thread ‘’song song”. Quá trình chuyển này, như đã nói ở trên, diễn ra rất nhanh và liên tục, nhưng không có nghĩa là không mất thời gian, và bằng việc giảm bớt lượng công việc này, bộ xử lý có thể được rảnh rang để tập trung vào chuyên môn hơn.

Trong các CPU sử dụng công nghệ Hyper-Threading, mỗi CPU logic sở hữu một tập các thanh ghi, kể cả thanh ghi đếm chương trình PC riêng (separate program counter), CPU vật lý sẽ luân phiên các giai đoạn tìm/giải mã giữa hai CPU logic và chỉ cố gắng thực thi những thao tác từ hai chuỗi lệnh đồng thời theo cách hướng tới những đơn vị thực thi ít được sử dụng.
Công nghệ siêu luồng cho phép các phần mềm ứng dụng được viết cho những máy chủ đa luồng có thể thực hiện các chỉ thị song song đồng thời trên mỗi bộ xử lý riêng, bằng cách này sẽ cải thiện tức thì tốc độ giao dịch cũng như thời gian đáp ứng và các yêu cầu đặc thù khác của phần mềm nghiệp vụ và thương mại điện tử. Công nghệ này tương thích với các phần mềm ứng dụng và hệ điều hành sẵn có trên các máy chủ, nó cho phép hỗ trợ nhiều người dùng hơn và tăng khối lượng công việc được xử lý trên một máy chủ. Với các máy trạm cao cấp, công nghệ siêu phân luồng cũng sẽ tăng đáng kể tốc độ các phần mềm ứng dụng đòi hỏi năng lực tính toán cao, ví dụ như phần mềm thiết kế 3 chiều, xử lý ảnh hay video
công nghệ này đã được cải tiến như thế nào so với công nghệ cũ, chúng ta hãy xem hình sau :
Mỗi ứng dụng trên máy tính khi thực hiện sẽ chạy nhiều tiến trình, mỗi tiến trình lại gồm nhiều luồng xử lý (gọi là thread). Với bộ xử lý đơn luồng, tại một thời điểm chỉ có một luồng xử lý được thực hiện, nếu có nhiều luồng cùng muốn thực hiện thì các luồng này thực hiện tuần tự cái sau tiếp nối cái trước.
Với bộ xử lý siêu phân luồng, nó có thể thực hiện song song 2 luồng xử lý, tận dụng tối đa tài nguyên hệ thống và rút ngắn thời gian xử lý.
Theo sự phát triển, các phần mềm hay các hệ điều hành mới yêu cầu tốc độ mà mỗi vi xử lý thực hiện các lệnh ngày càng cao, các CPU tăng tốc độ xung nhịp với phương pháp chủ yếu là đưa ngày càng nhiều mạch bán dẫn vào một bộ chip, điều này sẽ khiến cho CPU phát sinh nhiều nhiệt và một số thí nghiệm đã cho thấy CPU sẽ không còn hoạt động hiệu quả nữa.
Công nghệ lõi kép sẽ giải quyết vấn đề trên, nó cho phép một bộ xử lý có thể chứa 2 lõi hoặc nhiều hơn. Các lõi này sẽ hoạt động song song với nhau, chia sẻ công việc tính toán xử lý mà bộ xử lý phải đảm nhận.
Việc có hai lõi hoặc nhiều hơn sẽ giúp bộ xử lý hoạt động hiệu quả và có công suất cao hơn, vì mỗi lõi sẽ xử lý ít ứng dụng hơn, giảm hiện tượng bộ xử lý phải cùng một lúc gánh vác công việc của nhiều ứng dụng.
Và tiếp theo là sự kết hợp giữa công nghệ lõi kép và công nghệ siêu phân luồng để đạt được 4 luồng xử lý thực hiện song song. Cho tốc độ xử lý nhanh gấp nhiều lần mà không cần tăng tốc độ xung nhịp.

Tìm hiểu cơ bản về chỗi lệnh và cách thức hoặt động


Cái gì làm cho một ứng dụng có thể chạy? Làm thế nào CPU biết các chỉ dẫn để thực hiện và thực hiện với dữ liệu nào? Tất cả những thông tin này có chứa trong mã biên dịch của ứng dụng mà bạn đang chạy mỗi khi bạn nạp ứng dụng đó vào.Ứng dụng lần lượt gửi các chuỗi lệnh báo cho CPU biết phải làm gì để đáp ứng, và đối với CPU chuỗi lệnh sẽ là một tập các chỉ thị cần phải thực thi. CPU biết chính xác các chỉ thị này nằm ở đâu nhờ thanh ghi gọi là Program Counter (PC). PC luôn chỉ đến vị trí trong bộ nhớ nơi mà các chỉ thị cần thực hiện tiếp theo đã được lưu giữ, như vậy một khi chuỗi lệnh được gửi đến CPU thì địa chỉ trong bộ nhớ của chuỗi lệnh này đã được nạp sẵn vào PC, vì vậy CPU biết bắt đầu thực hiện từ đâu. Sau mỗi chỉ thị, PC sẽ tăng lên và quá trình tiếp tục đến hết chuỗi lệnh. Khi chuỗi lệnh được thực hiện xong, PC sẽ bị ghi đè bởi chỉ thị tiếp theo. Chuỗi lệnh có thể bị ngắt bởi một yêu cầu khác, khi đó CPU sẽ lưu giá trị hiện tại của PC trong ngăn xếp (stack) và nạp giá trị mới vào PC, tuy nhiên hạn chế là tại mỗi thời điểm chỉ có thể có duy nhất một chuỗi lệnh được thực thi. Một hướng giải quyết chung cho vấn đề này là sử dụng hai hay nhiều CPU, nếu tại mỗi thời điểm một CPU chỉ có thể thực thi một chuỗi lệnh thì hai hay nhiều CPU sẽ thực thi được hai hay nhiều chuỗi lệnh. Tuy vậy, lại có nhiều vấn đề nảy sinh với cách giải quyết này, trước hết là nhiều CPU sẽ tốn nhiều tiền, quan trọng hơn nữa là việc quản lý hai hay nhiều CPU để chúng chia sẻ tốt tài nguyên chung. Tất cả các nền tảng x86 đa bộ xử lý chỉ hỗ trợ việc chia băng thông sẵn có giữa các CPU, điều quan trọng nhất là các ứng dụng và hệ điều hành cần phải có khả năng hỗ trợ tính năng này. Hiện nay, để giải quyết nhanh các chuỗi lệnh phức tạp, phần cứng nói chung phải nhờ vào phương án xử lý đa luồng, hệ điều hành phải hỗ trợ xử lý đa luồng, và phải tăng tốc độ một cách thật sự, giống như có nhiều bộ xử lý (trong hầu hết các trường hợp). Công nghệ siêu luồng của Intel giải quyết vấn đề bằng cách thực hiện nhiều hơn một chuỗi lệnh tại cùng một thời điểm.

NguyenXuanLinh(HLT3)

Tổng số bài gửi : 27
Join date : 11/03/2013
Age : 27
Đến từ : Hồ Chí Minh

Xem lý lịch thành viên http://www.ytuong24h.net

Về Đầu Trang Go down

Re: Công nghệ siêu phân luồng được chế tạo như thế nào?

Bài gửi  PhanVietTrung(HLT3) on 11/5/2014, 10:55

cách đây một khoản thời gian đã lâu lắm rồi mình có đọc một tài liệu về kĩ thuật về CPU hyperThread này, có thể mình nhớ không chính xác lắm nhưng cái kĩ thuật này cơ bản như sau, mỗi CPU nhân vật lý về lý thuyết tại một thời điểm sẽ tính toán hay còn gọi là thực thi một lệnh một chu kì (1Hz) tức là các bạn cứ xem như dòng điện sẽ chạy trong core CPU đi qua các transistors tạm thời xem như từ A->Z. Các CPU thông thường thì chỉ khi A->Z hoàn tất thì một xung nhịp mới mới được thực thi. Intel nghĩ ra vấn đề ở đây là lúc luồng đầu tiên đang thực thi, nó đã chạy, ví dụ đến thời điểm I đi, ta thấy rằng lúc đó nó chỉ cần thực thì công việc hiện tại từ I->Z để hoàn tất công việc. Còn lại từ A->I là chuỗi các transistors rãnh. Do đó vấn đề làm sao để tận dụng các transistor rãnh đó. Trong CPU xung nhịp(clock)được tạo ra bằng một bản mạch thạch anh , đối với CPU truyền thống thì mỗi core sẽ ứng với một bản mạch thạch anh để tạo ra xung nhịp cho nhân tương ứng đó. Đối với công nghệ HyperThread, mỗi core trên lý thuyết sẽ có thể có hơn 2 bộ tạo xung do đó luồng này có thể thực thi đuổi theo sau luồng kia khi luồng kia chưa chạy hết chu kì.

PhanVietTrung(HLT3)

Tổng số bài gửi : 25
Join date : 09/03/2014

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết