# Serial Attached SCSI

Serial Attached SCSI (SAS) é um protocolo serial ponto-a-ponto (point-to-point) que transfere dados de e para dispositivos de armazenamento de computador, como unidades de disco rígido e unidades de fita. O SAS substitui a antiga tecnologia de barramento Parallel SCSI (Parallel Small Computer System Interface, geralmente pronunciada "scuzzy" ou "sexy") que apareceu pela primeira vez em meados da década de 1980. O SAS, como seu predecessor, usa o conjunto de comandos SCSI padrão. O SAS oferece compatibilidade opcional com Serial ATA (SATA), versões 2 e posteriores. Isso permite a conexão de drivers SATA à maioria dos SAS backplanes ou controladores. O inverso, conectar unidades SAS a backplanes SATA, não é possível.
O comitê técnico T10 do International Committee for Information Technology Standards (INCITS) desenvolve e mantém o protocolo SAS; a SCSI Trade Association (SCSITA) promove a tecnologia.

## Introdução

Um típico sistema Serial Attached SCSI consiste nos seguintes componentes básicos:
* Um iniciador: um dispositivo que origina solicitações de serviço de dispositivo e gerenciamento de tarefas para processamento por um dispositivo de destino e recebe respostas para as mesmas solicitações de outros dispositivos de destino. Os iniciadores podem ser fornecidos como um componente on-board na placa-mãe (como é o caso de muitas placas-mães orientadas a servidor) ou como um adaptador de barramento de host complementar.
* Um destino: um dispositivo contendo unidades lógicas e portas de destino que recebe solicitações de serviço de dispositivo e gerenciamento de tarefas para processamento e envia respostas para as mesmas solicitaçõesp ara dispositivos iniciadores. Um dispositivo de destino pode ser uma unidade de disco rígido ou um sistema de matriz de disco.
* Um subsistema de entrega de serviço: a parte de um sistema de E/S que transmite informações entre um iniciador e um destino. Normalmente, os cabos que conectam um iniciador e um destino com ou sem expansores e backplanes constituem um subsistema de entrega de serviço.
* Expansores: dispositivos que fazem parte de um subsistema de entrega de serviços e facilitam a comunicação entre dispositivos SAS. Os expansores facilitam a conexão de vários dispositivos SAS End a uma única porta do iniciador.

## Histórico

* SAS-1: 3.0 Gbit/s, lançado em 2004
* SAS-2: 6.0 Gbit/s, disponível desde fevereiro de 2009
* SAS-3: 12.0 Gbit/s, disponível desde março de 2013
* SAS-4: 22.5 Gbit/s chamado "24G", padrão concluído em 2017
* SAS-5: 45 Gbit/s está sendo desenvolvido

## Identificação e endereçamento

Um domínio SAS é a versão SAS de um domínio SCSI - consiste em um conjunto de dispositivos SAS que se comunicam entre si por meio de um subsistema de entrega de serviços. Cada porta SAS em um domínio SAS possui um identificador de porta SCSI que identifica a porta exclusivamente dentro do domínio SAS, o World Wide Name. Ele é atribuído pelo fabricante do dispositivo, como o endereço MAC de um dispositivo Ethernet, e normalmente também é exclusivo em todo o mundo. Os dispositivos SAS usam esses identificadores de porta para endereçar as comunicações entre si.
Além disso, cada dispositivo SAS tem um nome de dispositivo SCSI, que identifica o dispositivo SAS exclusivamente no mundo. Não é comum ver esses nomes de dispositivos porque os identificadores de porta tendem a identificar o dispositivo suficientemente.
Para comparação, em SCSI paralelo, o ID SCSI é o identificador da porta e o nome do dispositivo. No Fibre Channel, o identificador da porta é um WWPN e o nome do dispositivo é um WWNN.
No SAS, tanto os identificadores de porta SCSI quanto os nomes de dispositivos SCSI assumem a forma de um endereço SAS, que é um valor de 64 bits, normalmente no formato NAA IEEE Registered. As pessoas às vezes se referem a um identificador de porta SCSI como o endereço SAS de um dispositivo, por confusão. As pessoas às vezes chamam um endereço SAS de World Wide Name ou WWN, porque é essencialmente a mesma coisa que um WWN no Fibre Channel. Para um dispositivo expansor SAS, o identificador da porta SCSI e o nome do dispositivo SCSI são o mesmo endereço SAS.

