SAS 속도 장난 아니네요..

zzaratra의 이미지

SAS(Serial Attached SCSI) 속도가 장난이 아니네요..

회사 프로그램 설치할 서버 장비가 SAS 를 쓰기 때문에 새롭게 커널 컴파일 하는데 장난 아니게 속도 빠르네요. cpu 도 좋지만.. 파일 복사 하는데. 무척이나 빠르네요..

참고: http://www.zdnet.co.kr/builder/system/server/0,39031667,39141385,00.htm

참고로 리눅스 드라이버는 여기에 잘 정리 되어 있더군요.

http://linuxmafia.com/faq/Hardware/sas.html

사랑천사의 이미지

Serial Port를 쓸 때... LTP ... 흐흠... LTP의 전송 속도가 표준적으로 더 빨랐던 것으로 기억 합니다.(지금은 COM/LTP... 쓸 때가 없어서 잘 모르겠습니다.) 근대 USB에 대한 설명을 어떤 분 블로그에서 읽은 기억이 있는데... USB, COM, LTP.. 이놈들 중에 가장 빠른데.. USB라꼬... 써 놓으셨더군요. 아.. 그건 맞습니다 근대 표현이... "직방 이니까... 당연히 병열 포트 보다 빠르겠죠?" 흐흠.. 전 이게. 농담일 지라도 이해가 안 되었습니다. 한께번에 여러 Bits를 전송 하는 것과... 시리얼 방식으로 순차 정열해서 보내는 것과... 제 상식으론 한꺼번에 보내는 것이 빠를 거 같은데 말이죠. 그리고.. SATA VS PATA(IDE/E-IDE가 PATA라고 알고 있습니다.) 시에도... SATA가 전체 대역폭이 더 넓습니다.(알려 지고, 제가 본 자료들이나 기억에 의하면.) 직열 통신 방식에서 뭔가 혁신을 이룩해서 병열 방식을 능가하는 성능을 내게 된 것인지...

그게 아니면 병열로 들어오는 자료를 처리하기 위해 자원이 많이 필요하기에 ... 그런 것인지... (그러니깐... 직열 방식이 병열 방식으로 처리 하는 것에 비해 비용이 적게 드냐.. 그래서 그런 거냐.. 뭐 그런 소리다.)

하하.. 잘 모르겠네요.
----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

cjh의 이미지

예전에 SAS세미나에서 들은 내용으로는, 병렬 전송은 각 핀간의 동기화를 맞추기 위해 클럭을 사용해야 하는데,
케이블 길이와 핀 수를 고려하면 현재 사용하는 Ultra320 정도가 한계라고 하더군요. 물론 그 이상 낼 수도 있겠지만,
SAS에서 사용하는 시리얼 방식으로 바뀌면 오히려 동기화 문제가 없어지므로 더 빠른 속도를 낼 수 있다고 하더군요.

어쨌든 향후에 더 이상의 SCSI스펙은 나오지 않을것 같으니, 천천히 SAS로 모두 바뀌지 않을까 합니다.
요즘 나오는 장비는 SAS냐 SCSI냐 선택이 이미 가능하더군요. 그리고 SAS디스크는 2.5인치도 있어서
같은 크기의 서버에 더 많을 수를 넣을 수 있습니다. 아직은 비싸지만...

--
익스펙토 페트로눔

--
익스펙토 페트로눔

사랑천사의 이미지

비슷한 이유겠군요. SYNC시킬 필요가 특별히 없고 그냥 순차적으로 받고 보내다 보면 언젠가 다 끝나니, 거기에 최선을 다 하도록 설계만 한다면 별 큰 일은 없을 테니 말이죠.(결국은 제가 생각 한 것 하고 비슷한 원리군요 하하하.)
----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

han002의 이미지

예전엔 직렬 고속전송을 위해서는 제어하기위한 프로세서도 고속이여야 하는데 가격과 기술이 따라주지못해서 병렬전송을 채택하게되었다고하더군요..

