显示标签为“linux-drivers-scsi”的博文。显示所有博文
显示标签为“linux-drivers-scsi”的博文。显示所有博文

2009年3月17日星期二

SCSI和SATA

SCSI

概念

Small Computer System Interface, 它是一组在电脑和外围设备间实现物理连接和数据传 输的标准集合。SCSI标准定义了命令、协议、电子和光学接口,它可以连接大量的外围设备。

  • SCSI 隐藏了物理设备接口的复杂性,算是一种智能设备
  • SCSI 是一个并行设备,可以将 8-16个SCSI设备连接到一根单独的总线
  • SCSI 是带缓冲的接口,使用了设备间的握手信号,支持出错检查
  • SCSI 是一个点对点设备,协议已经定义了三组标准:主机对主机,主机对外围设备,外 围设备对外围设备
两个SCSI连接器,via wikipedia

SCSI历史

  1. SCSI SPI,SCSI是个很老的协议(1981),至今经历了三代协议变换,也定义了三套标 准SCSI1, 2, 3,SPI是对并行SCSI接口的统称。到了2008年,SPI开始被SAS所取代
  2. SSA,现行的串行SCSI标准有三个,SSA,FC-AL,SAS,他们从SPI中独立出来,使用串 口传输。
  3. SAS, Serial Attached SCSI 是串行标准中最具活力的一个
  4. iSCSI,在此不做讨论

ATA/ATAPI

概念

AT Attachment / AT Attachment Packet Interface (ATA/ATAPI) 是一套专门连接大容量 存储介质的标准集合,这些设备包括有硬盘、固态硬盘、光驱等等。

ATA/ATAPI历史

  1. IDE(ATA-1), 1994年,ANSI统一了IDE接口,诞生了ATA-1
  2. EIDE(ATA-2), 西部电子公布了EIDE标准,催生出1996的ATA-2标准
  3. ATAPI 是ATA标准的里程碑,它定义了一系列拓展命令,大大加强了ATA接口。他更可回 应SCSI命令,被称之为"会说话的SCSI"。这个协议也叫"ATA/ATAPI-4"
  4. Parell ATA, 2003年,SATA诞生了,由于他的出现,我们把以前的ATA称之为PATA。 ATA标准要求电缆长度最大为46cm,这限制了计算机存储技术的发挥。
  5. Serial ATA, 2007年度,SATA已经全面取代PATA,它是现行ATA接口市场上的主流。 注意,此时的Serial ATA的规范中就包含了SCSI SAS部分
7孔SATA缆线和主板SATA接口,via Wikipedia

SCSI和SATA

SCSI和SATA相比,速率要快上一些,但是其总线结构很复杂,自然成本也较高。SCSI总线支 持多个驱动器连接(多个通道,一个通道连接7-15个设备)。而SATA只支持一对一,除非使 用端口倍加器。

性能上看,SATA 3Gb/s 提供了 300MB/s 的传输速率,而SCSI可以达到 320MB/s,而且SCSI 驱动器可以提供更高的持久式吞吐量;兼容性上看,SATA 一般保留了向 SAS 的兼容性,而 SCSI 是不能直连到SATA总线上的。

总体上看,SATA总线更简单,保留了向SAS的兼容性,而且仍旧保持较高速率。SCSI的功能 更强,拓展性更高,但其成本也较高。

索引

2008年12月10日星期三

Linux SCSI子系统

scsi历史

scsi-1::1979年由SHugart Associates创建,它定义了一种具有5MHz数据时钟的8-bit并行接口。

scsi-2::1985年,10MHz,16位总线。

scsi-3::1993年,已经成为了一种标准集,它包含一种命名为Ultra的并行scsi标准和基于 串行scsi和基于串行scsi的协议,这些标准通过引入存储网络技术将数据速率拓展到了 1Gb/s。

scsi架构基础

如果你是一位设计师,那么需要从scsi spec下手。而对于软件开发人员来说,你只需要关 注scsi的架构。在深入之前,将scsi架构图牢记于心,对于理解代码是非常重要的。linux scsi位于系统的底层 —

linux scsi本身是一种三层架构,upper, mid, lower,upper层最为接近内核,包括一组驱 动器(比如块设备SCSI 磁盘和字符设备SCSI generic);mid实现了common services layer, 接受upper的请求并将其转化为scsi请求,scsi lower层则是紧附硬件之上的硬件驱动。

索引

从ibm developerworks大致了解三层架构:

从这里获得scsi标准的细节:

我们的目标在于linux的实现(pdf, 321KB):

出发


本着记录和总结的目的,深入求实的精神,我开始在日志上记录scsi的看书笔记。scsi的设 备是典型的层次架构,经历过风雨变迁的scsi标准也散发着蓬勃的活力,因此看懂这段代码 很有意义。

笔记目标将会从sd_mod.o起步,清晰中间层(mid),上层(upper)和底层(lower)的大 致架构,最后深入到公司最近正在移植的sata_sil驱动。