## Comparação com SCSI paralelo

* O "barramento" SAS opera ponto a ponto enquanto o barramento SCSI é multidrop. Cada dispositivo SAS é conectado por um link dedicado ao iniciador, a menos que um expansor seja usado. Se um iniciador estiver conectado a um destino, não haverá oportunidade de contenção; com SCSI paralelo, mesmo essa situação pode causar contenção.
* O SAS não tem problemas de terminação e não requer pacotes de terminadores como SCSI paralelo.
* O SAS elimina a distorção do clock.
* O SAS permite até 65.535 dispositivos através do uso de expansores, enquanto o Parallel SCSI tem um limite de 8 ou 16 dispositivos em um único canal.
* O SAS permite uma velocidade de transferência mais alta (3, 6 ou 12 Gbit/s) do que a maioria dos padrões SCSI paralelos. O SAS atinge essas velocidades em cada conexão do iniciador-alvo, obtendo assim uma taxa de transferência mais alta, enquanto o SCSI paralelo compartilha a velocidade em todo o barramento multidrop.
* Os dispositivos SAS possuem portas duplas, permitindo backplanes redundantes ou E/S multipath; esse recurso é geralmente chamado de SAS de domínio duplo.
* Os controladores SAS podem se conectar a dispositivos SATA, conectados diretamente usando protocolo SATA nativo ou por meio de expansores SAS usando o Serial ATA Tunneling Protocol (STP).
* Tanto o SAS quanto o SCSI paralelo usam o conjunto de comandos SCSI.

## Comparação com SATA

Há pouca diferença física entre SAS e SATA.
* O protocolo SAS fornece vários iniciadores em um domínio SAS, enquanto o SATA não possui provisão análoga.
* A maioria das unidades SAS fornece enfileiramento de comandos marcados, enquanto a maioria das unidades SATA mais recentes oferece enfileiramento de comandos nativos.
* O SATA usa um conjunto de comandos baseado no conjunto de comandos ATA paralelo e, em seguida, estendido além desse conjunto para incluir recursos como enfileiramento de comandos nativos, hot-plugging e TRIM. O SAS usa o conjunto de comandos SCSI, que inclui uma ampla variedade de recursos, como recuperação de erros, reservas e recuperação de blocos. O ATA básico possui comandos apenas para armazenamento de acesso direto. No entando, os comandos SCSI podem ser encapsulados por meio de ATAPI para dispositivos como unidades de CD/DVD.
* O hardware SAS permite E/S multipath para dispositivos, enquanto o SATA (anterior ao SATA 2.0) não. De acordo com a especificação, o SATA 2.0 faz uso de multiplicadores de porta para alcançar a expansão de porta, e alguns fabricantes de multiplicadores de porta implementaram E/S multipath usando hardware de multiplicador de porta.
* O SATA é comercializado como um sucessor de uso geral do ATA paralelo e se tornou comum no mercado consumidor, enquanto o SAS mais caro visa aplicativos de servidor críticos.
* A recuperação e o relatório de erros do SAS usam comandos SCSI, que têm mais funcionalidade do que os comandos ATA SMART usados por unidades SATA.
* O SAS usa voltagens de sinalização mais altas (800-1.600 mV para transmissão e 275-1.600mV para receber) do que SATA (400-600 mV para transmissão e 325-600 mV para recebimento). A voltagem mais alta oferece (entre outros recursos) a capacidade de usar SAS em backplanes de servidor.
* Devido às suas tensões de sinalização mais altas, o SAS pode usar cabos de até 10 m (33 pés) de comprimento, enquanto o SATA tem um limite de comprimento de cabo de 1 m (3,3 pés) ou 2 m (6,6 pés) para eSATA.
* SAS é full-duplex, enquanto SATA é half- duplex. A camada de transporte SAS pode transmitir dados na velocidade total do link em ambas as direções ao mesmo tempo, portanto, um comando SCSI executado no link pode transferir dados de e para o dispositivo simultaneamente. No entanto, como os comandos SCSI que podem fazer isso são raros e um link SAS deve ser dedicado a um comando individual de cada vez, isso geralmente não é uma vantagem com um único dispositivo.
* Conector do disco rígido na parte inferior
* Parte superior do conector do disco rígido
* SAS-Backplane
* Conector SFF-8484

