'연구'에 해당하는 글 10건

ARM SMP Qualcomm roadmap

연구 2016. 9. 7. 14:37

출처 : http://www.nextplatform.com/2015/10/08/qualcomm-shows-off-prototype-arm-server-chip/

'연구' 카테고리의 다른 글

Q: Why UBI does not use OOB area of NAND flashes?  (0) 2011.09.29
ssd cache open source projects  (0) 2011.09.29
ext4  (0) 2011.03.06
mtd 자료 블로그  (0) 2010.12.06
FTLs for NANDSim  (0) 2010.12.01

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

Because many flashes (e.g., NOR) do not have OOB and UBI was designed to be generic. Also, modern MLC NAND flashes use whole OOB area for the ECC checksum, so there is no room for application data.

But of course, things could be optimized for SLC NAND flashes if UBI used the space available in the OOB area. This is not implemented, but one could probably do this.

'연구' 카테고리의 다른 글

ARM SMP Qualcomm roadmap  (0) 2016.09.07
ssd cache open source projects  (0) 2011.09.29
ext4  (0) 2011.03.06
mtd 자료 블로그  (0) 2010.12.06
FTLs for NANDSim  (0) 2010.12.01

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,
  • Flashcache - http://github.com/facebook/flash... - caching writes.
    Facebook opensourced component it uses to speed up their MySQL servers.
  • bcache - http://bcache.evilpiepirate.org/ - caching reads.
    Another patch to kernel that is progressing in development (i.e. write behind caching developed, beta version should be up in Oct'10, production version in Nov'10, according to developer - Kent Overstreet).

'연구' 카테고리의 다른 글

ARM SMP Qualcomm roadmap  (0) 2016.09.07
Q: Why UBI does not use OOB area of NAND flashes?  (0) 2011.09.29
ext4  (0) 2011.03.06
mtd 자료 블로그  (0) 2010.12.06
FTLs for NANDSim  (0) 2010.12.01

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

ext4

연구 2011. 3. 6. 16:49

'연구' 카테고리의 다른 글

Q: Why UBI does not use OOB area of NAND flashes?  (0) 2011.09.29
ssd cache open source projects  (0) 2011.09.29
mtd 자료 블로그  (0) 2010.12.06
FTLs for NANDSim  (0) 2010.12.01
nftl module problem  (0) 2010.12.01

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

mtd 자료 블로그

연구 2010. 12. 6. 22:51
mtd 자료 찾다가  발견한 블로그.

좋은 글들이 많은 것 같다.료

http://blog.naver.com/wizard412?Redirect=Log&logNo=140039674844

'연구' 카테고리의 다른 글

ssd cache open source projects  (0) 2011.09.29
ext4  (0) 2011.03.06
FTLs for NANDSim  (0) 2010.12.01
nftl module problem  (0) 2010.12.01
MTD nandsim HOWTO for yaffs users  (0) 2010.09.30

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

FTLs for NANDSim

연구 2010. 12. 1. 17:28
On Sat, 2007-10-20 at 09:22 -0700, Sun Devil wrote:
> 1. Can we write an user level FTL and interface with NANDSim, so that,
> for the application, simulated flash appears to be a physical device,
> and I can format the same volume in what ever way possible?

Yes, I suppose you could. You could access the 'flash' through
the /dev/mtd0 character device, then provide a block device to the
kernel by using something like nbd. It's probably better to do it in the
kernel though.

> 2. Do you have any implementations of FTL at Kernel level?

Yes. We have the simplistic 'mtdblock' which doesn't really do any
translation at all, we have 'FTL' which works only on NOR flash, and we
have 'NFTL' and 'INFTL' for use on DiskOnChip devices. There is a helper
layer which is designed to make it relatively easy for you to provide
your own translation layer, without having to get too deeply involved in
how Linux block device drivers work.

> 3. Are there any NAND Flash simulators that you know of apart from NANDSim?

Well, there's a OneNAND sim too. And it's not that hard to use real NAND
flash either -- see Jörn's new 'Alauda' driver for certain USB devices.

--
dwmw2

출처 : http://lists.infradead.org/pipermail/linux-mtd/2007-October/019627.html

'연구' 카테고리의 다른 글

ext4  (0) 2011.03.06
mtd 자료 블로그  (0) 2010.12.06
nftl module problem  (0) 2010.12.01
MTD nandsim HOWTO for yaffs users  (0) 2010.09.30
하드디스크의 CHS와 LBA, 그리고 CHS <-> LBA Translator  (0) 2010.07.21

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

nftl module problem

연구 2010. 12. 1. 02:58
hello
this is my first time to post email to this list ,if I do not
follow the rules,I am sorry
recently,I tried the nftl module in MTD,I found it could not work
well, so I debug it , and found one place that I thought it was the
wrong place.

