http://en.wikipedia.org/wiki/SGPIO

SGPIO

From Wikipedia, the free encyclopedia
 
Serial General Purpose Input/Output (SGPIO) is a 4-signal (or 4-wire) bus used between a host bus adapter (HBA) and a backplane. Of the 4 signals, 3 are driven by the HBA and 1 by the backplane. Typically, the HBA is a storage controller located inside a server, desktop, rack or workstation computer which interfaces with hard disk drives (HDDs) to store and retrieve data. It is considered an extension of the general-purpose input/output concept.

The SGPIO specification is maintained by the Small Form Factor committee in the SFF-8485 standard. The International Blinking Pattern Interpretation indicates how SGPIO signals are interpreted into blinking light-emitting diodes (LEDs) on disk arrays and storage backplanes.

An enclosure management controller

Host bus adapters[edit]

The SGPIO signal consists of 4 electrical signals; it typically originates from a host bus adapter (HBA). iPass connectors carry both SAS/SATA electrical connections between the HBA and the hard drives as well as the 4 SGPIO signals.

Typical host bus adapter with two 4× iPass connectors

An iPass Cable is used between the HBA and the backplane down which both SATA/SAS and SGPIO signals are sent.

Backplanes with SGPIO bus interface[edit]

backplane is a circuit board with connectors and power circuitry into which hard drives are attached; they can have multiple slots, each of which can be populated with a hard drive. Typically the backplane is equipped with LEDs which by their colour and activity, indicate the slot's status; typically, a slot's LED will emit a particular colour or blink pattern to indicate its current status.

Backplane

SGPIO interpretation and LED blinking patterns[edit]

Although many hardware vendors define their own proprietary LED blinking pattern, the common standard for SGPIO interpretation and LED blinking pattern can be found in the IBPI specification.

On backplanes, vendors use typically 2 or 3 LEDs per slot - in both implementations a green LED indicates presence and/or activity - for backplanes with 2 LEDs per slot, the second LED indicates Status whereas in backplanes with 3 LEDs the second and third indicate Locate and Fail.

Electrical characteristics of the SGPIO bus[edit]

The SGPIO bus consists of 4 signal lines and originates at the HBA, referred to as the initiator and ends at a backplane, referred to as the target. If a backplane (or target) is not present the HBA may still drive the bus without any harm to the system; if one does exist, it can communicate back to the HBA using the 4th wire.

The SGPIO bus is an open collector bus with 2.0 kΩ pull-up resistors located at the HBA and the backplane - as on any open collector bus information is transferred by devices on the bus pulling the lines to ground (GND) using an open collector transistor or open drain FET.

Signal lines of the SGPIO bus[edit]

SClock[edit]

The SGPIO bus has a dedicated clock line driven by the initiator (its maximum clock rate is 100 kHz), although many implementations use slower ones (typically 48 kHz).

SLoad[edit]

This line is synchronous to the clock and is used to indicate the start of a new frame of data; a new SGPIO frame is indicated by SLoad being high at a rising edge of a clock after having been low for at least 5 clock cycles. The following 4 falling clock edges after a start condition is used to carry a 4-bit value from the HBA to the backplane; the definition of this value is proprietary and varies between system vendors.

SDataOut[edit]

This line carries 3 bits of data from the HBA to the backplane: the first bit typically carries activity; the second bit carries locate; and the third bit carries fail. A low value for the first bit indicates no activity and a high value indicates activity.

SDataIn[edit]

This line is used by the backplane and indicates some condition on the backplane back to the HBA. The first bit being high commonly indicates the presence of a drive. The two following bits are typically unused, and driven low. Because this line would be high for all 3 bits when no backplane is connected, an HBA can detect the presence of a backplane by the second or third bit of the SDataIn being driven low.

The SDataIn and SdataOut then repeats with 3 clocks per drive until the last drive is reached, and the cycle starts over again.

SGPIO implementation[edit]

There are varieties in how the SGPIO bus is implemented between vendors of HBAs and storage controllers - some vendors will send a continuous stream of data which is advantageous to quickly update the LEDs on a backplane after a cables are removed and re-inserted, while others send data only when there is a need to update the LED pattern.

Adoption of the SGPIO specification[edit]

SGPIO and the SGPIO spec. is generally adopted and implemented in products from most major HBA and storage controller vendors such as LSIIntelAdaptec,NvidiaBroadcomMarvell Technology Group and PMC-Sierra. Most products shipping with support for SAS and SATA drives support this standard.

SGPIO Timeout Conditions[edit]

The SGPIO spec calls for the target to turn off all indicators when SClock, SLoad and SDataOut have been high for 64 ms; in practice this is not consistently followed by all vendors. Also, in some vendor's implementations the clock may be halted sporadically or stopped during or between cycles. Another, rather impractical, variation between vendors the state in which the clock is left after a cycle.

Backplane Implementations of the SGPIO bus[edit]

The idea behind this specification was to be able to use low cost CPLDs or microcontrollers on a backplane to drive LEDs; in practice, it has been found that there are variations in timing and interpretations of the bits between vendors, thus a simple CPLD would only work for a specific implementation thoroughly tested with one product from one vendor.[citation needed] A microcontroller is more applicable for this purpose, although the 4-bit SGPIO interface custom bus is not implemented on them[citation needed] - sampling of the 4-bit lines using GPIOs 100 kHz bit operations is too slow for many low-cost microcontrollers to handle whilst handling LED and other functions simultaneously. The length of the bit stream varies between HBA or storage controller; some vendors will stop the bit-stream when reaching the desired drive, while others will clock it all the way through. Some SAS-expander's bit streams may be as long as 108 (36×3) bits.

