Chuyển đến nội dung chính

CS-101 Hardware

Phần cứng - hardware

  1.  - Tại sao máy tính chỉ hiểu được 0 và 1?
  2.  - CPU, GPU, RAM, Disk, Flash trong máy tính là gì?
  3.  - Tại sao thiết bị phần cứng ngày càng nhỏ gọn và rẻ hơn?

Phần cứng gồm 2 thành phần chính, đó là transitor và silicon chip.

    1. Transistor

- Có thể nói transistor là một đơn vị (unit) nhỏ nhất của thiết bị điện tử có khả năng bật/tắt tín hiệu điện (electric signal).

👉 bật/tắt tương ứng 1/0

    2. Silicon chip

- Lưu ý: Silicon không phải là Silicone (polymer tổng hợp).
- Silicon chip chứa hàng tỷ transistors.
- Được đóng gói (package) trong vỏ nhựa plastic: ví dụ như CPU chip, memory chip, flash chip,...

Phần cứng trong máy tính

1. CPU (Central Processing Unit)

- Là bộ não của máy tính, theo dõi (follow) các dòng lệnh (instruction) trong code và thực thi chúng (tham khảo bài viết cách chương trình phần mềm "chạy").
- Mỗi lần CPU thực thi một "phép tính" được gọi là 1 operation (clock cycles).

Trên CPU có chỉ số ghz nghĩa là gì?

    Tốc độ xung nhịp đo số chu kỳ mà CPU của bạn thực hiện mỗi giây.
    Hiểu đơn giản như sau:
        1ghz (gigahertz) → CPU có thể xử lý 1 tỷ operations/giây.

Core trong CPU là gì?

    CPU có thể chứa nhiều CPU con (gọi là core) để giúp máy tính có thể tăng tốc độ xử lý (tùy trường hợp).
    Tại sao lại tùy trường hợp?
    Ví dụ bạn cần giao hàng, 1 chiếc xe máy chỉ chở được 1 gói hàng.
    TH1: bạn chỉ cần giao 1 gói hàng, để giao hàng nhanh hơn bạn cần bao nhiêu chiếc xe?
    ⇒ số lượng chiếc xe không giúp bạn giao hàng nhanh hơn, 1 chiếc hay 4 chiếc đều như nhau.
    TH2: nếu bạn cần giao 4 gói hàng thì sao?
    ⇒ lúc này có 4 chiếc xe máy sẽ nhanh hơn nhiều so với chỉ 1 chiếc xe.
    Vậy có phải lúc nào máy tính 4 core CPU cũng chạy nhanh hơn máy tính 1 core CPU?

    Ngoài số lượng core, bạn nên quan tâm đến tốc độ xử lý của CPU (dựa vào chỉ số ghz).

GPU (Graphics Processing Unit) 

    Là một biến thể (variant) của CPU, chuyên xử lý các phép tính liên quan đến hình ảnh.
    GPU giúp giảm tải cho CPU, xử lý hình ảnh đồ họa nhanh hơn, rất hữu dụng khi chơi game hoặc các ứng dụng liên quan đến xử lý đồ họa.

2. RAM

Random Access Memory (or just memory) là một bộ nhớ dùng để lưu trữ dữ liệu tạm thời.
Lưu dữ liệu theo byte (8bits).
Khi một chương trình được "chạy", code (instruction) và data của chương trình đó sẽ được lưu trong RAM.
Tốc độ đọc/ghi dữ liệu chỉ trong vài nanoseconds.
    
👉 Lưu tạm thời nghĩa là dữ liệu sẽ bị mất khi ngừng cung cấp điện (shutdown máy).

3. DISK & FLASH

Disk: ổ cứng máy tính (HDD), đĩa mềm (floppy disk), ổ đĩa bán dẫn (SSD)
Flash: kiểu bộ nhớ điện tĩnh dạng chip như USB, SD card,..

Nhiệm vụ: lưu dữ liệu lâu dài, không bị mất khi ngừng cung cấp điện (nhưng không có nghĩa là dữ liệu sẽ không bao giờ bị mất). 
Tốc độ đọc/ghi dữ liệu: RAM > SSD, USB > HDD.

Tại sao thiết bị phần cứng ngày càng nhỏ gọn và rẻ hơn?


Hãy research với từ khóa: Moore's law

Tổng kết

Thông qua bài viết này, bạn đã biết được những kiến thức nền tảng về phần cứng mà một Software Engineer cần phải biết.
Với phạm vi bài viết, mình chỉ liệt kê những từ khóa, các bạn có thể tìm hiểu sâu hơn về phần cứng qua các nguồn khác nhau.

Hy vọng bạn có được thêm kiến thức mới.
Keep learning 💪

Nhận xét

Bài đăng phổ biến từ blog này

Effective Java 01 - Consider static factory methods instead of constructors

Ở bài viết này, chúng ta sẽ bàn về cách để tạo Object trong Java. Để tạo mới một Object trong Java thì cách truyền thống là provide một public constructor và sử dụng keyword new ở client. Có một cách khác mà chúng ta nên biết và consider để sử dụng thay cho cách truyền thống đó là provide static factory methods . Vậy ưu điểm và nhược điểm của static factory methods là gì, chúng ta sẽ cùng tìm hiểu trong bài viết này. Cách truyền thống: Provide a public constructor Ví dụ: Class Student.java public class Student { private long id ; private String name ; public Student ( long id , String name ) { this . id = id ; this . name = name ; } } Client có thể tạo instance bằng cách sử dụng new keyword: Student student = new Student ( 1 , "Nguyễn Văn A" ); Sử dụng Static Factory Methods Ví dụ: Class Student.java public class Student { private long id ; private String name ; private Student ( long id , Strin...

Effective Java 02 - Consider a builder when faced with many constructor parameters

 Khi một Object có thể được tạo từ nhiều attributes khác nhau thì chúng ta nên consider sử dụng Builder Pattern thay cho Static factories hoặc Constructors . Ví dụ sử dụng Builder Pattern: // Builder Pattern public class NutritionFacts { private final int servingSize ; private final int servings ; private final int calories ; private final int fat ; private final int sodium ; private final int carbohydrate ; public static class Builder { // Required parameters private final int servingSize ; private final int servings ; // Optional parameters - initialized to default values private int calories = 0 ; private int fat = 0 ; private int sodium = 0 ; private int carbohydrate = 0 ; public Builder ( int servingSize , int servings ) { this . servingSize = servingSize ; this . servings = servings ; } public Builder calories ( int val ) { calories = val ; retu...