in the nftlcore.c file ,line 178 to 198 ,the function nftl_write
,as follows:

-- static int nftl_write(struct mtd_info *mtd, loff_t offs, size_t len,
-- size_t *retlen, uint8_t *buf, uint8_t *oob)
--{
--struct mtd_oob_ops ops;
--int res;

--ops.mode = MTD_OOB_PLACE;

--ops.ooboffs = offs;------------------------------------this place
,I thought i should be 0 ,or offs&(mtd->writesize-1), if the value is
offs, it will be over, and cannot work


--ops.ooblen = mtd->oobsize;
--ops.oobbuf = oob;
--ops.datbuf = buf;
--ops.len = len;

--res = mtd->write_oob(mtd, offs & ~(mtd->writesize - 1), &ops);
--*retlen = ops.retlen;
--return res;
--}

I debug it on nandsim (I made a little change on nftl to let it work
on nandsim,just change the nftl_add_mtd function, let it can
recongnize nandsim)
I change ops.ooboffs=offs into ops.oobffs=0, it can work ;


출처 : http://lists.infradead.org/pipermail/linux-mtd/2008-October/023219.html

anyone could give me an answer whether my change is right?

'연구' 카테고리의 다른 글

mtd 자료 블로그  (0) 2010.12.06
FTLs for NANDSim  (0) 2010.12.01
MTD nandsim HOWTO for yaffs users  (0) 2010.09.30
하드디스크의 CHS와 LBA, 그리고 CHS <-> LBA Translator  (0) 2010.07.21
libATA  (0) 2010.07.18

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,
 만약 yaffs를 테스트하기위해서 시뮬레이터로서 mtd nandsim device를 사용하길 원한다면 다음 단계를 따라야 한다.

 1) 반드시 최근 MTD tree를 가진 최근 2.6 kernel을 가져야한다.(만약 kernel의 MTD가 최신 MTD가 아니라면, 최근 MTD의 cvs version으로 부터 mtd patch 스크립트를 사용하면된다.)

2) nandsim driver와 mtd nand 지원을 가능하게하기 위해서 kernel을 설정한다. ".config" 파일에서 다음과 같이 수정한다.

CONFIG_MTD=m
CONFIG_MTD_CHAR=m
CONFIG_MTD_BLOCK=m
CONFIG_MTD_NAND=m
CONFIG_MTD_NAND_NANDSIM=m

만약 Moduel 형태를 원하지 않는다면 'm' 대신에 'y'로 설정하면 된다.

3) 보통 방법으로 module과 kernel을 make하고 install한다음 부팅한다.

4) nandsim을 사용하기 위해서는 비록 Kernel로 MTD가 설정 되었을 지라도 몇몇 MTD module들을 로드하는 것이 필요하다.

modprobe mtdblock
modprobe mtdchar
modprobe nandsim

5) nandsim device가 적절히 로드되었는지 검증한다.

cat /proc/mtd

다음과 비슷하게 나타난다.

dev:    size   erasesize  name
mtd0: 00800000 00002000 "NAND simulator partition"

6) 보통 방법으로 yaffs를 마운트한다.
예에서는 디렉토리 /mnt/nand로 마운트한다.

mount -t yaffs /dev/mtdblock0 /mnt/nand

Source
[1]http://www.aleph1.co.uk/pipermail/yaffs/2005q3/001356.html

출처 : http://imori.tistory.com/48

'연구' 카테고리의 다른 글

mtd 자료 블로그  (0) 2010.12.06
FTLs for NANDSim  (0) 2010.12.01
nftl module problem  (0) 2010.12.01
하드디스크의 CHS와 LBA, 그리고 CHS <-> LBA Translator  (0) 2010.07.21
libATA  (0) 2010.07.18

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,
하드디스크의 용량을 계산하는 3요소는 CHS라고 불리는데, CHS는 각각 실린더(Cylinder), 헤드(Head), 섹터(Sector)를 의미합니다.
그리고 하드디스크 내부에는 데이터를 기록하는 금속재질(혹은 유리로 만들어진 것도 있으며, 최근 프라스틱 플래터도 개발되긴 했다.)의 원판이 존재하며 이를 플래터(platter)라고 부릅니다.


이러한 플래터 상에서 데이터의 기록영역은 트랙과 섹터로 나뉘어지는데, 트랙은 운동장에서 트랙이라는 것이 운동장 주변을 두르고 있는 것처럼, 플래터의 축을 중심으로 하는 동심원들을 의미합니다. 그리고 가장 바깥쪽에 있는 것이 0번 트랙이고, 플래터의 중심으로 갈수록 트랙 번호는 증가합니다.