이젠 그게 역전된거겠죠..

..

Necromancer의 이미지

병렬전송일때는 고속으로 올라갈수록 케이블간의 길이 차이에 의해서 신호가 도달하는 시간차가
생기고 이때문에 동기가 잘 깨지게 됩니다. 각 케이블의 길이를 똑같이 만드는 것도 어렵죠.
그래서 주파수를 일정 이상으로 올릴 수도 없고요.

직렬이면 한선이니 이런거 신경쓸 필요 없죠.
케이블이 견딜 수 있는 한계까지 전송 주파수를 무자비하게 올려버릴 수 있습니다.

그리고 규격상 병렬포트 속도 꽤 빠른걸로 알고 있습니다.
USB 2.0보다는 떨어지지만 ECP나 EPP일 경우 USB1.1의 1.5배 정도 속도로 알고 있습니다.
다만 송수신시 polling 방식 때문에 CPU점유율이 엄청 높은 것이 치명적인 단점이었죠.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

ed.anonymous의 이미지

usb니 sas니 해도, serial 통신이라고 해서 rs232같은 것과는 틀립니다.
예를 들어 232통신에서 tx는 단일 pin을 사용하지만, usb등은 differencial signaling을 사용합니다.
요즘도 이용어를 쓰는지 모르겠지만, LVDS(Low Voltage Differencial Signaling)이라고 하죠.
즉, V+ V-가 전송되어 V+ > V- 면 1, V+ < V- 면 0 이런 식으로 전송이 됩니다.
이렇게 하면, 작은 전압차로도 신호->data판별이 쉽습니다.
또한 channel에 끼는 noise가 V+, V- line에 동일하게 먹기 때문에, 그 차이값은 변동이 없게 되어, data자체가 깨지는 확률도 확 줄어버리죠.

통신속도를 높일수 있었던 가장 큰 요인은 사실 bit판별을 위한 voltage level이 압도적으로 작아졌기 때문입니다.
예전 5V TTL level에서 동작하던 logic이라면, 0에서 5V까지 올라가는 slew rate가 크고, settling time도 길기 때문에, data전송속도가 제약을 받을수밖에 없었습니다.
반면, ECL혹은 그 이상의 device들은 signal level이 엄청 작기 때문에, 훨씬 짧은 시간에도 transition이 일어날수 있어, 0과 1을 전송할수가 있게 된 것이죠.

CPU의 동작 전압이 갈수록 낮아지는 것도 이때문입니다.
(전력소모를 낮추기 위한게 목적이 아니라, 속도를 업하려다보니, 따라서 전력소모도 낮출수 있었던 것이지요.)

직렬통신보다 병렬통신이 느리다는건 잘못된 이야기입니다.
당연히 대역폭이 클수록 빠를수밖에 없습니다.
simple하게 생각해서 usb를 8개 이어붙이고, MSB부터 LSB를 동시에 전송한다고 생각해보세요.
(물론 usb는 master-slave간 endpoint라는 logical port를 사용하니 말이 안되는 얘기지만, 일단은 그렇단 말입니다.^^;)

동기식이냐 비동기식이냐도 그렇습니다.
동기식의 경우 clock을 제공하는 이유는 쌍방간 transition timing을 맞추기 위한 노력인거고,
timing문제는 LVDS에서도 상존합니다.
일반적으로, usb같은 경우 data만 전송되고 clock은 없는것이 아니냐고 볼수 있는데,
slave에서 자체 clock을 사용하고, master의 request에 대해 FIFO로써 orthogonal하게 설계된것처럼 보이지만,
그 FIFO로부터 data를 fetch out하기 위해서도 clock은 필요합니다.
즉, slave단에서는 master의 data stream으로부터 clock recovery를 수행한다는 뜻입니다.
비동기식이야 당근 느리겠죠? 위에 어느분께서 EPP ECP를 예로 드셨던것 같은데, ECP가 EPP보다 더 빠릅니다.

