Thắc mắc về môn Kiến trúc máy tính?

Em mới được học môn Kiến trúc máy tính và cảm thấy nó có vẻ khác rất nhiều so với môn C ban đầu, vì nó không học lập trình mà có vẻ thiên về phần cứng. Tất nhiên là nó quan trọng nhưng theo tìm hiểu của em thì các tiền bối đi trước cho rằng nên học thật chắc, thật sâu, thật kỹ các môn như Cấu trúc dữ liệu giải thuật, môn Lập trình hướng đối tượng… và không thấy ( không biết em có nghe nhầm không ) nhắc đến môn KTMT. Phải chăng nó không quan trọng tới mức ta phải đào sâu nghiên cứu về nó mà chỉ là môn học nền tảng, chỉ cần nắm chắc các kiến thức cơ bản chứ không cần học những thứ nâng cao? Mong các anh chị cho em ý kiến.

Cứ học đi, không thừa đâu. Nó sẽ liên quan đến mạng máy tính và nguyên lý hệ điều hành sau này

1 Like

Cũng nên nắm qua một tẹo để biết tập lệnh CPU là gì, chương trình được nạp lên RAM thế nào, rồi gọi các địa chỉ, offset ra làm sao (nếu lập trình assembly thì nên biết cái này) …

Môn học này: có ích cho môn network, lập trình nhúng … (biết đâu sau này bạn thiết kế CPU cho Intel, hoặc các tập lệnh cho nó thì sao)

1 Like

môn kiến trúc máy tính thì phải biết mấy cái:

  • máy tính biểu diễn số thực như thế nào
  • cache là gì
  • branch predictor là gì
  • pipeline là gì

ví dụ về cache: ví dụ duyệt từng phần tử trong mảng 2 chiều cần 2 vòng for có 2 cách: cách 1 là vòng for ngoài là duyệt theo dòng, vòng for trong là duyệt theo cột, cách 2 ngược lại: cột rồi dòng. Cách nào tốt hơn?

ví dụ về branch predictor: tìm số lớn nhất và nhỏ nhất trong mảng n số nguyên. Có 2 cách sau đây:

  • cách 1: duyệt 1 vòng tìm số lớn nhất rồi duyệt 1 vòng nữa tìm số nhỏ nhất: tốn n-1 + n-1 = 2n-2 phép so sánh.
  • cách 2: bắt cặp, n phần tử thành n/2 cặp. So sánh mỗi cặp: số lớn hơn thì sẽ được dùng để tìm số lớn nhất, số nhỏ hơn sẽ được dùng để tìm số nhỏ nhất. n/2 cặp so sánh n/2 lần, có n/2 số lớn hơn và n/2 số nhỏ hơn, tìm số lớn nhất tốn n/2 - 1 so sánh và tìm số nhỏ nhất tốn n/2 - 1 so sánh. Tổng cộng chỉ tốn 3n/2 - 2 = 1.5n - 2 so sánh.
    rõ ràng cách 2 tốn ít so sánh hơn nên sẽ lẹ hơn. Thực tế có khi ko lẹ hơn bao nhiêu (vì branch predictor)


    Giải thuật chỉ là tìm thuật toán để giải quyết vấn đề, còn áp dụng thuật toán cho máy tính chạy sao cho tối ưu là chuyện khác nữa.
6 Likes

Môn KTMT mình học ở KHTN không hề có những kiến thức này.

1 Like

Lạ nhỉ.


http://sinhvienit.net/forum/giao-trinh-kien-truc-may-tinh-va-de-trac-nghiem-kien-truc-may-tinh.3419.html

nhớ hồi đó mình cũng có học qua loa mấy cái lệnh MIPS gì đó ở môn kiến trúc máy tính này mà :joy: Nhưng mà cái quan trọng nhất nên nhớ là cache, pipelining. Sau này cache sẽ được nhắc tới mọi lúc mọi nơi.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?