## Características
### Detalhes técnicos

O padrão Serial Attached SCSI define várias camadas (em ordem do mais alto para o mais baixo): aplicativo, transporte, porta, link, PHY e físico. O Serial Attached SCSI compreende três protocolos de transporte:
* Serial SCSI Protocol (SSP) - para comunicação em nível de comando com dispositivos SCSI.
* Serial ATA Tunneling Protocol (STP) - para comunicação em nível de comando com dispositivos SATA.
* Serial Management Protocol (SMP) - para gerenciar a malha SAS.
Para as camadas Link e PHY, o SAS define seu próprio protocolo exclusivo.
Na camada física, o padrão SAS define conectores e níveis de tensão. As características físicas da fiação e sinalização do SAS são compatíveis e têm rastreado vagamente as do SATA até a taxa 6 Gbit/s, embora o SAS defina especificações de sinalização física mais rigorosas, bem como uma oscilação de tensão diferencial permitida mais ampla, destinada a permitir um cabeamento mais longo. Enquanto o SAS-1.0 e o SAS 1.1 adotaram as características de sinalização física do SATA na taxa de 3 Gbit/s com condificação 8b/10b, o desenvolvimento do SAS-2.0 de uma taxa física de 6 Gbit/s levou ao desenvolvimento de uma velocidade SATA equivalente. Em 2013, 12 Gbit/s seguiram a especificação SAS-3. O SAS-4 está programado para introduzir sinalização de 22,5 Gbit.s com um esquema de codificação 128b/150b mais eficiente para obter uma taxa de dados utilizável de 2.400 MB/s, mantendo a compatibilidade com 6 e 12 Gbit/s.
Além disso, o SCSI Express aproveita a infraestrutura PCI Express para conectar diretamente os dispositivos SCSI em uma interface mais universal.

### Arquitetura

A arquitetura SAS consiste em seis camadas:
* Camada física:
** define as características elétricas e físicas
** transmissão de sinalização diferencial
** Vários tipos de conectores:
*** SFF-8482 - compatível com SATA
*** Conectores internos de quatro pistas: SFF-8484, SFF-8087, SFF-8643
*** Conectores externos de quatro pistas: SFF-8470, SFF-8088, SFF-8644
* Camada PHY:
** Codificação de dados 8b/10b (3, 6 e 12 Gbit/s)
** Codificação de pacote SPL 128b/150b (22,5 Gbit/s) (cabeçalho de 2 bits, carga útil de 128 bits, correção de erro de encaminhamento Reed-Solomon de 20 bits)
** Inicialização de link, negociação de velocidade e sequências de reset
** Negociação de recursos de link (SAS-2 em diante)
* Camada de links:
** Inserção e exclusão de primitivos para correspondência de disparidade de velocidade de clock
** Codificação primitiva
** Embaralhamento de dados para EMI reduzido
** Estabeleça e desfaça conexões nativas entre os alvos e iniciadores do SAS
** Estabeleça e destrua conexões em túnel entre iniciadores SAS e destinos SATA conectados a expansores SAS
** Gerenciamento de energia (proposto para SAS-2.1)
* Camada de porta:
** Combinando vários PHYs com os mesmos endereços em portas amplas
* Camada de transporte:
** Contém três protocolos de transporte:
*** Serial SCSI Protocol (SSP): para comunicação em nível de comando com dispositivos SCSI
*** Serial ATA Tunneled Protocol (STP): para comunicação em nível de comando com dispositivos SATA
*** Serial Management Protocol (SMP): para gerenciar a malha SAS
* Camada de aplicação

### Topologia

Um iniciador pode se conectar diretamente a um destino por meio de um ou mais PHYs (essa conexão é chamada de porta se usar um ou mais PHYs, embora o termo porta ampla às vezes seja usado para uma conexão multi-PHY).

### Expansores SAS

