Tìm kiếm làm gì với lưu trữ trạng thái rắn?


13

Với lưu trữ cơ học, hoạt động của đĩa cấp thấp seek()khiến các đầu ổ cứng di chuyển đến một vị trí để chúng sẵn sàng đọc từ một khu vực nhất định của đĩa.

Với lưu trữ trạng thái rắn, chẳng hạn như thẻ SD, ổ đĩa flash và SSD, không có bộ phận chuyển động của phần cứng, chỉ có tín hiệu điện.

Giả sử công nghệ RAM không biến động NAND là nền tảng của phần cứng, chức năng nào seek()thực sự hoạt động ở cấp độ phần cứng cho một thiết bị như vậy?

Để rõ ràng, tôi đã biết rằng những điều sau đây xảy ra:

  1. Chương trình không gian người dùng gọi seek()hệ thống hoặc tương đương với hệ điều hành

  2. Kernel diễn giải cuộc gọi hệ thống và gửi tin nhắn đến bộ điều khiển SATA để tìm kiếm

  3. Bộ điều khiển SATA thông dịch lệnh và báo cho thiết bị đĩa đính kèm, ở trạng thái rắn, tìm kiếm (hoặc có thể nó đủ thông minh để nhận ra rằng đó là trạng thái rắn và thậm chí không nói với nó ??)

  4. Những gì tôi không biết là, thiết bị trạng thái rắn nào ??? với lệnh "tìm kiếm".

Nếu có các chi tiết phụ thuộc vào hệ điều hành, giả sử phiên bản GNU / Linux trên máy tính tương đối chuẩn với phiên bản kernel 3.2.


2
Tôi nghĩ rằng nó làm một NOP lớn chất béo. Nói đùa, nếu tôi là một ổ SSD, tôi sẽ thực hiện một số "đề phòng" đọc vào bộ đệm, để đảm bảo mọi thứ diễn ra nhanh nhất có thể. Nhưng vì đây chỉ là một phỏng đoán mơ hồ về một điều gì đó mà tôi không có ý tưởng nhỏ nhất nào, nên hãy mang nó với một hạt muối ...
ppeterka 13/03/13

Tôi không nghĩ các thao tác "tìm kiếm" được sử dụng trong giao diện lưu trữ cấp thấp nữa. Nếu chúng tồn tại, chúng chỉ cần thay đổi vị trí được lưu trữ cho thao tác I / O tiếp theo.
David Schwartz

Câu trả lời:


4

nếu bạn đang đề cập đến linux, hãy tìm kiếm vẫn di chuyển trước số byte cần thiết. Ví dụ:

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

Sẽ bắt đầu sao chép số không 1024 byte vào đầu đĩa, không thành vấn đề nếu sdb là thẻ sd hoặc ổ ssd, vì một điều nhỏ gọi là trừu tượng hóa , cơ chế thực tế của việc này được quan tâm ở mức thấp hơn.

Cập nhật

Tôi thấy những gì bạn đang nói bây giờ. Theo ví dụ về thẻ sd của tôi, bộ nhớ flash sử dụng một cái gì đó gọi là các trang và các trang có kích thước cụ thể. khi có tìm kiếm, HĐH sẽ gửi lệnh đến bộ điều khiển thẻ sd / thẻ để di chuyển đến một trang nhất định để đọc và viết.


Tôi biết rằng nó di chuyển về phía trước trong tệp một cách hợp lý , nhưng ngoài tác động logic lên tệp theo các "khối" trừu tượng, phần cứng có làm gì khác khi thực sự được yêu cầu tìm kiếm không? Bạn có thể xem lseek()cuộc gọi hệ thống như một ví dụ cụ thể nếu cần. Tôi biết rằng hệ thống này không chỉ tìm kiếm logic mà còn khiến các đầu ổ cứng di chuyển khi xử lý đĩa cơ, vậy SSD làm gì?
allquixotic

@allquixotic Tôi đã cập nhật câu trả lời của tôi.
MDMoore313

1
Ngay cả trên ổ cứng quay vật lý, HĐH vẫn gửi một lệnh (lệnh SCSI, lệnh ATA / SATA hoặc lệnh lưu trữ khối USB) để lái xe để lấy LBA X. Máy chủ thực sự không yêu cầu ổ đĩa di chuyển đầu vào bất kỳ cấp độ nào, phần sụn của ổ đĩa làm điều đó. Nếu bạn muốn biết một phần mềm SSD làm gì để đáp ứng với các lệnh lưu trữ, hãy xem xét một số thông số kỹ thuật cho dự án Jasmine OpenSSD nếu bạn có thể tìm thấy chúng, một số điều đó giải thích mọi thứ ở mức rất thấp.
LawrenceC
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.