섹터는 트랙을 나누어 놓은 것으로써, 하나의 섹터는 위 그림에서 보이듯 자주색의 부채꼴 영역을 의미합니다. 섹터는 1번부터 시작되어 반시계 방향으로 갈수록 번호가 증가합니다. 그래서 플래터 상에서 데이터가 있는 구역은 섹터 번호와 트랙 번호를 지정함으로써 알 수 있게 되는 것입니다.

그러나 플래터도 앞면과 뒷면이 있으며, 또한 플래터 자체가 여러 장이기 때문에 데이터의 위치를 규정하기 위해서는 하나의 요소가 또 필요합니다. 그게 바로 헤드인데, 헤드는 플래터 표면의 정보를 읽어내고 정보를 기록하는 역할을 합니다. 하나의 헤드는 플래터의 한 면에서만 읽고 쓰는 것이 가능하며 따라서, 모든 면에 하나씩의 헤드가 필요하게 됩니다. 헤드의 순서는 맨 아래에 있는 것이 0번이고, 위로 올라갈수록 하나씩 증가합니다. 그래서 플래터가 2개일 경우에 헤드는 4개 혹은 3개(마지막 면은 사용하지 않을 경우)가 됩니다.

이렇게 여러 장의 플래터를 다루기 때문에 트랙의 개념을 확장해서 실린더라는 개념이 사용되는데, 실린더는 수직 방향으로 같은 위치에 있는 트랙들의 집합이며, 원통의 형태를 가진다고 보면 됩니다. 당연히 번호는 트랙과 같은 방법으로 매겨져서 가장 바깥쪽 실린더가 0번이고, 안쪽으로 들어갈수록 번호는 증가합니다.

그래서, 하드디스크 내에서 데이터의 위치를 지정하는데에는 데이터의 기록면(헤드 번호), 기록되어 있는 트랙(실린더 번호), 기록된 섹터(섹터 번호)라는 세 가지 정보가 필요하며, 이들 세 가지 정보의 조합으로써 하드디스크 드라이브의 용량이 결정됩니다. 한 개의 섹터에는 512byte가 들어가므로, 이를 바탕으로 CHS(Cylinder, Head, Sector) 수치를 알면 용량을 계산할 수 있습니다.

예를 들어서, 128개의 실린더와 8개의 헤드, 63개의 섹터를 가지는 하드디스크 드라이브라면 용량은 다음과 같이 계산할 수 있습니다.

128 × 8 × 63 x 512byte = 33,030,144byte = 32,256kB = 31.5MB

그러나 이러한 물리적 CHS 수치는 최근의 하드디스크 드라이브에서는 사실상 의미가 없어졌습니다. 기록밀도의 지속적인 증가로 인해서 트랙밀도 및 트랙의 선밀도 등이 급격하게 증가했을뿐더러 하드디스크 내부의 기록방법도 표준 레코딩 기법에서 존드-비트(zoned-bit) 레코딩으로 변경되었기 때문에 CHS 수치가 실제 하드디스크 드라이브의 CHS 수치와는 큰 차이를 보이기 때문입니다.

그렇다면 이제 LBA에 대해서 알아보겠습니다.
LBA는 Logical Block Area 또는 Linear Block Addressing의 약자로 CHS와 같이 하드 디스크의 물리적 구조를 생각하지 않고 각각의 섹터가 일렬로 연결되어 있다고 가정하는 구조입니다. 왜 CHS를 사용하다가 LBA로 넘어오게 되었는가 하면, 기존 CHS 방식을 계속 사용할 경우 사용자는 ATA 방식의 하드디스크를 시스템에 연결하고, 시스템의 바이오스는 CHS 어드레싱을 사용해서 하드디스크에 접근하게 되는데, 이러한 구조 상에서 용량제한 문제가 발생하였기 때문에 이를 회피하기 위한 수단으로 새롭게 고안한 개념이기 때문입니다.

ATA 규격상에서는 실린더를 65,536개까지 지원할 수 있지만 CHS 바이오스는 1024개의 바이오스만을 인식할 수 있었습니다. 그 결과, 사용할 수 있는 실린더의 수는 1024개로 제한되어 버렸고, 마찬가지로 헤드와 섹터에 있어서도 각각 16개와 63개로 제한이 걸리게 되었습니다. 결국 하드디스크가 가질 수 있었던 한계는 실린더 1024개, 헤드 16개, 섹터 63개가 되기 때문에 이를 바탕으로 용량을 계산해보면 528MB가 됩니다.

1024 × 16 × 63 x 512byte = 528,432,304byte

즉, 여기서 약 528MB라는 용량제한이 생겨버린 것입니다. 이를 돌파하기 위해서 'CHS 변수 전환(CHS parameter translation)'이라는 방법이 사용되었는데, 이는 하드디스크의 물리적인 CHS 수치를 무시하고 이것을 시스템에서 허용되는 수치로 변경하는 방법을 말합니다.