Os componentes conhecidos como Serial Attaced SCSI Expanders (SAS Expanders) facilitam a comunicação entre um grande número de dispositivos SAS. Os expansores contêm duas ou mais portas de expansão externas. Cada dispositivo expansor contém pelo menos uma porta de destino do SAS Managemente Protocol para gerenciamento e pode conter os próprios dispositivos SAS. Por exemplo, um expansor pode incluir uma porta de destino Serial SCSI Protocol para acesso a um dispositivo periférico. Um expansor não é necessário para fazer a interface de um iniciador e destino SAS, mas permite que um único iniciador se comunique com mais destinos SAS/SATA. Uma analogia útil: pode-se considerar um expansor como um switch de rede em uma rede, que conecta vários sistemas usando uma única porta de switch.
O SAS 1 definiu dois tipos de expansores; no entanto, o padrão SAS-2.0 abandonou a distinção entre os dois, pois criou limitações topológicas desnecessárias sem nenhum benefício percebido:
* Um expansor de borda permite a comunicação com até 255 endereços SAS, permitindo que o iniciador SAS se comunique com esses dispositivos adicionais. Os expansores de borda podem fazer roteamento direto de tabela e roteamento subtrativo. (Para uma breve discussão sobre esses mecanismos de roteamento, veja abaixo). Sem um expansor de fanout, você pode usar no máximo dois expansores de borda em um subsistema de entrega (porque você conecta a porta de roteamento subtrativa desses expansores de borda e não pode conectar mais expansores). Expansores Fanout resolvem esse gargalo.
* Um expansor de fanout pode conectar até 255 conjuntos de expansores de borda, conhecidos como um conjunto de dispositivos de expansão de borda, permitindo que ainda mais dispositivos SAS sejam endereçados. A porta de roteamento subtrativa de cada expansor de borda se conecta ao phys do expansor de fanout. Um expansor de fanout não pode fazer roteamento subtrativo, ele só pode encaminhar solicitações de roteamento subtrativo para os expansores de borda conectados.
O roteamento direto permite que um dispositivo identifique dispositivos conectados diretamente a ele. O roteamento de tabela identifica os dispositivos conectados aos expansores conectados ao próprio PHY de um dispositivo. O roteamento subtrativo é usado quando você não consegue encontrar os dispositivos na sub-ramificação à qual pertence. Isso passa a solicitação para uma ramificação diferente.
Os expansores existem para permitir topologias de interconexão mais complexas. Os expansores auxiliam na comutação de links (em oposição à comutação de pacotes) nos dispositivos finais (iniciadores ou alvos). Eles podem localizar um dispositivo final diretamente (quando o dispositivo final está conectado a ele), por meio de uma tabela de roteamento (um mapeamento de IDs de dispositivo final e o expansor para o qual o link deve ser alternado para encaminhar para esse ID), ou quando esses métodos falham, via roteamento subtrativo: o link é roteador para um único expansor conectado a uma porta subtrativa, o dispositivo final não poderá ser alcançado.
Expansores sem PHYs configurados como subtrativos atuam como expansores de fanout e podem se conectar a qualquer número de outros expansores. Expansores com PHYs subtrativos só podem se conectar a dois outros expansores no máximo e, nesse caso, eles devem se conectar a um expansor por meio de uma porta subtrativa e o outro por uma porta não subtrativa.
As topologias SAS-1.1 construídas como expansores geralmente contêm um nó raiz em um domínio SAS com o único caso de exceção sendo topologias que contêm dois expansores conectados por meio de uma porta subtrativa para subtrativa. Se existir, o nó raiz é o expansor, que não está conectado a outro expansor por meio de uma porta subtrativa. Portanto, se houver um expansor de fanout na configuração, ele deverá ser o nó raiz do domínio. O nó raiz contém rotas para todos os dispositivos finais conectados ao domínio. Observe que, com o advento do roteamento tabela a tabela o SAS-2.0 e novas regras para zoneamento de ponta a ponta, as topologias mais complexas criadas com base nas regras do SAS-2.0 não contêm um único nó raiz.

### Conectores

