In what sense does SATA "talk" SCSI? How much is shared between SCSI and ATA?
35
votes
1
answer
12282
views
This is nothing new to me at least, that SATA actually "talks" SCSI, hence why these SATA devices show up as SCSI devices in Linux.
A related question has been asked before, e.g. https://unix.stackexchange.com/questions/3901/why-do-my-sata-devices-show-up-under-proc-scsi-scsi
However what fails to be mentioned where I've seen this discussed before is exactly in what sense SATA relates to SCSI, and how they differ.
I assume it is taken for granted that they differ on the physical layer, as they do not share compatible cables.
However what about higher up on the stack? I am aware of how Linux represents SATA and even IDE disks on modern kernels as just SCSI to the SCSI subsystem. But what about the actual protocol that is used on the bus?
I also know that ATAPI is an encapsulation for SCSI, but what about regular ATA? I've noticed that features from SCSI such as NCQ, FUA, DPO, etc (if I don't remember incorrectly) have been adopted from SCSI. But it is unclear how "much" of the SCSI command set is actually shared or similar.
Do modern SATA devices with their ATA specification implement a subset of the SCSI command set, but encapsulated (as in ATAPI)? An identical set? A superset? Or perhaps only selected features are implemented as variants that are not directly identical?
Where can I find some clear information on this, and especially how it relates to the Linux kernel? Some kind of tutorial for driver development would be nice, but even just an overview that doesn't completely skip over all the details would suffice. I am aware I can just read the actual specification, but that is again much too detailed, hard to find what you're really looking for, and just not realistic for me and probably most other users in the temporal sense.
Asked by AttributedTensorField
(373 rep)
Jul 15, 2014, 02:09 AM
Last activity: Feb 1, 2023, 11:26 PM
Last activity: Feb 1, 2023, 11:26 PM