그럼 좋은 하루하루 되세요^O^//
(덧, 설마 제가 한 헛소리를 전부 믿으시는건 아니시죠? 당근 많이 틀릴수 있다고 생각하니, 정정부탁드립니다.~^^;)

ed.netdiver의 이미지

휴 이제서야 메인 pc로 로긴했습니다.
회사 PC로 적다보니 익명으로 적어서 수정이 안되는군요.
4번째줄에, "즉, V+ V-가 전송되어 V+ > V- 면 1, V+ data판별이 쉽습니다."는
"즉, V+ V-가 전송되어 V+ > V- 면 1, V- > V+면 0으로, data판별이 쉽습니다."
로 정정합니다.
아마 >를 반대로 적어서 tag로 인식되어 잘렸나봅니다...

그리고 위의 흑기사님이 적어주신 LPT port가 polling방식이라는 부분은 약간 오해의 소지가 있을것 같습니다.
interrupt도 할당되어 있으며, int방식으로도 구동이 가능합니다.
polling방식으로 구동되던건 주로 예전 legacy centronics mode(nibble mode), bidirectional mode등에서 그랬고,
EPP, 특히 ECP에선 거진 int방식으로 사용할겁니다...아마도^^;
(확실히 구시대의 산물이긴 하죠^^;)

아 그리고, "그러면 왜 병렬통신에도 LVDS같은 기술을 써서 빠르게 통신하지 않냐?"
비싸서입니다.ㅡ.ㅡ;

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

owlet의 이미지

전압이 낮아져야 통신속도가 빨라진다는것은 맞는 말씀입니다.
그러나 병렬 통신이 시리얼 통신보다 빨라질수 없는 가장 큰 이유는 타이밍 문제가 맞습니다.

저항이 거의 없는 도체로 연결이 되어있다고는 해도 작지만 저항이 존재하고, 신호간에도 서로 간섭이 일어납니다. 이때문에 신호가 전달되는데 작은 지연이 발생되고, 통신 속도가 빨라질수록 상대적으로 이 지연의 영향이 커지게 됩니다.

병렬통신에서 두개의 비트가 통신선을 통해서 도달하는데 1ns의 시간차가 있다고하면 1MHz속도의 통신에서는 문제가 되지않지만 1GHz속도의 통신에서는 데이터가 엉망이 되어버리겠죠? 그러나 시리얼 통신에서는 하나의 데이터만 받으면 되기때문에 이런 통신선에 의한 지연이 문제가 되지않습니다. 지연이 되면 된대로 그대로 받으면 되니까요.
같은 이유로 속도를 올리기위해서 비동기 방식을 사용하는게 유리합니다.

이와 같은 이유로 PCI-Express역시 시리얼 통신을 사용합니다. 슬롯하나에 시리얼 포트가 여러개 달려있는 형태로..

ed.netdiver의 이미지

음, 약간 오해의 소지가 있을수 있을것 같아, 잘 모르지만 몇자 적어봅니다^^;

저항 말씀을 하셨는데, 저항값이 지연을 일으키는 것은 아닙니다.
정확히는 capacitance성분때문에 그렇습니다.
cpu의 address/data bus같은 localbus도 그렇지만, 일반적으로 wire harness로 연결되는 cable에서는
connector종단 pin에 capacitance성분이 기생하게 됩니다. 이는, signal level trasition시에,
slewing을 유발함으로써 signal shape를 무너지게 만듭니다.
주파수 도메인에서 보자면, cut-off frequency가 낮아지게 되어 고주파 성분을 감쇄시키는 꼴이 됩니다.
그래서 이것이 고속통신의 장애요인이 되는 것입니다.
그러니 저항보다는 capacitance 혹은 impedance라고 해야 맞겠죠.
병렬통신에서 MSB와 LSB가 서로 약간씩 leading/lagging함으로써 sync를 무너뜨리는것은 이렇게 해석이 됩니다.

