Tôi đã xem qua đoạn trích này ngày hôm nay:Tại sao hoạt động bitwise hơi nhanh hơn các phép toán cộng/trừ trên các bộ vi xử lý cũ?
Trên hầu hết các bộ vi xử lý cũ, hoạt động Bitwise là nhanh hơn một chút so với cộng và hoạt động trừ và nhanh hơn nhân và chia hoạt động thường đáng kể. Trên các kiến trúc hiện đại, đây không phải là trường hợp: các hoạt động bitwise thường là tốc độ tương tự như bổ sung (mặc dù vẫn nhanh hơn phép nhân).
Tôi tò mò về lý do tại sao hoạt động bitwise nhanh hơn một chút so với hoạt động cộng/trừ trên bộ vi xử lý cũ hơn. Tất cả tôi có thể nghĩ rằng điều đó sẽ gây ra độ trễ là các mạch để thực hiện cộng/trừ phụ thuộc vào nhiều cấp độ cổng logic (bộ cộng song song và không có), trong khi các hoạt động bitwise có triển khai mạch đơn giản hơn rất nhiều. Đây có phải là lý do không?
Tôi biết số học và bitwise hoạt động cả hai thực hiện trong một đồng hồ-cyle trên bộ vi xử lý hiện đại, nhưng nói hoàn toàn về thời gian tuyên truyền cho mạch, là độ trễ vẫn lý thuyết có trong bộ vi xử lý hiện đại?
Cuối cùng, tôi đã có một C câu hỏi khái niệm về việc thực hiện các hoạt động Bitwise thay đổi:
unsigned x = 1;
x <<= 5;
unsigned y = 0;
y += 32;
Cả x
và y
nên giữ giá trị 32
, nhưng nó đã mất thay đổi riêng rẽ trái để có được x
cho giá trị đó (như trong các thay đổi bitwise được thực hiện qua đường ống)? Để làm rõ, tôi hỏi hoàn toàn về hành vi mạch chứ không phải số chu kỳ đồng hồ.
Ví dụ đầu tiên của bạn cho số không, nhưng đó có thể là lỗi đánh máy. Phần còn lại của câu hỏi của bạn là phần cứng cụ thể và có thể không có chủ đề ở đây. –
@ 500 Tôi nghĩ rằng nó có liên quan để biết các hoạt động của một bộ xử lý để bạn có thể hiểu rõ hơn cách mã mức cao chạy. – kjprice
@kjprice: Đủ công bằng - bạn sẽ nhận thấy rằng tôi không bỏ phiếu để đóng. –