Os conectores SAS são muito menores que os conectores SCSI paralelos tradicionais. Normalmente, o SAS fornece velocidades de transferência de dados pontuais de até 12 Gbit/s.
O conector SAS físico vem em várias variantes diferentes:
| Codinome | Outros nomes | Externo/ interno | Pinos | No de dispositivos /pistas | Comentários |
| SFF-8086 | Mini-SAS interno, mSAS interno | interno | 26 | 4 | Esta é uma implementação menos comum do mSAS interno do que a versão de 36 circuitos do SFF-8087. As menos posições são habilitadas por não suportar bandas laterais. |
| SFF-8087 | Mini-SAS interno, mSAS interno, iSAS interno, iPass interno | interno | 36 | 4 | Implementação de 36 circuitos não blindados do SFF-8086. Conector interno 4x de largura reduzida Molex iPass; capacidade 12 Gbit/s. |
| SFF-8088 | Mini-SAS externo, mSAS externo, iSAS externo, iPass externo | externo | 26 | 4 | Implementação blindada de 26 circuitos do SFF-8086. Conector externo 4x de largura reduzida Molex iPass; capacidade 12 Gbit/s. |
| SFF-8431 | SFP+ | externo | 20 | 1 | |
| SFF-8436 | QSFP+, Quad SFP+ | externo | 38 | 4 | Comumente usado com muitos sistemas de armazenamento NetApp. Frequentemente visto com SFF-8088 ou SFF-8644 na outra extremidade; Capacidade de 6 Gbit/s. |
| SFF-8470 | Conector InfiniBand CX4, Molex LaneLink | externo | 34 | 4 | Conector externo de alta densidade (também usado como conector interno). |
| SFF-8482 | | interno | 29 | 2 | Esse formato foi projetado para compatibilidade com SATA, mas pode acionar um dispositivo SAS. Um controlador SAS pode controlar unidades SATA, mas um controlador SATA não pode controlar unidades SAS. A conexão mais comum para drives SAS que se conectam a backplanes em servidores, ou seja, PowerEdge e ProLiant |
| SFF-8484 | | interno | 32 ou 19 | 4 ou 2 | Conector interno de alta densidade, versões de 2 e 4 vias são definidas pelo padrão SFF. |
| SFF-8485 | | | | | Define SGPIO (extensão do SFF 8484), um protocolo de link serial usado normalmente para indicadores LED. |
| SFF-8613 (SFF-8643) | Mini-SAS HD, U.2 | interno | 36 | 4 ou 8 com conector duplo | Mini-SAS HD (introduzido com SAS 12 Gbit/s) Também conhecida como porta U.2 junto com SFF-8639. |
| SFF-8614 (SFF-8644) | HD externo Mini-SAS | externo | | 4 ou 8 com conector duplo | Mini-SAS HD (introduzido com SAS 12 Gbit/s) |
| Conector de banda lateral | | interno | | | Frequentemente visto com 1× SFF-8643 ou 1× SFF-8087 na outra extremidade– fan-out interno para 4× drives SATA. Conecta o controlador a unidades sem backplane ou ao backplane (SATA) e, opcionalmente, aos LEDs de status. |
| SFF-8680 | | interno | | 1 (2 portas) | Conector de backplane SAS 12 Gbit/s |
| SFF-8639 | U.2 | interno | 68 | 1 (2 portas) | conector de backplane SAS 12 Gbit/s; revisão do SFF-8680. |
| SFF-8638 | | | | | Quatro portas 1x de até 24 Gb/s cada; duas portas 2x de até 48 Gb/s cada; uma porta 4x a até 96 Gb/s. |
| SFF-8640 | | | | | Quatro portas 1x de até 24 Gb/s cada; duas portas 2x de até 48 Gb/s cada; uma porta 4x a até 96 Gb/s. |
| SFF-8681 | | | | | Duas portas 1x de até 24 Gb/s cada; uma porta 2x de até 48 Gb/s cada |
| SFF-8654 | SlimSAS | interno | 4X: 38 8X: 74 | | Plugue e receptáculo SAS-4 4X e 8X |

## Nearline SAS

As unidades Nearline SAS (abreviadas para NL-SAS e às vezes chamadas de midline SAS) têm uma interface SAS, mas a cabeça, a mídia e a velocidade rotacional das unidades SATA tradicionais de classe empresarial custam menos do que outras unidades SAS. Quando comparado ao SATA, os drives NL-SAS têm os seguintes benefícios:$^{:20}$
* Portas duplas permitindo caminhos redundantes
* Capacidade de conectar um dispositivo a vários computadores
* Conjunto de comando SCSI completo
* Não há necessidade de usar o Serial ATA Tunneling Protocol (STP), que é necessário para que os HDDs SATA sejam conectados a um HBA SAS.$^{:16}$
* Não há necessidade de placas intermediárias SATA, que são necessárias para alta disponibilidade pseudo-porta dupla de HDDs SATA.$^{:17}$
* Maior profundidade de filas de comandos