그렇다고, 그것이 직렬통신에선 해당이 안되고 병렬에선 해당이 되냐하면, 그렇지 않습니다.
일반적으로 rs232통신에 사용하는 max232 chip을 쓰는 이유는 장거리 전송시 신호 감쇄를 감안해서,
원신호보다 level을 높게 쏘기 위한 목적이 있습니다.
이것도 사실은 종단임피던스의 영향으로 신호가 뭉개지더라도 어느정도의 shape는 보장하려는 것이 목적입니다.
(그래서, max232를 다른말로 level converter, level translator라고 하는겁니다.)

직렬/병렬통신에 대해 제가 말씀드릴때는 두개가 같은 조건일때를 상정하고, "당연히 직렬보다 병렬이 빠르다"고
말씀드린 것입니다.
localbus통신과 원거리bus 통신이 다르지만 그 근간인 신호전송의 측면에서 보면 동일하기 때문입니다.
만일 differencial통신을 사용하지 않으면, 직렬방식은 그렇게 고속으로 통신하지 못했을 겁니다.
또한 만일 transistor on/off level을 그렇게 낮추지 못했어도 마찬가지입니다.
반대로, 병렬통신에서도 1개의 signal line당 모두 differencial통신을 사용했으면, 당근 직렬통신속도x병렬버스갯수 만큼
빨라지게 되겠죠.(물론 몇개의 변수들이 더 들어가겠죠? arbiter랄지...^^;)

밑에 분께서 말씀해주셨듯, lvds를 병렬로 사용하는 예도 있긴 있습니다.
아마도, 현재의 usb같은것으로 다 포괄하지 못하는 전송속도를 지원하는 통신방식이 나올때면, lvds*n의 병렬통신방식이
적용될거라고 생각합니다.^^;(뭐 당연히 각종 modulation방식은 기본 들어가겠죠? qam이니 oqpsk니...=33)

에, 그리고 속도를 올리기 위해 비동기방식을 사용하는게 유리하다는 부분도 약간 첨언하자면 이렇습니다.
동기방식과 비동기방식을 나누는 기준에는 여러가지가 있을수 있겠지만, 흔히 전송자 혹은 수신자측(어느쪽이든 master가 되겠지만요^^;)에서 clock을 보내주느냐로 구분하곤 합니다.
하지만, 저는 이 기준이 거의 의미가 없어져버렸다는게 맞다고 생각합니다.
왜냐하면, 대개의 고속통신은 clock을 전송하지 않더라도 수신자측에서 signal stream으로부터 clock을 recovery해서
통신에 사용하기 때문입니다.

예를 들어 usb의 경우, slave는 signal을 능동적으로 보낼 능력이 없습니다.
master에서 request하고, endpoint를 지정하면,
slave는 요청받은 data를 해당 endpoint fifo에 집어넣어놓고, master가 가져가기를 기다릴뿐입니다.(endpoint지정에 오해소지가 있군요. request에서 이미 endpoint가 지정되버립니다.)
심지어 slave가 master에 뭔가를 전송하려 할때조차 말이죠.
(이부분도 달리보면, slave가 data를 송신한다고 볼수도 있습니다.^^;)
그게 무지 빨라서, 쌍방향통신하는것처럼 보일뿐입니다.(외장하드쓸때처럼^^;)
그렇게 data를 주고받을때 통신종단에서는 master의 signal을 복원하여 packet으로 만들고, 혹은 fifo의 data out을 usb bus에 실어보낼때도 해당 복원한 clock을 기준해서 이루어지게 됩니다.
이런 경우는 비일비재해서 firewire, atm등도 이런식인걸로 기억합니다.

그리고 이러한 signal->data(packet)복원은 framing이라는 별도의 분야(정확한 용어는 잘~^^;=33)가 있어서, 대체 어디부터를 sof으로 보고, 어디까지를 eof로 볼건지 등 다양한 연구들을 합니다.

