01/10/2018, 01:17
CPU "lấy" data như thế nào?
Ví dụ có lệnh như thế này 1+2-5*6 , CPU sẽ lấy data theo từng chu kỳ, vậy nếu trong 1 chu kỳ CPU lấy 1+2-5* để xử lý thì nó sẽ xử lấy như thế nào ạ?
Bài liên quan
Nó phải qua bộ dịch để chuyển thành mã máy trước bạn ơi.
Em biết là nó sẽ dịch thành mã nhị phân nhưng khi dịch đoạn trên nó sẽ tính như thế nào ạ? Rồi nó lấy “6” lên thì lúc này sẽ sao ạ?c
Dịch làm sao thì bạn phải học 1 khóa về trình biên dịch mới biết được
Vậy lấy như nào thì nó cũng tính được ạ?
Đại loại là nó phải chạy qua câu đó trước, sau đó biến đổi thành 1 ngôn ngữ trung gian để tối ưu hóa (dead code, unroll, alias, …) rồi mới dịch thẳng.
Ý em là CPU nó tính kiểu gì ấy ạ? Em không nói cái vụ compile! nó lấy đoạn kia lên tính toán rồi , sau đó lấy số 6 làm sao nó biết là nhân 6, với lại nhân chia trước thì phải nhân 5 với 6 trước! CPU tính kiểu gì mà ra đúng được kết quả ạ?
bạn học ctdl, stack với bài toán tiền tồ trung tố hậu tố chưa, hình như tương tự thế
Chưa anh ạ! (20 characters)
Trình biên dịch sẽ phải phân tích phép toán đó ra thành các phép toán đơn giản hơn như cộng trừ nhân chia 2 số. Sau đó sẽ dịch ra mã máy. CPU sẽ thực hiện tuần tư các mã này. Kết thúc 1 chuỗi mã thì sẽ thực hiện xong 1 phép toán.
Sử dụng Reverse Polish Notation để phân tích cú pháp của phép toán trước, xem toán tử nào thực hiện trước, sau đó thành mã mày, chuyển đến phần tính toán thì chỉ cần tính toán lần lượt là ra.
chắc ý bạn là học kiến trúc máy tính à?
cái hình này là của MIPS, đơn giản nhất rồi đó. Nhưng mà học xong quên rồi Giải thích thì mất công lắm
CPU của MIPS có khoảng 32 registers.
ví dụ tính x = a+b với a=1, b=2 thì:
x = a + b*c, a,b,c=1,2,5
rồi ý bạn là lo tìm data path của nó trên cái hình MIPS ở trên hả? Học lâu quá quên rồi
đoạn mã của bạn chắc là assembly rồi, assembly cũng là NN bậc cao hơn so với mã máy rồi, cpu đâu có hiểu được lệnh phức hợp như lệnh mutl đâu, nên đoạn mã này chắc chắn sẽ được dịch tiếp để chuyển thành mã máy cấp thấp hơn chỉ có mấy phép tính cơ bản như cộng/bit shift/…
Theo mình biết thì đầu tiên phải biên dịch ra mã máy, mà cách để mình hiểu mã máy là dùng hợp ngữ hay ngôn ngữ Assembly. Phép nhân trong hợp ngữ đã là một phép toán phức tạp rồi. Phép toán của bạn nó biên dịch ra khá nhiệu lệnh mã máy. CPU từ đó thực hiện từng lệnh thôi. Nếu bạn từng học ngôn ngữ bậc thấp thì bạn biết, phép nhân là một phép khá phức tạp.
Đây đây:
Instruction cycle
An instruction cycle (also known as the fetch–decode–execute cycle or the fetch-execute cycle) is the basic operational process of a computer. It is the process by which a computer retrieves a program instruction from its memory, determines what actions the instruction dictates, and carries out those actions. This cycle is repeated continuously by a computer's central processing unit (CPU), from boot-up to when the computer is shut down. In simpler CPUs the instruction cycle is executed seque...
Đọc ở phần step, 4 bước đó.