Hầu như tất cả các tiến bộ về tốc độ máy tính đến từ một trong những lĩnh vực sau:
Transitor nhỏ hơn
Hai điều kết quả từ việc làm cho bóng bán dẫn nhỏ hơn:
- Chúng gần nhau hơn về mặt vật lý, do đó thời gian để tín hiệu điện truyền từ nguồn tới đích nhỏ hơn. Vì vậy, mặc dù tín hiệu điện không truyền đi nhanh hơn 50 năm trước, chúng thường di chuyển quãng đường ngắn hơn bây giờ .
- Nhiều bóng bán dẫn có thể được bao gồm trên một con chip, điều đó có nghĩa là có thể thực hiện được nhiều "công việc" hơn cùng một lúc. Càng nhiều bóng bán dẫn được thêm vào, càng khó tìm ra công việc hữu ích để họ làm, nhưng nhiều thủ thuật thông minh được sử dụng (xem bên dưới).
Thêm "công việc hữu ích" theo hướng dẫn
Ví dụ, một số bộ xử lý thiếu hướng dẫn để nhân hoặc chia số nguyên; thay vào đó, nhiệm vụ này phải được thực hiện với các thói quen phần mềm chậm. Thêm nhân và chia hướng dẫn tăng tốc mọi thứ lên đáng kể. Thêm hướng dẫn dấu phẩy động có thể tăng tốc phần mềm yêu cầu số dấu phẩy động.
Một cách quan trọng để thực hiện nhiều "công việc hữu ích" hơn cho mỗi hướng dẫn là tăng kích thước từ . Các CPU có thể thực hiện các hoạt động trên các số 32 bit thường yêu cầu ít hướng dẫn hơn để thực hiện cùng một tác vụ như CPU 16 bit hoặc 8 bit.
Một số bộ xử lý hỗ trợ các hướng dẫn thực hiện một số việc cùng một lúc, đặc biệt là các hướng dẫn thực hiện cùng một thao tác trên nhiều mục dữ liệu ( SIMD ).
Thêm hướng dẫn cho mỗi chu kỳ
"Chu kỳ đồng hồ" là cách bộ xử lý chuyển từ trạng thái hiện tại sang trạng thái tiếp theo. Theo một nghĩa nào đó, nó là đơn vị công việc nhỏ nhất mà bộ xử lý có thể làm tại một thời điểm. Tuy nhiên, số chu kỳ đồng hồ mà một lệnh cụ thể thực hiện tùy thuộc vào thiết kế của bộ xử lý.
Với sự ra đời của các bộ xử lý pipelined , có thể có các hướng dẫn riêng biệt để "chồng chéo", tức là một bộ xử lý sẽ bắt đầu trước khi bộ xử lý trước kết thúc. Tuy nhiên, một số lệnh nhất định có thể làm mất hiệu lực lệnh tiếp theo, sẽ không được biết cho đến khi lệnh tiếp theo được thực thi một phần, do đó mọi thứ có thể trở nên phức tạp. (Bộ xử lý Pipelined bao gồm logic để đảm bảo mọi thứ hoạt động tốt, nhưng đặc điểm hiệu năng phức tạp hơn.)
Các bộ xử lý Superscalar đưa điều này lên cấp độ tiếp theo, theo nghĩa đen cho phép hai lệnh thực thi cùng một lúc và thực thi không theo thứ tự sẽ tiến thêm một bước, cho phép các lệnh được thực hiện không theo thứ tự. Các tính năng này yêu cầu phân tích luồng hướng dẫn, tìm ra các hướng dẫn không xung đột với nhau.
Mặc dù có những thủ thuật khác (ví dụ như dự đoán chi nhánh , thực hiện đầu cơ ), điều quan trọng hơn là bức tranh tổng thể:
- mỗi hướng dẫn cần một số chu kỳ đồng hồ nhất định để hoàn thành (không nhất thiết là hằng số)
- nhưng nhiều hướng dẫn có thể được tiến hành cùng một lúc
- do đó, có một " hướng dẫn trên mỗi chu kỳ " có thể đo lường được> 1 cho các bộ xử lý cao cấp
- nhưng nó phụ thuộc rất nhiều vào khối lượng công việc
Nhiều chu kỳ hơn mỗi giây
Nói cách khác, tốc độ xung nhịp cao hơn . Tăng tốc độ xung nhịp không chỉ làm tăng nhiệt sinh ra mà còn đòi hỏi thiết kế chip kỷ luật hơn nhiều, bởi vì có giới hạn thời gian nhỏ hơn để mạch ổn định. Chúng tôi đã có rất nhiều dặm trong số này cho đến những năm 2000 khi chúng tôi đạt được một số giới hạn thực tế.
Dữ liệu ở đúng nơi, đúng thời điểm
Mặc dù các thành phần trong CPU đã ngày càng gần nhau hơn do các bóng bán dẫn bị thu hẹp, CPU và RAM vẫn cách nhau 5-10cm. Nếu một lệnh cần một cái gì đó từ RAM, thì lệnh đó sẽ không mất 5 hoặc 6 chu kỳ để hoàn thành, nó sẽ mất khoảng 200. Đây là vấn đề thắt cổ chai von Neumann .
Vũ khí chính của chúng tôi chống lại điều này là bộ nhớ cache . Dữ liệu được truy cập gần đây có nhiều khả năng được truy cập lại, do đó, nó được lưu trong bộ nhớ đặc biệt (được gọi là bộ đệm) nằm trong chip CPU, giúp truy cập nhanh hơn nhiều.
Tuy nhiên, các kỹ thuật khác (như dự đoán đường ống và dự đoán nhánh ) giúp bằng cách cho phép bộ xử lý thực hiện công việc hữu ích trong khi chờ dữ liệu đến và cũng dự đoán dữ liệu nào có thể cần sớm.
Bộ xử lý nhiều và / hoặc chuyên dụng
Viết phần mềm cho một bộ xử lý đơn giản hơn nhiều bộ xử lý. Tuy nhiên, đôi khi các lợi ích hiệu suất / chi phí / điện năng làm cho nó đáng giá.
Ngoài ra, một số bộ xử lý đặc biệt phù hợp với các tác vụ nhất định. Chẳng hạn, GPU được thiết kế riêng cho các tính toán cần thiết để hiển thị các hiệu ứng và đồ họa 2D và 3D.
Bộ xử lý đa lõi về cơ bản là nhiều bộ xử lý trên một chip.