The safest implementation which ensures compatibility between all HBA and storage controller vendors is to use an ASIC, specifically, a combination of a microcontroller core with a hardware SGPIO interface; this concept was patented[citation needed] in 2006 by AMI and implemented in a series of backplane controller chips named the MG9071MG9072MG9077, and MG9082.

These chips will receive 1 or 2 SGPIO streams and drive LEDs accordingly; the latest chip from AMI, the MG9077, can be configured by pull-up and pull-down resistors to adopt to 16 different configurations of SGPIO buses and drive the LEDs accordingly. Since the availability of these chips from AMI, major OEMsincluding NECHitachiSupermicroIBMSun Microsystems, and others are using them on their backplanes to receive the SGPIO streams from a variety of HBA vendors and on-board controller chips to consistently drive LEDs with a pre-determined blinking pattern.

External links[edit]

SGPIO的更多相关文章

  1. LPC43xx SGPIO DMA and Interrupts

    The SGPIO output pins SGPIO14 and SGPIO15 can trigger a GPDMA request SGPIO pins SGPIO14 and SGPIO15 ...

  2. LPC43xx SGPIO I2C Implementation

    I²C SGPIO Configuration SGPIO is a hardware feature of LPC4300 series. There are 16 SGPIO pins calle ...

  3. LPC43xx SGPIO Slice 示意图

    SGPIO inverted clock qualifier Hi, With bits 6:5 of SGPIO_MUX_CFG the QUALIFIER_MODE is selected (0x ...

  4. LPC43xx SGPIO Camera interface design

    AN11196: Camera interface design using SGPIO

  5. LPC43xx SGPIO Configuration -- Why not use GPDMA ?

    LPC43xx SGPIO Configuration The LPC43xx SGPIO peripheral is used to move samples between USB and the ...

  6. LPC43xx SGPIO Experimentation

    LPC4350 SGPIO Experimentation The NXP LPC43xx microcontrollers have an interesting, programmable ser ...

  7. LPC43xx SGPIO Pattern Match Mode

    模式匹配 所有位串均具有模式匹配功能. 该功能可用于检测启动代码等.要使用该功能,则必须用需匹配的模式来对REG_SS 编程 (请注意, POS 达到零时 REG_SS 不会与 REG  交换!) M ...

  8. LPC43xx SGPIO Slice 输入输出连接表

  9. CentOS6.6 kickstart文件

    # Kickstart file automatically generated by anaconda. #version=DEVELinstall#cdromurl --url http://19 ...

随机推荐

  1. 【转】hibernate映射(单向双向的一对多、多对一以及一对一、多对一)

    多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一 一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多 也就是说一对多和多对一的映射策略是一样的,只是站 ...

  2. Linux Shell系列教程之(四)Shell注释

    本文是Linux Shell系列教程的第(四)篇,更多shell教程请看:Linux Shell系列教程 与许多的编程语言一样,Shell中也有注释符号,今天就为大家来介绍下Shell中的注释的语法及 ...

  3. Welcome-to-Swift-24高级运算符(Advanced Operators)

    除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和Objective-C中的位运算符和移位运算. 不同于C语言中的数值计算,Swift的数值计算默认是不可溢出的.溢出行为会 ...

  4. iOS学习笔记48-Swift(八)反射

    一.Swift反射 所谓反射就是可以动态获取类型.成员信息,在运行时可以调用方法.属性等行为的特性. 在使用OC开发时很少强调其反射概念,因为OC的Runtime要比其他语言中的反射强大的多.不过在S ...

  5. CentOS7 Failed to start iptables.解决方法

    Shit, CentOS怎么这么多bug.... 公司机房周日突然掉电,之前的Openstack环境就不能用了. 重新Run了一遍安装脚本,发现这个错误: iptables 咋又起不来了呢..... ...

  6. 百万级日活 App 的屏幕录制功能是如何实现的

    Android 从 4.0 开始就提供了手机录屏方法,但是需要 root 权限,比较麻烦不容易实现.但是从 5.0 开始,系统提供给了 App 录制屏幕的一系列方法,不需要 root 权限,只需要用户 ...

  7. 【CF1015B】Obtaining the String(模拟)

    题意:给定两个字符串,每次可以交换相邻两个字符,给出任意一组交换次数小于1e4的方案使得a串成为b串,输出交换的次数与位置,无解输出-1 n<=50 思路:每次找到第一个不相同的字符,从后面找到 ...

  8. w3school JavaScript 简介

    JavaScript 简介 转自: http://www.w3school.com.cn/js/js_intro.asp JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言 ...

  9. 推荐!手把手教你使用Git(转)

    原文出处: 涂根华的博客   欢迎分享原创到伯乐头条 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放 ...

  10. vue v-on:click传递动态参数

    最近项目中要为一个循环列表动态传送当前点击列的数据,查了很久资料也没有一个完美的解决方案, 新手只能用vue的事件处理器与jquery的选择器做了一个不伦不类的方案,居然也能解决这个问题,作此记录留待 ...