비동기통신이 더 빠르다? 맞을수도 있고 틀릴수도 있습니다. 비동기통신을 어떻게 해석하느냐에 따라서 말이죠.

다만, "동일조건하에서" 당연히 병렬통신이 직렬통신보다 빠릅니다.^^;

그럼 좋은 하루하루 되세요~^O^//

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

owlet의 이미지

저항이 아니라 임피던스라는 지적은 맞는 말씀이십니다. 그러나 패러럴 통신에서 문제가 되는 부분은 역시 캐패시턴스가 아니라 저항성분입니다. cut-off frequency를 말씀하셨는데 ATA나 SCSI같은 인터페이스에 사용하는 속도는 cut-off frequency에는 한참 못미치는 주파수입니다. 패러럴 통신에서는 그렇게 속도가 올라가기도 전에 sync문제가 나타나기때문에 통신 속도를 올리는데 한계에 부딛히게 되는것입니다.
rs232의 통신전압얘기는 장거리통신에서의 신호감쇠에 대한 얘기이므로 내용과 별로 관련이 없어보입니다.
LCD LVDS 의 예는 시리얼 라인을 여러개 사용하는 방식이지 이를 병렬 통신으로 보기는 어려울것같습니다.
동기 비동기에 대한 말씀은 오히려 왜 고속통신에서 비동기 방식을 사용하는가에 대한 설명이되겠네요. 말씀하신대로 stream에서 clock을 뽑아내고 sof, eof를 구분하는것 모두 비동기이기때문에 필요한 부분이지 동기통신이라면 모두 불필요한 일이 되겠지요.

jerry.so의 이미지

옳으신 말씀이십니다...^^
지금의 고속시리얼통신이 가능하게된 것은 LVDS의 역할이 큽니다.

사족이지만 LVDS라고 꼭 시리얼로만 보내는 것은 아닙니다.
디지탈 비디오 출력같은 경우 (LCD 패널...등) 병렬로 LVDS를 전송합니다.

___
Knowing Me, Knowing You...

사랑천사의 이미지

복잡해 지고 있군요 하하하! 나름데로 재미 있는 이야기 들입니다. 전자나 기계 자체와 그리 친한 편이 아니라서 쉽게 생각 하기 힘든 것들이 많군요. 하지만 대강 무슨 말인지는 알 것 같습니다. 병열 통신이 같은 조건 하에서 빠른게 보통이라고 생각 하고 있는 것이 맞군요. 근대 결국 쌍방향 통신이란게 가능 한지 모르겠네요. Processor도 결국 모든 일을 순차적으로 처리 하니까 말이죠. 단지, 프로세서 시간을 얼마나 어떠한 작업이 점유 하느냐... 그런 것이 문제가 되는 것이겠죠.
----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

owlet의 이미지

통신속도보다 프로세서의 속도가 훨씬 빠르기때문에 양방향 통신은 의미가 있습니다.

사랑천사의 이미지

통신 속도보다 프로세서의 처리 속도가 월등히 빠르기 때문에 결론적으론 쌍방향 통신과 마찬가지로 구현 가능하다는 말씀이시군요.(그리고 이미 그런 식으로 동작 하고 있따.. 뭐 그런 말씀 이신 거겠죠...)

지금 제가 긴 글을 볼 수가 없어서 짧은 것만 보고 갑니다... ㅎㅎㅎ.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)

사람천사

ydongyol의 이미지

시리얼이 다시 느려져서 시리얼을 여러개 붙인 병렬시대가 다시 오지 않을까요?ㅋㅋ
시리얼간 속도차는 양끝단에 버퍼를 많이 줘서 극복하고..

--
Linux강국 KOREA
http://ydongyol.tistory.com/

송효진의 이미지

SATA 인터페이스에 그대로 SAS 하드디스크를 연결할 수 있는거죠?

emerge money