그러나 이러한 CHS 변수전환을 사용한다고 해도 결국은 CHS 바이오스 상에서 지원할 수 있는 전체 실린더/헤드/섹터 수까지만 지원할 수 있다는 문제가 있었고, CHS 바이오스는 실린더, 헤드, 섹터를 최대 1024개, 256개, 63개까지 사용할 수 있었는데, 이것을 계산하면 바로 8.4GB가 됩니다.

1024 × 256 × 63 × 512byte = 8,455,716,864byte

이러한 장벽을 넘기 위해서 만들어진 것이 LBA 인터페이스입니다. LBA 인터페이스가 적용되면 바이오스는 기존의 CHS 방식 대신 LBA 방식을 사용해서 하드디스크 드라이브에 접근합니다. LBA는 그 이름 그대로, 물리적, 혹은 논리적(변수전환된) CHS 수치를 무시하고 하드디스크 전체를 하나의 영역으로 보면서 이 안에서 일련의 주소를 가지는 블록을 만듭니다. 그리고 이러한 블록의 주소를 지정하기 위한 정보로써 28bit를 사용합니다.
 

그 결과, 본래 바이오스가 가지고 있는 CHS 한계와는 상관없이 ATA 규격이 가지는 한계까지를 모두 사용할 수 있게 되었습니다. 28bit가 사용된 것은 ATA 규격에서 정의하고 있는 CHS 수치에 28bit의 정보가 사용되기 때문입니다. 그리고 섹터의 수는 0이 아닌 1부터 시작되기 때문에 256개가 아닌 255개가 되며, 이와 호환성을 유지하기 위해서 LBA 방식의 어드레싱에서 사용할 수 있는 주소의 총 개수는 다음과 같이 정해집니다.

216 × 24 × (28 - 1) = 220 × (28 - 1) = 267,386,880


따라서 LBA 방식이 528MB밖에 사용할 수 없던 기존의 CHS 방식의 한계를 극복하게 된 것입니다.


위 하드디스크는 사고 당시 룸메이트 형이 실수로 파티션을 날려 버린 웨스턴디지털의 캐비어 그린 1TB 하드디스크입니다(사진은 구글 검색).
여기에서 주목하실 점은 LBA가 1953525168이라고 표시된 부분입니다.

파티션 복구 당시에는 복구 장면을 캡쳐할 만한 정신적 여유가 없어서 비록 사진은 없지만 TeskDisk에서 CHS는 121,601으로 표시되었습니다.
그리고 위에서 한참동안 언급한 것과 같이 CHS와 LBA는 환산이 가능하다는 점을 토대로 이것이 실제로 1TB 전체에 해당하는가에 대한 의문을 풀기 위해서는
어떻게 해야하는가를 고민하게 되었습니다.

그러다 찾게 된 프로그램! "CHS <-> LBA Translator"


간단한 엑셀의 함수를 통해 만들어져 있지만, 사실 환산과정이 복잡하지는 않아 엑셀로도 충분히 구현할 수 있나봅니다.


시트보호가 설정되어 있어서 셀 크기보다 나타낼 숫자의 길이가 더 길면 숫자가 다 표시가 되지 않고 ############ 으로 나옵니다. 따라서 시트보호를 해제해 주시고,


Start Addr LBA와 End Addr LBA에 1부터 하드디스크 표면에 쓰여져 있는 LBA까지를 입력하면 왼쪽의 eCyl에 실린더의 수가 나옵니다.
121,601이라는 실린더 수는 TeskDisk에서 분석한 실린더의 수와 일치합니다.

정말 말이 장황하게 길어졌습니다.
오늘의 결론은 결국 CHS와 LBA를 서로 변환해주는 이 엑셀 프로그램의 소개에 목적이 있었는데 말이죠.

그런데...CHS가 거의 의미가 없게 된 지금, 이 글은 대체 무슨 소용이 있을까요? 흑흑...ㅠ_ㅠ


출처 : http://thehermes.kr/entry/%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC%EC%9D%98-CHS%EC%99%80-LBA-%EA%B7%B8%EB%A6%AC%EA%B3%A0-CHS-LBA-Translator

'연구' 카테고리의 다른 글

mtd 자료 블로그  (0) 2010.12.06
FTLs for NANDSim  (0) 2010.12.01
nftl module problem  (0) 2010.12.01
MTD nandsim HOWTO for yaffs users  (0) 2010.09.30
libATA  (0) 2010.07.18

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

libATA

연구 2010. 7. 18. 17:05

'연구' 카테고리의 다른 글

mtd 자료 블로그  (0) 2010.12.06
FTLs for NANDSim  (0) 2010.12.01
nftl module problem  (0) 2010.12.01
MTD nandsim HOWTO for yaffs users  (0) 2010.09.30
하드디스크의 CHS와 LBA, 그리고 CHS <-> LBA Translator  (0) 2010.07.21

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,